Messaging that
needs nothing.
Encrypted messages moving phone-to-phone over Bluetooth mesh. No servers, no accounts, no internet anywhere in the path.
Encrypted before it leaves your hand, opened only in theirs.
Built on boring, audited primitives
Out of range? The crowd is the route.
Every phone running FLVSH is a relay. Encrypted packets hop through the phones between you and your friend until they arrive — and the receipts hop back.
One protocol, both platforms
you → msg 7f3a · encrypted · 214 bytes peer out of range — wrapping for relay, ttl=5 hop 1 → phone “kiko” FORWARDED hop 2 → phone “ari” FORWARDED hop 3 → phone “maya” DESTINATION maya → ack 7f3a · riding the mesh back ✓ delivered in 3 hops — relays saw only ciphertext
No phone number. No account. Just a key.
Your identity is an X25519 keypair born on your device. Nobody issued it, nobody hosts it, and nobody can take it away — there is no company in the loop at all.
$ flvsh identity create generating x25519 keypair on this device… ✓ public key 9f4e…c21a ✓ private key never leaves this phone ✓ phone number not requested ✓ servers none contacted (there are none) $ flvsh profile set --name maya --avatar 👻 ✓ profile updated — keypair unchanged
The same identity core runs in both apps — one Rust library, generated Swift and Kotlin bindings, zero divergence.
Built for rooms with no signal.
Every other messenger is a client for someone's server. FLVSH is the whole system — radio, crypto, storage — running end to end on the phones themselves.
The middleman, deleted
No infrastructure means no outage, no operator, and no collection point. These zeros are the architecture, not a policy.
Every message settles
Radio links drop; FLVSH doesn't pretend otherwise. Each send is tracked to a real outcome — acknowledged end to end, or failed loudly with a retry.
Everything runs on the phone you already own.
FLVSH needs no plan, no account, and no infrastructure. The radio is in your pocket, the crypto runs on your CPU, and your history lives in a database only you hold.
No backend, no broker, no push service, no analytics endpoint. Every byte moves phone-to-phone over Bluetooth — there is nothing else in the path to trust, rent, or subpoena.
Each device holds up to seven simultaneous BLE connections, running server and client roles at once. The mesh multiplies from there, hop by hop.
Links negotiate the largest MTU both radios support and size every fragment to it, so messages and voice notes cross the air as fast as the hardware allows.
Everywhere the internet isn't.
Festival fields, basement venues, trailheads, blackouts, twelve-hour flights — the same messenger, powered by nothing but the phones already in the room.
Seven layers, zero infrastructure.
From the keypair that is your identity to the SQLite file that is your history, every layer runs on the device in your pocket. Nothing above it, nothing behind it.
- L1Keypair IdentityYou are a keypair, not a phone number
- L2End-to-End EncryptionEncrypted before it leaves your hand
- L3Bluetooth TransportThe radio in your pocket is the network
- L4Fragmentation ProtocolBig messages over a small radio
- L5Mesh RelayFriends of friends carry the message
- L6Offline QueueMessages wait for the reconnect
- L7Local-Only StorageYour history lives on your phone. Full stop.