Here is the technical detail behind how we protect your conversation history. No marketing. No trust-me promises. Just math and open source code.
Note: your saved conversation history is encrypted on your device and stored as ciphertext. Live prompts you send for a model to answer travel over TLS to run inference — these are not retained for training.
| Property | Value |
|---|---|
| Encryption | AES-256-GCM (authenticated encryption) |
| Key Derivation | PBKDF2 — 600,000 iterations, SHA-256 |
| Initialization Vector | 12 bytes, cryptographically random, unique per message |
| Salt | 16 bytes, cryptographically random, unique per user |
| Key Storage | In-memory only (JavaScript variable) |
| Key Persistence | None. Cleared on logout or tab close |
| Dependencies | Zero. Web Crypto API only |
| Ciphertext Format | Base64( IV || ciphertext || GCM-auth-tag ) |
Every line of our encryption is public. Read it, audit it, run the tests.
View on GitHub →Your saved history is stored as opaque encrypted blobs. We cannot decrypt them — and nobody can without your password.
See database proof →Open your browser DevTools and watch the network tab: saved conversation history syncs as encrypted blobs. Live prompts go over TLS for inference and are not retained for training.
Watch demo →Zero data requests received. Zero data handed over. Even if compelled, our stored history is ciphertext.
Transparency report →Third-party audit planned for Q3 2026. Results will be published in full.
Planned Q3 2026 →Our encryption code is open source. Read every line. Run the tests. Then decide if you trust us.