Every message, call, photo, voice note and status in UIMessage is end-to-end encrypted: locked on your device with keys that only the devices in the conversation hold. Our servers carry the locked copies and can't open them. Here is how it works, and what it doesn't hide.
Every device has its own keys
When you sign up, your phone creates an account identity key that never leaves it. Every device you use — your phone, your Mac, an iPad, a browser — makes keys of its own, and your phone vouches for each one by signing your account's list of devices. A device you link makes its own keys, and the phone adds it to the signed list.
Keys that keep changing
Every pair of devices talks through its own session. A session starts with PQXDH, a key agreement that combines X25519 with ML-KEM-768 so that it holds up even against a future quantum computer, and continues with the Double Ratchet: each message gets a fresh key, and old keys are thrown away. Someone who stole a device's keys today couldn't read what it received before, and loses access again after the next ratchet step, as long as they don't stay on the device.
Groups, media, statuses and calls
- Groups use sender keys. A member's device hands its key only to the members in the group's own membership record, a chain of changes each signed by the device that made it, so our server can't slip a reader in.
- Photos, videos, voice notes and files are each locked with a fresh key, which travels inside the encrypted message.
- Statuses are locked the same way and signed by their owner's device, so nobody can forge or change one.
- Calls get fresh keys through the same encrypted sessions, and every audio, video and screen-share frame is encrypted before it leaves your device.
- When you link a Mac, an iPad or a browser, your phone sends it your chat history, encrypted, and our server deletes that copy within 24 hours.
Checking who you're talking to
Each chat has a safety number made from both accounts' identity keys. Compare it with your contact in person — open the chat, tap their name, then Encryption — and if the numbers match, nobody is in the middle. When a contact's keys change, the chat says so, and a contact you verified is paused until you check again.
What our servers still see
Our servers keep each encrypted message only until the devices it was sent to have saved it, then delete it. To do their job they still see who sends to whom and when, the size of each message (padded in steps of 160 bytes), your profile, which of your contacts use UIMessage, your groups, and your devices. Our Privacy Policy lists all of it, and how long each is kept.
What encryption can't protect
- The first time you talk to someone, your app trusts the keys our server hands it. Comparing safety numbers is how you check them.
- Anyone holding your unlocked device can read what's on it. Lock your device, and lock the chats that matter.
- UIMessage Web runs code our server sends each time the page loads. Each browser has its own keys, so you can unlink one at any time from your phone.
- Group names, photos and member lists aren't end-to-end encrypted.
- The protocol is our own code, built on published designs. It hasn't had an independent audit yet.
Security claims should describe the protection that is built, and what it still trusts — no more and no less.


