early access · source not yet published

the messenger that can't read you

Watch the text behind this sentence turn into ciphertext on its own — then move your cursor across it and drive the wavefront yourself. Kalvien generates your keys on your device and never sees them, so we can deliver your words and never open them.

The actual app

Send a real
message.

This isn't a screenshot or a video — the composer works. Type something and watch it get sealed on this device before it moves: the byte count under your bubble is a real ciphertext length and those first three bytes are really yours. It is a demonstration, not the shipped client — the app is Android and encrypts with libsodium; your browser only offers its own cipher suite. Same guarantee, different primitive, and we say which is which further down.

Mara end-to-end encrypted
0 of 5 tried

 

In the app today

  • End-to-end encrypted messageslibsodium crypto_box — X25519 key agreement, XSalsa20-Poly1305 cipher. Your private key is generated on the device and stored in Keystore-backed storage.
  • Reply threadsQuote anything, tap to jump back to it
  • Encrypted photo & videoEncrypted on the device, uploaded as ciphertext, decrypted only by the recipient
  • Disappearing messagesA sweeper deletes the row on the server every 60 seconds — not a client-side hide
  • ReactionsThey work — but the emoji is stored in the clear today. Encrypting it is on the next list, and we're not going to call it private until it is.
  • Encrypted group chatsThe group key is sealed separately to every member; the server never holds an openable copy

Also in the build: pinned, muted and archived chats · block and report · read receipts off by default · passcode app lock · push notifications · light and dark themes · delete your account and everything in it, from inside the app.

Next in line — not in the app yet

  • Encrypted reactionsSeal the emoji itself, so the server holds a blob rather than a heart
  • Safety-number verificationThe fingerprint is computed correctly in the crypto layer; the screen that shows it is still a placeholder, so we don't count it
  • Forward secrecyRotating keys. Today it's one long-term key per pair of people — our biggest weakness
  • Sealed messages, edit window, voice notesDesigned, specified, not built
  • Search that can't find you by numberToday a phone number still resolves to an account. See below — we say so rather than hide it.

Six screens, all of them real

The rest of
the app.

One thread can't show you group key handling, your privacy defaults, or the way out. Every screen here is backed by something that runs — where a screen shows a limit rather than a feature, it says so on the screen. Swipe, or use the arrows.

Chats

Pinned

Mara encrypted message 9:44 2
Theo photo · encrypted 9:12

All

Ravel St Priya: photo · encrypted 8:583
Priya disappears in 41m 8:40
Dad call me when you land Tue
Pins, mutes and archive Previews say what arrived — a photo, a disappearing message — never what it said, because the phone is the only place that could know.

Ravel St

Encryption

Group keysealed once to each member's public key epoch 3
Server's copyfour sealed envelopes it can't open

4 members

Youadmin
Theokey sealed
Priyakey sealed
Marakey sealed

When someone joins or leaves, the key rotates to a new epoch and is resealed. We store four envelopes and hold no key that opens any of them.

Encrypted group chats The group key is sealed separately to every member. The server keeps the envelopes and can open none of them.

Delete account

This removes your account, your messages, your keys, your contacts and your settings. It cannot be undone.

Messages & mediaevery row and file we hold
Your public keynobody can address you again
Phone number & sessionsthe account record itself
Delete permanently

No retention window, no "deactivated" state, no email asking you to reconsider. Two taps from Settings.

The way out Deletion is in the app, it's immediate, and it takes the keys with it. A privacy tool that makes leaving hard was never one.

Add someone

@priya found by username Add

Other ways

Scan their code keys exchanged in person
Search by phone number full number only · never a prefix

We never read your address book — there is no contacts permission in the app. But a full number typed here does resolve to an account, and we don't hash it yet. next

Finding people Username search, a scannable code, or a full phone number. We never touch your address book — but number lookup isn't hashed yet, and that's on the next list rather than dressed up.

Appearance

Darkin use
Lightthe default
Match systemfollow your device
Bubble tintaccent on your own messages

Your theme is stored on the device. It never becomes account data, because there is no profile for it to sit in.

Light and dark Two themes and a system option — kept on the device, so your appearance choice isn't account data either.

Privacy

Disappear by defaultevery new chat starts on a timer 1 hour
Read receiptsoff for everyone, including you
App lockpasscode on open
Who can see your numbernobody — it is in no response we send another user nobody
Blocked contactsthey can't message or see you, and aren't told 2

