Most messengers make you register with a phone number or an email. It feels like a formality, but it is actually the foundation of the whole system: your account is tied to something you don't fully control.
A phone number is not yours in any real sense. Your carrier can take it away if you stop paying. A number that was deactivated gets recycled and handed to a stranger after a waiting period — and on several services, that stranger can then attempt to recover accounts linked to the old number. And there is SIM swapping: an attacker convinces (or bribes) a carrier employee to move your number to their SIM card. Once they hold your number, they hold the recovery path to everything built on it.
There's also a quieter issue: metadata. Even in end-to-end encrypted systems, the phone number itself is a permanent identifier that links you to everyone you talk to, across every service where you used the same number. The content can be protected while the graph of who-knows-whom stays exposed.
We didn't want MurMur to inherit any of this. So we removed registration entirely.
When you first open MurMur — installable as a PWA on iPhone and Android, without the App Store or Google Play — there is no sign-up form. No phone, no email, no "please verify you're human." Instead, the app generates a cryptographic key pair. Your public part is your identity, an npub. People find you by that string, not by who your carrier thinks you are.
What does this change in practice?
Messages and calls are end-to-end encrypted. There are push notifications, so the app behaves like a normal messenger, but the server side was built around the assumption that it cannot read anything you send.
MurMur uses a relay server written in Rust. Conceptually, it works like a post office with sealed envelopes: it accepts an encrypted blob from you, delivers it to the recipient's queue, holds it for a limited time if they're offline, then it's gone.
The key property is structural, not a promise. The relay never receives plaintext and never holds your private key. The encryption happens in your browser before anything leaves the device, and decryption happens in the recipient's browser. The Rust code handles routing, storage of ciphertext, and expiry — operations that don't require understanding the content. We chose Rust partly because its memory-safety guarantees reduce the class of bugs that turn into security incidents.
What the relay can still see: that some encrypted traffic exists, roughly when, between which ephemeral identifiers, and its size. We won't pretend metadata disappears completely — no networked service achieves that — but the relay holds far less than a traditional server, and nothing readable.
This trade-off has a real price, and we'd rather state it plainly than bury it. There is no SMS recovery. There is no password reset. Your account is the key; if you lose the key, the account is gone. Nobody — including us — can restore it. That's the same property that protects you from SIM swap, viewed from the other side: if recovery were possible through a phone number, the number would become the weak point again.
So treat your key like a house key, not like a password you can reset. Back it up somewhere you control.
MurMur is a young project with a small team and a small audience. There has been no independent security audit. We publish the source code on GitHub so anyone can inspect it, but public code without an audit is not proof of security — it's an invitation to check. Two practical limitations follow from the PWA approach: the app depends on the browser you run it in, and browser-based cryptography is only as sound as the browser itself. If you need a messenger with years of audits and a large security team behind it, use one of the established options. We think there's room for a different model, and we'd rather be honest about where we are on that path.
Try MurMur at murmurchat.org — no phone number required, and that's the point.