Your app
Holds your keys, encrypts everything you send and decrypts what you receive. Your message history lives here and nowhere else.
Knows: Everything you send and receive: it's yours.
How it works
A tour of the architecture and the protocol in plain words. Each chapter starts with the idea; open “Under the hood” for the technical details.
Chapter 1
Crocodile splits the work so that the parts that see your words are the people you're talking to, and the parts run by strangers never do.
Holds your keys, encrypts everything you send and decrypts what you receive. Your message history lives here and nowhere else.
Knows: Everything you send and receive: it's yours.
In each voice room or space, one member's app is elected to pass the encrypted traffic on to the others. It's a member like any other.
Knows: Members' IP addresses and who's speaking, never what's said.
Volunteer-run switchboards: they keep profiles and spaces, say who's online and pick hosts. They link up into one network.
Knows: Profiles, memberships and who's online, never what's said.
A phone book of coordination servers, so new apps know where to start. It knows nothing about people.
Knows: Only the list of servers.
Chapter 2
When you install Crocodile, your app makes a random secret, 32 bytes long, on your computer. From it come two keys: one to sign what you publish and one to receive encrypted messages. Your user ID is a fingerprint of the signing key.
Because the ID is calculated from the key, a server can't swap in a different key and pretend to be you. There's no password to steal and no reset that a support desk could be tricked into. The secret is shown to you once as a recovery key, and stays on your devices, encrypted with your system's keychain.
K7QF-M2XA-…-9PD4Ed25519X25519 + ML-KEM-768hash(🔑) → 4gq7…xk2mChapter 3
Your app downloads the list of coordination servers from the directory, measures how long each takes to answer, and connects to the quickest. The runner-up waits on standby, so if your server goes away your app switches over immediately.
Before anything else, the server proves who it is and your app and the server agree on keys for that connection. From then on even the metadata they exchange is encrypted, on top of HTTPS, so it works safely on a home server too.
Chapter 4
Your profile, the spaces you create, their invites and who's a member are small records signed by whoever wrote them. Servers store and share them, and every server and every app checks the signatures. A server can refuse to pass a record on, but it can't change one or make one up.
Coordination servers find each other and form a mesh. Each record is kept by a few servers chosen by a hash, and they copy changes to each other, so the network keeps working when any one server goes down.
profile:4gq7…xk2mChapter 5
When people join a voice room or open a space, the coordination server looks at everyone's connection (how open their network is, their upload speed, their computer, whether they're on battery) and elects the best-placed member as host. The next best is the backup.
Everyone connects to the host's app, which passes on the encrypted audio. To keep things light, it forwards the loudest few speakers to each listener. It never has the audio in the clear on its way through: it just moves sealed packets around.
If the host leaves or becomes unreachable, the backup takes over and everyone reconnects to it, usually before anyone notices.
Everyone connects to the host.Host gone: the backup takes over.
Chapter 6
Everything is encrypted on your device before it leaves, and only the people in the conversation have the keys. Here is what happens to a message on its way out.
Your app signs the message so others can prove it came from you, pads it so its length gives nothing away, encrypts it with a key only the conversation's members have, and sends it through a connection that is itself encrypted. Anyone in between sees only scrambled bytes of a standard size.
Keys are exchanged with a hybrid of X25519, a proven classic method, and ML-KEM-768, the new post-quantum standard. An attacker would have to break both. That matters because someone could record encrypted traffic today and wait for a quantum computer to decrypt it later.
DeletedThis messageNext ones
Each member's key turns like a ratchet: after every message it's replaced by the next one in a chain that only goes forward, and the old one is deleted. Someone who steals a key today can't read yesterday's messages. Every 30 minutes, and whenever someone leaves, everyone starts a fresh chain from new random keys, so a stolen key stops working soon too.
Your voice is encrypted in small frames, about fifty a second, right after the microphone and before it reaches the network. A frame that can't be encrypted is dropped, never sent in the clear. Voice uses a constant bitrate, so the size of the packets doesn't reveal what you're saying.
Chapter 7
Some networks, such as strict office or university firewalls, block direct connections between computers. Crocodile tells you when that happens, and you can choose to let a coordination server relay your traffic.
The relay passes on packets that are already end-to-end encrypted: it sees their size and timing, but not what's inside. Permission lasts an hour at a time and is renewed only while it's still needed.
Chapter 8
No server keeps your history, so Crocodile's apps hand messages to each other. Here's what happens when you write to someone who's offline.
The message goes into your app's outbox and shows a small clock.
As soon as both of you are online, your app hands it over, sealed to their device.
Their app confirms receipt and the clock disappears. Members who missed messages in a space catch up from the host and the backup.
Optionally, a server holds direct messages for up to 7 days, sealed per device so it can't read them, and deletes them once delivered.
Chapter 9
Your new computer shows a short code. Type it into a computer where you're already signed in, then check that both screens show the same six-digit security code. If they match, your account is sent across, encrypted, and the new device is in.
The security code covers the keys of both devices, so if anyone tried to swap one in between, the codes would differ and you'd know.
Codes match: safe to link
The terms you'll meet in security write-ups, in a sentence or two each.