VoidChat is an ephemeral, accountless, post-quantum hybrid encrypted chat. Nothing leaves your device unencrypted.
Cryptography
• ML-KEM-768 (FIPS 203) + X25519 hybrid — per-peer root key
• Double Ratchet — DH-ratchet + per-msg KDF chain (forward secrecy + break-in recovery)
• Argon2id — room key derivation (Fast/Balanced/Paranoid)
• XChaCha20-Poly1305 — authenticated encryption
• Fixed-bucket padding — message length privacy (512 → 65536 B)
• BIP-0039 — 2048-word seed phrase, checksum-validated
• 60-digit Safety Number — Signal-style OOB peer verification
• .voidseed vault — Argon2id + AES-GCM seed export/import
• AES-GCM — localStorage / sessionStorage wrap
• No CDN — every dependency bundled locally
Transport (fallback chain)
1. WebSocket / Nostr relays — default, no IP leak
2. HTTP long-poll — restrictive network fallback
3. Yjs CRDT — offline-tolerant peer sync
4. Manual / QR — air-gapped exchange
✚ WebRTC DataChannel — opt-in (STUN leaks IP)
✚ Cloudflare Worker proxy — opt-in, community nodes
Identity (3 modes)
🔴 Ghost — ephemeral keys, no persistence, no WebRTC
🟡 VoidID — 12-word seed → deterministic keypair
🟢 Named — VoidID + alias (encrypted locally)
Deployment
• 100% static — Cloudflare Pages, GitHub Pages, any static host
• Zero servers. Zero cost. Zero accounts.
• Optional community Worker relays (free tier, 100k req/day)
Honest caveats
Nostr event signatures use secp256k1 (protocol-mandated). Message content is PQ-protected via the app-level hybrid, even over Nostr. See SECURITY.md for the full threat model.
Post-quantum, zero-knowledge, free forever