Security by Design
End-to-end encrypted. Zero-knowledge. Built to keep your data yours.
ChaCha20-Poly1305 · X25519 key exchange · Anonymized logging · We never hold your keys
End-to-End Encrypted
Every message, call, and file is encrypted before it leaves your device. ChaCha20-Poly1305 — the same cipher used by WireGuard and Cloudflare. RFC 8439 compliant.
Zero-Knowledge
Even on our cloud-hosted servers, we cannot read your data. You hold the encryption keys. We hold encrypted blobs. Logging is anonymized — we see operations, never content.
Architecturally Private
Self-hosted means we're not in the loop. There's no server to subpoena, no database to breach. Your data literally doesn't exist outside your network.
The technical details
| Component | Implementation |
|---|---|
| Symmetric cipher | ChaCha20-Poly1305 (AEAD) |
| Key exchange | X25519 Diffie-Hellman |
| Key rotation | Forward secrecy via session key rotation |
| Transport | Encrypted UDP (LiteNetLib) + TLS for HTTP |
| At rest (cloud) | Encrypted blob storage, client-side keys |
| Compliance | RFC 8439 (ChaCha20-Poly1305) |
ChaCha20-Poly1305 was designed by Daniel Bernstein as a high-performance alternative to AES. It's the default cipher in WireGuard VPN, used by Google for HTTPS, and adopted by Cloudflare for edge encryption. It's particularly well-suited to software implementations where hardware AES acceleration isn't available — which is exactly the case for a native desktop application.
How zero-knowledge works
Your Device → [Encrypt with YOUR key] → Encrypted Blob → Our Server → [Decrypt with YOUR key] → Their Device
↑ We see this. Opaque. We cannot decrypt it.
On our cloud-hosted Enterprise tier, messages and files are encrypted on your device before they ever reach our servers. We store encrypted blobs. The decryption keys are generated on your device and never transmitted to us. Even with direct database access, we see gibberish.
Audit logs are anonymized. We log that “a user sent a message in a channel” — we don't log who, what, or the content. Enough for operational monitoring, not enough to reconstruct conversations.
Self-hosted: we're not even in the picture
When you self-host TheChatApp, there is no connection to our servers. No telemetry, no analytics, no phone-home. Data stays on your LAN. Updates are downloaded manually. No account means no identity linkage — we don't know you exist.
This isn't a privacy policy. It's an architectural fact. We can't access your data because there's no mechanism for us to do so.
What we protect against — and what we don't
We protect against
- Network eavesdropping (encrypted transport)
- Server-side data breach (zero-knowledge cloud)
- Man-in-the-middle attacks (X25519 key exchange)
- Insider access at TheChatApp (we can't read data)
- Metadata correlation (anonymized logging)
We don't protect against
- Compromised endpoints (if your device is hacked, encryption can't help)
- Lost encryption keys (we can't recover data we can't decrypt)
- Screenshots or screen recording by participants
- Physical access to a self-hosted server
We believe honesty builds more trust than overclaiming. Every security product has limits. We'd rather tell you ours than pretend they don't exist.
Compliance, simplified
Self-hosted
You are the data controller. We are not a data processor because we never process your data. No DPA needed with us.
Cloud-hosted Enterprise
We store encrypted blobs. Under GDPR, encrypted data where the processor doesn't hold decryption keys has significantly reduced compliance obligations. We provide a DPA for Enterprise customers on request.
Both tiers
No user tracking. No behavioral analytics. No advertising data. No third-party data sharing. We make money from software licenses, not from your information.