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
  • Encrypted reactionsPrivate reactions travel as hidden encrypted conversation events; the server never receives a readable emoji column
  • Encrypted group chatsThe group key is sealed separately to every member and rotates after membership changes

Also in the build: pinned, muted and archived chats · block and report · read receipts off by default · passcode, biometric and decoy lock · voice/video calls · voice notes · linked devices · safety-number QR verification · encrypted backup · stories and channels · push notifications · light and dark themes · delete your account and everything in it, from inside the app.

Also implemented in the Android app

  • Forward-secret one-to-one messagesOne-time prekeys plus downgrade refusal after a conversation upgrades
  • Safety-number QR verificationCompare the identity keys displayed by two real devices
  • Voice and video callsAuthenticated signalling with WebRTC DTLS-SRTP media and TURN fallback
  • Sealed messages, edits, and voice notesPrivate content stays inside the encrypted conversation envelope
  • Phone discovery off by defaultExact-number lookup is server-enforced and works only after an explicit visibility choice

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. Exact-number lookup returns an account only when that person chose everyone, or chose contacts and already saved you.

Finding people Username search, a scannable code, or an exact full phone number. We never touch your address book, and number discovery is off by default.

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: read receipts begin off, and Android screenshot/screen-recording protection is enabled. App lock can use a passcode, strong biometric, or an isolated decoy profile.

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.
Where the edge is.

These are backed by the Android client and service today. Phone-number discovery is off by default and enforced by the service, not just the UI. Channels are public broadcast content, while private conversations are end-to-end encrypted.

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 or in the API response your contacts get, people reach you at an @username, and exact-number discovery is off by default.

04

in the app

Encrypted reactions

Private reactions are hidden encrypted conversation events. The service routes ciphertext and never stores the emoji in a readable reaction column. Channel reactions remain readable because channels are public.

05

in the app

Safety-number verification

Each device renders the real identity-key fingerprint and QR payload. Compare or scan them in person to detect a substituted public key.

06

in the app

Number discovery controls

Exact-number discovery is off by default. You can allow everyone, contacts you have already saved, or nobody; the backend enforces that choice and never returns the number itself.

07

in the app

Forward secrecy

One-time prekeys protect one-to-one messages and upgraded conversations refuse a legacy downgrade. Compromise of a current identity key does not expose earlier forward-secret ciphertext.

08

in the app

Panic & decoy

A second passcode opens an isolated harmless profile, while the real profile remains separately encrypted. Strong-biometric unlock is disabled while a decoy is armed so it cannot reveal which profile is real.

09

in the app

Sealed messages, edits, voice notes

Blur-until-tapped sealed messages, encrypted edits, and encrypted voice notes all travel through the private conversation envelope. Microphone access begins only when you record or call.

10

in the app

Channels & bigger groups

Group keys are wrapped separately to each authorised member and rotate after membership changes. Broadcast channels are implemented as a deliberately readable public surface, not disguised as private chat.

11

in the app

Voice & video calls

One-to-one voice and video calls use authenticated signalling and WebRTC DTLS-SRTP. Media goes peer-to-peer when possible and uses a TURN relay when needed; Kalvien does not record it.

12

in the app

Multi-device

Authorise another Android device with an expiring pairing offer, transfer private material to that authorised session, review every active device, and revoke one without server-side key escrow.

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 sees it — people know you as an @username. Exact-number discovery is off by default and changes only when you choose a different visibility.
  • 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.
  • You want private continuityLink another authorised Android device or make an encrypted local backup without giving Kalvien a readable copy of your keys.

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 an independently audited clientJournalists protecting sources, activists under surveillance, and anyone personally targeted should use Signal. Kalvien has forward-secret one-to-one messaging and safety-number verification, but no independent audit.
  • 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 desktop or iOSThe shipped client is Android. Linked Android devices and encrypted backup exist, but there is no desktop, web, or iOS client.
  • 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.
  • You need provider-held recoveryYou can create your own encrypted backup, but Kalvien cannot reset your keys. Lose every authorised device and your backup and the history is gone.

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.

Metadata is still metadata

Forward-secret encryption protects private content, not who communicated, when, delivery/read state, attachment size, or call-routing information. The service still processes those facts.

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.

Verification requires comparison

Safety-number QR comparison is available, but it only detects a substituted key when you actually compare the code with your contact through a trusted channel.

Recovery stays with you

Linked Android devices and encrypted local backups exist. Kalvien cannot open or reset them, so losing every authorised device and your backup still means losing the history.

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.

Channels are public

Channel posts, media, comments, reactions, and moderation data are readable broadcast content. Do not mistake a channel for an end-to-end encrypted private conversation.

Calls reveal traffic metadata

WebRTC encrypts live audio/video and Kalvien does not record it. The service and any TURN relay still process participant IP addresses, timing, status, and traffic volume.