Defaults matter more than settings: a private app that ships loud defaults isn't private. off is the starting position here. No screenshot blocking or biometric unlock yet — both are on the next list.

Privacy defaults Read receipts off, disappearing on, no number on file — before you change a single setting.
1 / 6

Scroll to send · the network is watching

Same message.
Two internets.

Mara
the address is 14 Ravel St

your phone

you
the address is 14 Ravel St

their phone

The interceptor sees an opaque blob. It knows a message happened. It cannot tell you what it said.

Real cryptography · running in this tab

Type. Watch
every byte move.

Each tile below is one real byte of ciphertext, produced right now by your own browser. Change a single character and watch how many of them flip — that avalanche is the property that matters, and it's the same one the app relies on. The algorithms differ: this runs on what browsers ship, and the Android app uses libsodium's X25519 and XSalsa20-Poly1305. Saying "the exact construction the app uses" would be easier and untrue.

Ciphertext · 0 bytes browser · AES-256-GCM

Fresh nonce every keystroke · nothing here touches the network · the app does the same job with crypto_box

Don't take our word for it

Check it
yourself.

We haven't published the source yet, so a promise is all we'd otherwise have. Instead: here is the request that leaves your device, the row it becomes on our server, and what happens when someone tries to open it. All three are generated live from the box above — edit it and watch them change.

  1. Open the network panel F12 or ⌘⌥I, then reload with it open.
  2. Count the requests This page fetches one thing: the waitlist number. No fonts, no analytics, no CDN, no telemetry. Type in the demo above and watch the panel stay still — the encryption happens here and goes nowhere.
  3. Read the panels beside this The request body and the database row are the app's real shapes, filled with ciphertext generated from your text a moment ago. Search them for the words you typed. They are not in there.
  4. Try to open the blob Paste it into crypto.subtle.decrypt with any key you can obtain. The third tab is us doing exactly that, for real, and failing.
encrypting…

Nothing on this page talks to a server — the keys, the ciphertext and the failed decrypt all happen in this tab, which you can confirm in the same network panel. When the source is published this section becomes redundant, and that will be a good day.

The differences that matter

What's built.
What's next.

Three of these are in the app today. Six are designed, specified, or half-built, and say so on the tag — a feature grid that blurs those two is how every other privacy page oversells itself. Two of them used to sit in the top group on this very page until we checked the source. The full order of work is on the roadmap.

01

in the app

Media that arrives as bytes

Photos and video are encrypted on your phone with a one-off key, and that key is sealed to the recipient. What lands in our storage bucket is a file we cannot open — verified by a live end-to-end test, not by assertion.

02

in the app

Gone means gone from disk

Set a timer and a sweeper on the server deletes the row every sixty seconds — not a client-side trick that hides the message while the bytes quietly persist. The copy on your phone and the copy on ours both stop existing.

03

in the app

A number nobody sees

Signing up needs a number and an SMS code — we're not going to pretend otherwise. What's different is afterwards: no other user is ever shown it. It isn't in your profile, it isn't in the API response your contacts get, and people reach you at an @username. The gap we still have to close is search — see card 06.

04

next

Encrypted reactions

Reactions work today, but the emoji is stored on our server in the clear — we can see that you sent a skull. Sealing the emoji itself is the fix, and until it ships this card sits on this side of the line. This page listed it as done for a while. It wasn't.

05

next

Safety-number verification

The fingerprint is computed correctly from both public keys in the crypto layer. The screen that shows it to you still renders a placeholder, so it cannot yet catch us handing you the wrong key — which makes it the most important unfinished thing here.

06

next

Unsearchable by number

Right now, someone who already knows your full number can resolve it to your account. It's a deliberate limit — no short prefixes, so it isn't an enumeration oracle — but it isn't the same as "unfindable". Hashed lookup and an off-by-default switch are the fix.

07

next

Forward secrecy

Rotating message keys, so one compromised device can't unlock your history. Today it's one long-term key per pair of people — the weakness in our own threat model, and the next thing we build.

08

next

Panic & decoy

A second passcode that opens a harmless-looking inbox. Forced to unlock your phone at a border or a checkpoint? You enter the decoy, and your real chats aren't there to find. The account can already hold a second passcode; nothing is wired to it yet.

09

later

Sealed messages, edits, voice notes

