What is Ricochet?
Peer-to-peer messaging has a basic problem: the peer you are writing to is often offline. Ricochet solves it the way email did. Each peer names the store-and-forward servers it trusts, with priorities like MX records. A sender hands a message to one of those servers, and the server holds it until the recipient comes online to collect it.
Ricochet servers are ordinary libp2p peers. They run over UDX, Noise and Yamux, find each other through GossipSub announcements, and relay for clients behind NAT.
How a server is organised
Section titled “How a server is organised”The server is split into agents, named after their email counterparts.
| Agent | Protocol | Role |
|---|---|---|
| MSA, mail submission | /sf-network/submit/1.0.0 |
Accepts messages from senders |
| MTA, mail transfer | internal | Routes and validates them |
| MDA, mail delivery | internal | Stores them and pushes notifications |
| MAA, mail access | /sf-network/access/1.0.0 |
Retrieval, IMAP-style flags, expunge |
| MMA, mailbox management | /sf-network/admin/1.0.0 |
Mailbox lifecycle, ACLs, capacity |
| SDA / SFA / SCA | /ricochet/store/{doc,feed,collection}/1.0.0 |
Documents, append-only feeds and keyed collections |
Security in one paragraph
Section titled “Security in one paragraph”Every connection is authenticated with Noise, and every access check uses the peer identity the connection proved, never an identity the request claims. Message payloads can be end-to-end encrypted with NaCl box, using keys derived from the peers’ Ed25519 identities, so the server stores ciphertext it cannot open. The envelope (sender, recipient, folder, timestamps) stays visible to the server. The scheme has no forward secrecy by design. Applications that need it run a ratchet such as Signal on top.