Talk without towers
FLVSH sends messages phone to phone over Bluetooth. No signal, no servers, no phone number. When your friend is out of range, the phones in between carry it.
fig 01
the room is the network
0 bars · 3 nearby
Every phone running FLVSH is a relay. The more crowded the room gets, the further a message travels. No tower to overload, no server to switch off, no number to hand over. The phones in the room are the network.
- hops a message can relay through the phones between you
- 5hops a message can relay through the phones between you
- a sealed message is carried while nobody is connected
- 24 ha sealed message is carried while nobody is connected
- phones, at most, ever hold a copy of it
- 8phones, at most, ever hold a copy of it
- digits in the safety number you can read out loud
- 60digits in the safety number you can read out loud
- radar
See who's around.
No map, no GPS, no signal. Just the people near you, placed by how strong their radio is.
- Rings, not guesses
Everyone running FLVSH in Bluetooth range shows up on three rings: here, near and far, set by live signal strength.
- Faces drawn from keys
Each avatar is generated from that person's public key, so nobody else can wear it. The same pattern appears on both phones.
- finder
Then walk right to them.
Lost someone in the crowd? Pick them on the radar and follow the signal.
- Warmer, colder
Lost someone in the crowd? The finder turns their signal into one big circle that grows as you get closer. Hold the phone up and turn slowly.
- Signal, not location
The finder only hears how strong their radio is. Nobody's position is sent anywhere, so there's nothing to leak.
- the mesh, made visible
Out of range isn't out of reach.
Every phone running FLVSH is part of the network, and you can watch it working.
- Relayed hop by hop
Out of range of your friend? Phones in between forward the sealed packet, up to 5 hops, and drop repeats so a dense crowd doesn't flood itself.
- Carried when nobody's connected
If there's no live path, nearby phones carry the sealed message for up to 24 hours and hand it over when they meet your friend. At most 8 phones ever hold a copy.
- Receipts find their way back
Delivery and read receipts ride the mesh home, so you can see whether it went direct or via 2 hops.
- internet
Far away? Find them by username.
When there is a connection, the internet is one more hop. The same sealed message goes out on every path at once.
- Claim a username, or don't
Pick a handle so friends can search for you, share an invite link, or stay invisible and only add people in person.
- Requests, not spam
A first message from someone new lands in Requests. Nothing from them reaches your chats until you accept.
- The relay can't read a thing
It holds sealed envelopes for a mailbox it can't link to you. No sender, no content, deleted once your phone picks them up.
Internet- @Username@maya
- ⌗Invite a friend›
- +Add a friend›
- ◍Internet relay online
14relayed3carrying22peers met41via mesh - safety
One red button, for when it matters.
SOS sits next to the tab bar on every screen. It doesn't need a tower, a contact list or a data plan.
- Reaches every phone in range
An SOS goes to every FLVSH phone within reach and hops up to 8 phones beyond. A slide and a 5 second countdown keep it from going off in a pocket.
- Readable by anyone, on purpose
Help has to be able to read it, so an SOS isn't encrypted. It is signed, so nobody can send one in your name.
- I'm safe, in one tap
Check in with your circle when you're fine. Location is only attached when you send an alert, and only if you allow it.
- verify
Check there's nobody in the middle.
Encryption only protects you if you're talking to the right key. Checking takes ten seconds, in person.
- Scan each other's code
Hold the phones up, scan, done. A match marks the contact verified and puts a lime badge next to their name.
- Or read 60 digits out loud
Every pair of people shares one safety number. If both screens show the same digits, nobody is sitting in the middle.
- Warns you when it matters
If the codes don't match, FLVSH says so plainly and tells you not to share anything sensitive.
- conversations
A real messenger, not a walkie-talkie.
The header tells you honestly how a chat is connected right now: direct, via mesh, or waiting to be carried.
- Replies, reactions, voice notes
Everything you expect from a messenger, recorded and encrypted on your phone before the radio sees it.
- Disappearing messages
Per-chat timers from 1 hour to 1 week. Expired messages are deleted from the database, not hidden.
- Delivery you can trust
Every message ends in a state that tells you what actually happened.
sendingsentdelivered · directdelivered · via 2 hopscarried by meshreadfailed · tap to retry
How a message travels
Direct
direct · −58 dBmYour friend is in range. The message goes straight from your phone to theirs over Bluetooth, no tower anywhere in the path.
Relayed
●●● via 3 hopsOut of range? Phones in between forward the sealed packet, up to 5 hops, and drop repeats so a dense crowd doesn't flood itself.
Carried
carried by meshNo path right now? Nearby phones carry it for up to 24 hours and hand it over when they meet your friend. At most 8 ever hold a copy.
Via internet
via internetWhen either of you has a connection, the relay is one more hop. The same sealed envelope goes out on every path, and the first copy wins.
Read
readA receipt rides back the same way, so the message always ends in a state that tells you what actually happened.
Post-quantum from the first message.
Every chat starts with a hybrid handshake that stays secret unless an attacker breaks both X25519 and ML-KEM. Traffic recorded today can't be opened by a quantum computer tomorrow.
It's built from well-established RustCrypto and dalek implementations in one shared Rust core, compiled into both apps. No novel primitives, no proprietary protocol. SOS alerts are the one exception to encryption: they're signed, and readable by anyone, on purpose.
- handshake
- PQXDH: X25519 triple Diffie-Hellman + ML-KEM-768
- messages
- Double Ratchet: a fresh key for every message
- cipher
- ChaCha20-Poly1305 authenticated encryption
- identity
- A keypair made on your phone. No number, no email
- at rest
- Secrets sealed under a key in iOS Keychain / Android Keystore
- relays see
- Ciphertext and a hop count. Nothing else
Everywhere the internet isn't.
Festival fields, basement venues, trailheads, blackouts, long flights. The same messenger, powered by the phones already in the room.
- 01Festivals and eventsFull bars of nothing100k phones · 0 bars
- 02Travel and off-gridAirplane mode isn't silence35,000 ft · airplane mode
- 03Emergency and blackoutsWhen the grid goes, the mesh staysgrid down · towers dark
- 04Campus and conferencesThe venue Wi-Fi doesn't matterwi-fi at capacity
- 05Privacy-first groupsNo metadata, because no middlemanno server · no metadata
- 06Nightlife and undergroundThree floors down, still texting3 floors down · no signal
Seven layers, zero infrastructure.
From the keypair that is your identity to the database that is your history, every layer runs on the phone in your pocket.
- Local-only storage: Your history lives in a database on your phone, sealed under a key in the Keychain or Keystore. There is no copy anywhere else.
- Offline queue: Nobody in range? The message waits on your phone and leaves the moment a path appears, direct, through the mesh or over the internet.
- Fragmentation: Bluetooth packets are tiny. Photos and long messages are cut into numbered pieces and put back together on the other side.
- Mesh relay: Phones in between forward the sealed packet. Out of range of your friend still reaches them, through the people near you.
- Bluetooth transport: Every phone advertises and scans at once. The radio in your pocket is the network, with no tower in the path.
- End-to-end encryption: A post-quantum handshake, then a fresh key for every message. Relays only ever see ciphertext and a hop count.
- Keypair identity: You are a keypair made on your phone. Your face is drawn from it, so nobody else can wear it.
The busier it gets, the further it reaches.
Every face is a phone running FLVSH, and every phone is a relay. Move your cursor through the crowd.
The short answers.
Anything else, write to us. We read everything.
Does FLVSH need the internet?
No. Messages go phone to phone over Bluetooth, and through other phones running FLVSH when your friend is out of range. When you do have a connection, an optional relay reaches friends anywhere by username.
Do I need a phone number or an account?
No. You're a keypair made on your phone. A username is optional, and only matters if you want people to find you over the internet.
Can the phones in between, or the relay, read my messages?
No. They pass along sealed envelopes they can't open. Only the person you're talking to has the key. SOS alerts are the one exception: they're signed and readable by anyone, on purpose, so help can read them.
How far does a message reach?
As far as the chain of phones between you. A message can hop through up to 5 phones, and if there's no path right now, nearby phones carry it for up to 24 hours and hand it over when they meet your friend.
Does iPhone talk to Android?
Yes. Both apps are built on the same Rust core, so any two phones in the room speak exactly the same protocol.
What does relaying cost my battery and data?
Carrying messages for people nearby is on by default and capped: up to 5 MB an hour on cellular, and paused in Low Power Mode. You can turn it off in the app.
Get on the beta.
TestFlight for iPhone, an APK for Android. Tell us where you'd use it.