Blur-until-tapped with the flag inside the envelope; a re-encrypting edit window; sixty-second encrypted voice notes. All three are designed and none of them are built — there is no microphone permission in the app at all, which is the simplest way to prove it.

10

later

Channels & bigger groups

Group chats already work — the key is sealed separately to each member, so the server never holds an openable copy. What's missing is broadcast channels, and key distribution that stays honest at scale as members come and go.

11

later

Voice & video calls

End-to-end encrypted calling, one-to-one and in groups. Calls are a different problem to messages — real-time key agreement, and far more metadata to spill — so we'd rather ship them late than ship them leaky.

12

exploring

Multi-device

Your account on a laptop as well as your phone, without handing us your keys. Every honest way to do this is hard; the dishonest way is an escrow we could be compelled to open, and that one isn't on the table.

Disappearing messages

Gone means
gone from disk.

An hour, a day, a week. A sweeper on the server deletes the ciphertext at rest every sixty seconds — not a client-side trick that hides the row while the bytes quietly persist.

see you at 8 bring the thing don't tell anyone

deleted · both devices · and the disk

Fit, not funnel

Who this is
actually for.

A privacy tool that claims to be for everyone is either lying or dangerous. Kalvien is for everyday privacy, not operational security — and the second list matters more than the first.

Built for you if…

The gap between "nobody's business" and "my life depends on it".

  • Your group chat should stay your group chatFriends, family, a few people planning something. Not because you're hiding — because it isn't anyone else's.
  • You don't want your number to be your identityYou still hand us one, but nobody you talk to ever sees it — people know you as an @username. Someone who already has your full number can still find you; that's on the next list, not done.
  • You'd rather read the limitationsIf a page telling you what it can't do earns more of your trust than "military-grade encryption", we built this for you.
  • One device is enoughA phone you keep, a handful of people, no laptop sync and no backup you'd have to trust us with.

Use something else if…

These aren't edge cases. If you're in this column, we'd rather lose you than have you rely on us.

  • Your safety depends on itJournalists protecting sources, activists under surveillance, anyone who could be targeted personally: use Signal, today. Forward secrecy is not optional at that level, we don't have it, and you cannot yet verify a safety number with us either.
  • You need an audited clientNobody outside this team has reviewed our cryptography. Vetted primitives are the floor, not a substitute for someone trying to break it.
  • You need your history everywhereOne device, no sync, no export. A second phone means a second identity and an unreadable past.
  • You need to verify the codeOurs isn't published. If "trust us" isn't good enough — and it shouldn't be — pick an audited client.
  • Losing messages isn't survivableThere are no backups and no recovery. Lose the device, lose the history, permanently.

The part everyone else omits

What we don't claim.

Every messenger lists what it protects. Almost none list what it doesn't. Here is where Kalvien is weak today, written down before you ask — a privacy tool that oversells itself is worse than one that's honest about its edges.

No forward secrecy yet

Two people share one long-term key. If your device key leaked, past messages with that person could be read. Signal rotates keys every message; we don't — yet. It's top of the list.

We can see who talks to whom

Message content is sealed. The metadata around it — sender, recipient, timestamp — is not. We can't read your words. We can see the shape of your conversations.

Trust on first use, unverifiable

We hand out public keys, so in principle we could hand out a wrong one. A safety-number comparison defeats that — and ours isn't finished. The fingerprint is computed correctly in the crypto layer; the screen that would let you compare it still shows a placeholder. So today you are trusting us on key distribution with no way to audit it.

One device, no backups

Your private key is generated on the phone, kept in Keystore-backed storage, and can't be exported. That's what makes it safe and it's also the cost — new device means new keys, and old messages stay unreadable. There is no recovery.

Not audited by anyone

No independent party has reviewed our cryptography or our server. We use vetted primitives through libsodium rather than rolling our own, which is the floor, not a substitute. Until someone outside this team has looked, treat every claim on this page as ours rather than verified.

Unsent drafts reach our server

If you start typing and don't send, that draft syncs to your account so it survives closing the app — and unlike a message, it is stored in the clear. It's the least obvious thing on this list, which is exactly why it's on it. Clearing the box clears the stored copy.

Reactions aren't private yet

Message bodies, media and group content are sealed. Reaction emoji are not — they sit in a plain column on our server, so we can see that you reacted with a skull. It's a small leak next to message content, and it's still a leak, so it's listed here rather than quietly omitted.

