Install the app
- Android: Android 7.0 or newer. Install from Google Play. Each time you open the app it checks Google Play for a newer version and installs it, so you’re always on the latest fixes.
- iPhone: iOS 16 or newer. The App Store release is coming soon.
Both people need the app. Android and iPhone users can message each other.
First launch
Open the app while you’re online. It gets a random ID from our server and shows it under My UUID. You don’t need to remember it. You’ll only need it if you ever ask us to delete your data.
There’s no sign-up, password or phone number. The app asks for camera access the first time you scan a code.
Add a contact
Meet the other person. One of you shows a code, the other scans it. It doesn’t matter who does which.
The person showing the code
- Tap Show QR on iPhone, or Add contact (show QR) on Android.
- Hold your screen up. It says “Waiting for the other person to scan and respond…”. Keep it open.
- Within a few seconds of their scan, the new contact appears in your list. Tap Done.
The person scanning
- Tap Scan QR on iPhone, or Scan QR to add on Android.
- Allow camera access if asked, then point the camera at their code.
- The contact is added to your list straight away.
Each code works once and is made for one person. To add someone else, show a new code.
Name your contacts
New contacts show up as a long ID. Give them a name you’ll recognise:
- Android: tap Rename on the contact, type a name and tap Save.
- iPhone: swipe left on the contact, tap Rename, type a name and tap Save.
Names are stored only on your phone. Your contact never sees what you call them, and neither do we. Leave the field empty to go back to the ID.
Send messages
Tap a contact to open the chat, type in the Message… field and tap Send. The message is sealed on your phone before it leaves.
Your contact receives it the next time their app is open; while it’s open, it checks every few seconds. Once their phone has it, the copy on our server is deleted.
Send photos and files
- Android: in a chat, tap Image for a photo or File for any document.
- iPhone: tap the photo icon to pick a picture, or the paperclip to pick a file.
Files can be up to 25 MB. They’re encrypted on your phone first. Our server only ever holds sealed bytes, and the file name and type travel inside the sealed message.
Received photos and files are decrypted and saved in the app’s private storage on your phone.
New or lost phone
Your keys live only on your phone, and there’s no cloud backup. That’s deliberate, but it means:
- Contacts and message history don’t move to a new phone.
- We can’t restore them for you. We never had the keys.
- On a new phone, install the app and add each contact again by scanning.
If your phone is lost or stolen, tell your contacts in person or by another channel, and add them again from your new phone. Ask them to stop using the old contact entry.
Troubleshooting
“Camera permission required”
Open your phone’s Settings, find Secure Messenger, allow Camera, then try scanning again.
The contact doesn’t appear after scanning
- Both phones need an internet connection.
- The person showing the code must keep the code screen open until the contact appears.
- If the code was already used, show a new one.
Messages aren’t arriving
- Your contact’s app has to be open to collect messages. Push notifications aren’t available yet.
- Check that both phones are online. Undelivered messages wait on the server and arrive once the app opens.
A file won’t send
Files larger than 25 MB are rejected. Send a smaller file or split it up.
Still stuck?
Write to us at [support email]. Never send us screenshots of your messages or keys. We don’t need them.
Staying safe
- Scan in person. Don’t share your code as a picture. Whoever scans it first becomes the contact.
- Lock your phone. Encryption protects messages on their way and on our server. On your phone, your screen lock protects them.
- Keep the app updated. Updates carry security fixes.
- Be wary of impostors. We will never message you inside the app or ask for your keys.
How the encryption works
For people who want the details. Android and iPhone produce identical bytes, so they can talk to each other.
- Per-contact keys. For every contact, each phone generates a fresh X25519 key pair. Private keys stay in the phone’s protected storage (Android Keystore-backed encrypted storage, iOS Keychain).
- Key exchange. Public keys are swapped through the QR code and an invite on our server that can be used once.
- Shared key. Each phone computes the X25519 shared secret and derives a 32-byte key with HKDF-SHA256. The salt is both public keys, sorted and concatenated; the info string is
aralel-msg-v1. - Sealing. Each message, and each photo or file, is encrypted with ChaCha20-Poly1305 (RFC 8439) and a fresh random 12-byte nonce. Tampering is detected and the message is rejected.
What this doesn’t hide
We’d rather be clear about the limits:
- Metadata. Our server sees which random IDs exchange messages, when, and how large they are. It doesn’t know who is behind an ID, but network connections carry IP addresses.
- Forward secrecy. Not yet. A contact pair uses one long-lived key, so someone who extracts it from an unlocked phone could decrypt captured past messages. Per-message keys are planned.
- Notifications. Not available yet, so nothing passes through Apple or Google push services.