Signing up needs a phone number

A number verified by Firebase Authentication is required. We hold that number, hide it from other users, and let people talk at an @username. Exact-number discovery is off by default and enforced by the backend.

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 partly or out of scope. The boundary below is checked against the current client and service, not a feature promise.

  • 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.

  • user-verifiable

    Us handing out the wrong key

    Safety-number QR comparison lets two people compare the identity keys their devices received. The protection depends on actually performing that comparison over a trusted channel.

  • partly

    Someone holding your unlocked phone

    Passcode/strong-biometric app lock, an isolated decoy profile, and Android screenshot/screen-recording protection reduce exposure. They do not stop another camera, a compromised OS, or someone who already has the real unlock secret.

  • forward-secret

    Your current device key, later

    One-time prekeys protect one-to-one ciphertext sent on the forward-secret path and upgraded conversations refuse downgrade. A compromised live device can still expose content already decrypted on that device.

  • 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.

Evidence, including the limits

What was actually
verified.

A feature list is not proof. This snapshot separates implementation, local live evidence, and production boundaries so a green unit test is never presented as a deployed result.

Kalvien release evidence and current assurance boundaries
Claim Implemented boundary Evidence run Still external
Private content is unreadable by the serviceChannels, profiles, reports, routing and call metadata are excluded from this claim. Chats, private media, stories, reactions and rich actions Two-account ciphertext-only database check Repeat after production deploy
Voice and video calls are realOne-to-one Android calls; no group-call or cross-platform claim. Signed signalling, WebRTC DTLS-SRTP and TURN Normal voice/video plus relay-only two-device calls Managed TURN production credential and repeat
Phone discovery respects your settingMissing or malformed settings fail closed. Nobody by default; contacts or everyone only by choice Server policy tests and exact-match route Repeat against deployed revision
Linked devices do not share plaintext with the serverAuthorised Android installations only. Encrypted pairing bundle, device keys, history and revocation Policy/JVM/instrumentation and local device flow Production multi-device repeat
The release bundle is installable and constrainedNo contacts, SMS, call-log, location or broad media permission. Four complete ABIs, no cleartext, backup disabled 154 JVM, 111 device, 105 server, lint, bundletool and signature Play Console review and rollout
Assurance limits are publicSource publication and independent review matter for a security product. Source not published; no independent audit Internal tests and local live validation only Independent security and legal review

Verified 10 August 2026 against the current repository and local device evidence. If code or deployment state changes, this snapshot must be refreshed before public deploy. If a row is wrong, tell us and we'll correct it here rather than quietly leave it.

Current boundaries

Assurance and platform boundaries.

The messaging, calling, device, privacy, story, channel, and encrypted backup flows described above are implemented. These are the remaining assurance and platform facts, not deferred Android feature promises.

  1. assurance

    No independent security audit

    The Android client, backend, signalling, and cryptographic integration have not been assessed by an independent security firm.

  2. platform

    Android only

    Kalvien does not currently offer iOS, desktop, or web clients. Linked-device support links authorised Android installations.

  3. assurance

    Source not published

    The implementation cannot yet be inspected by the public. Treat that as a real limit when deciding whether to trust it.

  4. scope

    Operator-visible surfaces

    Channels, profiles, reports, and routing metadata are not end-to-end encrypted. Private chats, private media, stories, reactions, and rich actions are.

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?

Link another authorised Android device and create an encrypted local backup before you need either. Kalvien cannot decrypt or reset that backup; if you lose every authorised device and the backup, the history is permanently unreadable.

Can you read my messages?

Not in private conversations. Messages, media, stories, reactions, and rich actions are encrypted on your device before they reach us. We can see routing metadata, and we can read channel content, profiles, and reports; those boundaries are listed in what we don't claim.

What encryption do you actually use?

Authenticated X25519/XSalsa20-Poly1305 encryption, one-time prekeys for forward-secret one-to-one messages, wrapped symmetric keys for groups/stories/media, and WebRTC DTLS-SRTP for calls. We use vetted primitives rather than writing them ourselves. The browser demo uses the browser's cipher suite and demonstrates the property, not the Android implementation.

Is it as secure as Signal?

No, and we won't pretend otherwise. Kalvien implements forward-secret one-to-one messages and safety-number verification, but Signal's clients and protocol are mature, published, and repeatedly scrutinised; Kalvien has not had an independent security audit. If your safety depends on the answer, 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. There is no iOS, web, or 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 sign-in step that involves your number. It is hidden from other users, and exact-number discovery stays off unless you change its visibility.
  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 device contacts, your location, SMS contents, call log, broad photo library, or a credit card. Camera and microphone are requested only for QR/video/voice flows you start. Create an encrypted backup or link another device if you need continuity.

Get in early.

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