Signing up needs a phone number

A number and an SMS code, like everyone else — it's how we keep one person from minting a thousand accounts, and how you get back in if you lose your device. So we do hold a number for you. It is hidden from every other user by default, it can't be used to search for you, and you talk to people at an @username. But "no phone number" would be a lie, so we're not saying it.

Threat model

Who we stop,
and who we don't.

Encryption isn't a yes or no. It's a list of adversaries and what each one walks away with — so here's ours, including the four rows where the answer is they get in. Two of those four moved into that column when we checked the code against this page rather than against our intentions.

  • stopped

    Someone on the same wi-fi

    A café network, a hotel, an ISP, anyone tapping the wire. They see that a message moved and nothing about what it said. Scroll back to the interceptor — that's this row, animated.

  • stopped

    Someone who steals our database

    A dump of our storage is a table of ciphertext and a bucket of encrypted files. There is no body column, no preview field, no search index — we verify this with a live test that encrypts, stores, and then fails to read it back. What a thief does get is the metadata row: who, whom, when.

  • partly

    Us, the operator

    We hold ciphertext we can't open — and sender, recipient and timestamp that we can. We can't read your words. We can see the shape of who you talk to.

  • partly

    A legal order served on us

    Content we genuinely cannot produce; metadata we can, because we have it. That is the whole honest answer. We do not publish a warrant canary — we'd rather say nothing than sign a document we have no process to keep true.

  • gets in

    Us handing out the wrong key

    We distribute public keys, so in principle we could hand you an attacker's. A safety-number comparison is the only thing that catches that — and ours is not finished. The fingerprint is computed correctly underneath, but the screen that shows it is still a placeholder, so today you cannot actually perform the check. This is the row we most want to move.

  • gets in

    Someone holding your unlocked phone

    A logged-in device is a logged-in device. There is a passcode lock, but no biometric unlock and no screenshot blocking, so a shoulder or a screen recorder wins. The decoy passcode that would help at a checkpoint is on the roadmap, not in the build.

  • gets in

    Your device key, later

    No forward secrecy yet: one long-term key per pair of people. If that key leaked, past messages with that person could be read. This is our biggest weakness and the next thing we're building.

  • out of scope

    A state actor targeting you

    Someone with the budget to attack your phone directly, or to compel us and gag us about it. We are not the tool for that, and no messenger should tell you it is on its own.

Notice what isn't on this list: "unbreakable", "military-grade", "NSA-proof". If your adversary is in one of the bottom rows, read who this is for again — we'd rather you used Signal than trusted us with something we can't carry.

Including the rows we lose

Next to the
alternatives.

Comparison tables are usually built so one column wins. This one has four rows where we lose outright, two of them to a free app we actively tell people to use instead — if we hid those you'd have no reason to believe the rest of the page.

Kalvien compared with Signal, WhatsApp and Telegram
Feature Kalvien Signal WhatsApp Telegram
Your number hidden from other usersNot just from strangers — from your contacts and groups too, as the default. Never shown to anyone With a username set Shown in every chat Optional setting
Can someone find you by number?Hidden and unfindable are different claims. This is the second one. Yes, with the full number Yes, unless you restrict it Yes Yes, unless you restrict it
Encrypted by defaultNot a mode you have to find and switch on. Every chat Every chat Every chat Secret chats only
Forward secrecyRotating keys, so one compromised device can't unlock your history. Not yet — next up Yes Yes In secret chats
Metadata the operator holdsEveryone sees something. This is what we see. Sender, recipient, time Least — sealed sender Contacts and timing Contacts and timing
Source publishedVerifiable beats stated. We're not there. Not yet Fully Protocol only Clients only
Independently auditedNobody outside the team has reviewed our cryptography. No Repeatedly Protocol only Contested
Ads or ad-adjacent dataWhat the business model does to the privacy promise. None in the codebase None — nonprofit Meta account linking Sponsored messages

Compiled July 2026 from each app's own published documentation, not from reviews. If a row is wrong or has gone stale, tell us and we'll correct it here rather than quietly leave it.

Designed, not shipped

What's coming.

