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

ComponentImplementation
Symmetric cipherChaCha20-Poly1305 (AEAD)
Key exchangeX25519 Diffie-Hellman
Key rotationForward secrecy via session key rotation
TransportEncrypted UDP (LiteNetLib) + TLS for HTTP
At rest (cloud)Encrypted blob storage, client-side keys
ComplianceRFC 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.

Questions about our security?