the trust problem
Your messages are encrypted.
Everything else isn’t.
End-to-end encryption protects what you say. It doesn’t protect who you say it to, when, how often, or how long the conversation lasted. The rest of the picture stays in plain sight on a server.
even with end-to-end encryption
They can’t read the messages.
They don’t need to.
Encryption hides bodies. The routing log records who, when, how often, and how long. That log is enough to reconstruct most of a life.
the operator’s view
The server can end
your account.
The company that runs the server can disable your account at will. Your conversations — every one — stop being yours. There is no appeal you can file from inside the app.
what runs on the server
You trust the binaries the
server runs. You can’t see them.
Whatever runs on the server, runs on you. The source isn’t bound to the runtime; the audits aren’t reproducible. Each deploy is a renewed act of faith.
trust required, today
You already trust this many
parties. By default.
Encryption was supposed to remove some of these. It didn’t.
the bridge
How the math
actually replaces the trust.
Three engineering choices do the work. None of them are exotic. All of them are running in production cryptography somewhere already.
A public registry without public identities.
A sender proves “I am a member of this group” on chain without revealing which member. The Soroban contract verifies the proof; everyone else — relayer, validators, passive observers — only sees that some member acted.
It does not hide that an action happened, or which group it happened in.
You transact without a funded account.
A relayer submits your signed Stellar transaction and pays the fee. There is no bank, no on-ramp, no funded account tying you to a real-world identity.
The relayer sees ciphertext and connection metadata. It cannot read messages, impersonate you, or rewrite group state — and you can switch it.
No account anyone can disable.
Twelve BIP-39 words generated on your phone. Keys, contacts, and history live there. There is no “Onym account” for anyone to suspend, hand over, or delete.
If your phone is compromised, none of this helps. Endpoints are still endpoints.
onym’s answer
Remove the operator.
Make the shared state public.
No company in the loop. No operator console with kill-switch authority. Every layer open source and reproducible from source — no opaque server-side logic in the trust path. Group state lives on a public smart contract; messages travel over relays you can swap; identity stays on your device.
Onym defends against an operator who would disable your account, a passive on-chain observer, and a malicious group member exceeding their role. It does not defend against a global passive surveiller, a compromised device, or a screenshot. The full list is the threat model.