Axoltl never reads, stores, or processes your conversations. The relay is cryptographically blind. The encryption is end-to-end. Here is exactly how.
If the relay server is fully compromised, the attacker receives only opaque AES-256-GCM ciphertext. No keys are stored server-side. The relay has zero ability to decrypt payloads — mathematically, not just by policy.
Noise Protocol XX provides mutual authentication. Both devices verify Ed25519 identities before any data is exchanged. Key agreement uses X25519 ephemeral keys — unique per session, non-replayable.
Each session payload includes a cryptographic nonce. The relay enforces a 5-minute TTL and deletes on first retrieval. Replaying a delivered payload returns 404 — the ciphertext no longer exists.
Every BLE ANNOUNCE beacon is signed with Ed25519. The receiver validates the signature before initiating any connection. An unsigned or malformed beacon is silently rejected — no connection is made.
Conversation history, system prompts, and provider metadata serialized as compact JSON. TF-IDF 3-pass extraction compresses to under 3,000 tokens. LZ4 compression applied before encryption. No raw message content traverses the relay — only the compressed, encrypted bundle.
AES-256-GCM with a 96-bit nonce derived from the Noise session. Authenticated encryption — any tampering invalidates the entire payload before decryption is attempted. Session key is ephemeral: derived fresh from X25519 ECDH, never stored.
Noise_XX_25519_ChaChaPoly_SHA256 — the same construction used by WireGuard. Mutual authentication: both parties prove Ed25519 identity before data flows. Ephemeral X25519 keys provide perfect forward secrecy. Every session is cryptographically independent.
HTTPS/TLS 1.3 to the Cloudflare Worker relay for cross-device transfers. BLE GATT with 500-byte fragmentation for offline phone-to-phone transfers. Both transports carry pre-encrypted Noise payloads — transport-layer encryption is a redundant second wrapper.
Every component is open source. Read the code, run the audit, deploy your own relay. Transparency is the architecture, not an afterthought.
Full source code on GitHub — extension, Flutter app, and Cloudflare Worker. All MIT licensed. No obfuscation, no minification of logic, no hidden layers.
No custom cryptographic primitives. Standard Noise Protocol libraries, audited X25519 and AES-256-GCM implementations. Inspect the dependency tree — every transitive dependency is listed.
Fork the worker, set your own Cloudflare KV binding, deploy in under five minutes. The relay is 80 lines of JavaScript. Free tier handles 100,000 requests per day. Full sovereignty over your infrastructure.