Works with zero signal

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.

No signal neededNo serversNo phone numberThe room is the network
direct over bluetooth●●● relayed up to 5 hopscarried for 24 hvia internet, when there is onepqxdh + double ratchetno phone numberios + android
Why it works

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

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

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

  4. 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
    Mesh
    14
    relayed
    3
    carrying
    22
    peers met
    41
    via mesh
  5. 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.

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

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

How a message travels

  1. Direct

    direct · −58 dBm

    Your friend is in range. The message goes straight from your phone to theirs over Bluetooth, no tower anywhere in the path.

  2. Relayed

    ●●● via 3 hops

    Out of range? Phones in between forward the sealed packet, up to 5 hops, and drop repeats so a dense crowd doesn't flood itself.

  3. Carried

    carried by mesh

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

  4. Via internet

    via internet

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

  5. Read

    read

    A receipt rides back the same way, so the message always ends in a state that tells you what actually happened.

encryption

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
The stack

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.

  1. 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.
  2. 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.
  3. Fragmentation: Bluetooth packets are tiny. Photos and long messages are cut into numbered pieces and put back together on the other side.
  4. Mesh relay: Phones in between forward the sealed packet. Out of range of your friend still reaches them, through the people near you.
  5. Bluetooth transport: Every phone advertises and scans at once. The radio in your pocket is the network, with no tower in the path.
  6. End-to-end encryption: A post-quantum handshake, then a fresh key for every message. Relays only ever see ciphertext and a hop count.
  7. Keypair identity: You are a keypair made on your phone. Your face is drawn from it, so nobody else can wear it.
The crowd

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.

questions

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.