Prototyped and specified. Not in the app today — listed so you know what you're getting on the list for.

  1. next

    Finish safety-number verification

    The fingerprint already computes correctly; the screen that shows it needs to render the real one. Until it does, nobody can check that we handed out the right key — which makes this the most important item on the list, ahead of anything new.

  2. next

    Encrypt reactions

    Seal the emoji itself so the reaction column stops being readable. Small feature, and the difference between "encrypted messaging" being true and mostly true.

  3. next

    Forward secrecy

    Rotating message keys, so one compromised device can't unlock your history. Today it's one long-term key per pair of people.

  4. next

    Hashed lookup, and number search off by default

    Stop a full phone number resolving to an account unless you've opted in, and match on hashes rather than the number itself.

  5. next

    Screenshot blocking and biometric unlock

    Two things people assume a private messenger already does. We don't, yet.

  6. later

    Panic & decoy

    A second passcode that opens a harmless-looking inbox. Forced to unlock your phone? Your real chats stay invisible.

  7. later

    Sealed messages, edit window, voice notes

    The three product features that were designed but never built. Below the security work on purpose.

  8. later

    Channels, and an independent audit

    Broadcast channels for people who want an audience — and someone outside this team reviewing the cryptography, which is worth more than any feature here.

  9. later

    Voice & video calls

    End-to-end encrypted calling, one-to-one and group.

  10. exploring

    Multi-device

    Your account on more than one device, without handing us your keys.

  11. exploring

    Publishing the source

    The thing that would make this whole page checkable instead of merely stated.

Before you ask

Questions we'd
ask too.

Is it free?

Early access is free. We haven't decided how Kalvien pays for itself long term, and we'd rather say that than invent a pricing page. What we can commit to: there is no ad system in the codebase, and adding one would mean reading metadata we currently don't touch.

What happens if I lose my device?

Your message history becomes permanently unreadable. Your private key is generated on the phone and cannot be exported — that's what makes it safe, and it's also the cost. There is no recovery and no backup. This is the single biggest trade-off in the product, and multi-device is on the roadmap precisely because of it.

Can you read my messages?

No. Message content, media and group content are encrypted on your device before they reach us; we only ever hold a nonce and a blob of ciphertext. Two honest exceptions: we can see metadata — who messaged whom, and when — and reaction emoji are currently stored in the clear. Both are listed in what we don't claim rather than buried.

What encryption do you actually use?

libsodium's crypto_box: X25519 for key agreement and XSalsa20-Poly1305 for the message itself, with sealed boxes distributing group keys and a separate key per media file. We use a vetted library rather than writing primitives ourselves. The demo higher up this page runs in your browser, so it uses the cipher suite browsers ship instead — it demonstrates the property, not the exact algorithm, and we'd rather say that than let you assume.

Is it as secure as Signal?

No, and we won't pretend otherwise. Signal has forward secrecy — rotating keys so a single compromise can't unlock your history — and we don't. Signal's code and cryptography have been audited repeatedly; ours have never been reviewed by anyone outside the team. Signal also asks for a phone number, and so do we. If your safety depends on the answer to this question, use Signal.

Is it open source?

Not published yet. For a tool that asks you to trust its cryptography, that's a fair thing to hold against us — verifiable claims beat stated ones. It's the reason the page shows you real ciphertext rather than just describing it.

Which platforms?

Android, in early access. iOS is next. There is no web client and no desktop client — if you've read something on this page that sounds like a browser app, that's the demo above, which exists to show you ciphertext rather than to be the product.

What do you do with my email?

Store it, confirm it, and email you once when we launch. Nothing else — no drip sequence, no sharing, no analytics profile. Details in the privacy notice.

Before you join the list

What signing
up looks like.

No dark patterns and no surprise permission prompts — so here is every screen, in order, including the two that exist only because we ask for a phone number.

  1. 01

    Your number A country and a number. This is the step we'd remove if we could — it's how we stop one person minting a thousand accounts.
  2. 02

    The six digits The second and last step that involves your number. After this it's hidden from every other user and can't be searched.
  3. 03

    A handle and a vibe Your @username is how people reach you, plus an optional note — 60 characters, gone in a day.
  4. 04

    Keys, made here Generated on the phone, held in Keystore-backed storage, not exportable. We receive the public half and nothing else — which is also why nobody, us included, can recover your messages later.

about 40 seconds

Never asked for: your contacts, your location, your camera, or a credit card. The one thing we can't give you is a way back in if you lose the device — that's the trade-off, spelled out in what we don't claim.

Get in early.

One email, when there's something real to open. No drip campaign, no newsletter, no "we've updated our privacy policy".