Private messaging over a real mix network. Hybrid post-quantum keys, Sphinx routing, and a server that never sees your messages. We are still testing.
That key does not match.
Every message is encrypted in your browser with hybrid post-quantum keys and routed through layered mix nodes. The server never sees content, and it cannot tell a real message from cover traffic.
Constant size packets, Poisson delays, cover traffic. Each node only ever learns its own hop.
A messenger built so that the operator cannot help an attacker, even if they wanted to.
Hybrid key exchange (X25519 with ML-KEM-768) and hybrid signatures (Ed25519 with ML-DSA-65). Harvest now, decrypt later does not work here.
Not just the content. Layered mix nodes, uniform packet sizes and optional cover traffic hide who talks to whom, and when.
The server holds opaque onion packets, a mailbox id, public contact cards, a password hash and a client encrypted contacts blob. Nothing else.
Messages wait in an encrypted mailbox until your device reconnects. Multi device fan out included, keys never leave the device that made them.
1:1 and group chats, encrypted attachments, auto-deleting images, replies, reactions, plus voice and video calls with signalling carried end to end.
A PWA for desktop, Android and iOS home screens, plus native desktop and Android builds. Or route over the public Nym mixnet instead of the built-in one.
The cryptographic primitives come from the audited @noble libraries, but the way they are composed here (the Sphinx layer, the packet and mailbox format, the account and multi device model) has not had an independent security audit. This instance is in private testing behind an access password. Please do not rely on it to protect real secrets yet. Found a problem? Report it privately.
Three things happen before a message ever reaches the network.
There is a longer, animated explainer with no jargon at /info.html.
The whole stack is AGPL-3.0 and ships as compose services: gateway, mix nodes, providers and PostgreSQL.
# requires docker and docker compose git clone https://github.com/OneNobleSoul/noblechat cd noblechat cp .env.example .env # set a strong value for every secret docker compose up -d --build
The gateway listens on loopback only. Put Caddy or nginx in front of it for TLS. Full notes are in the README.