Seven layers, zero infrastructure.
Every layer of FLVSH — identity, encryption, radio, relay, storage — runs on the phone in your pocket. This is the whole stack; there is nothing behind it.
- L1
Keypair Identity
X25519No Phone NumberNo AccountYour identity is an X25519 keypair generated on your device the moment you open the app. No phone number, no email, no signup, no verification code. Nobody issued your identity, so nobody can revoke, subpoena, or impersonate it.
The public key is what peers see; the private key never leaves your device. Change your name or avatar any time — the keypair underneath stays the same, so your conversations survive every profile edit.
Hover for detailBlocking someone is cryptographic, not cosmetic: packets from a blocked key are dropped before decryption. There is no server-side account to ban, recover, or socially engineer — the key is the whole story.
- L2
End-to-End Encryption
X25519 ECDHChaCha20-Poly1305AEADEvery message is sealed with ChaCha20-Poly1305 under a shared secret derived from both parties' keypairs. Only the recipient's device can open it — not relays, not bystanders, not anyone sniffing the radio.
Authenticated encryption means tampering is detected, not just hidden: a modified ciphertext fails authentication and is discarded. Voice notes ride the same pipeline as text.
Hover for detailThe shared secret comes from an X25519 Diffie-Hellman exchange between your private key and the peer's public key. Relay nodes in the mesh forward ciphertext they cannot read — a hop count is all they learn.
- L3
Bluetooth Transport
BLE 5.0GATTDual-RoleFLVSH speaks directly over Bluetooth Low Energy — no cell towers, no Wi-Fi, no internet anywhere in the path. Every phone runs both roles at once: advertising so others can find it, scanning so it can find others.
Discovery, identity exchange, and messaging all run over one GATT service. iPhones and Androids interoperate on the same protocol, byte for byte.
Hover for detailThe link negotiates the largest MTU both sides support and sizes every packet to it, so throughput adapts to the hardware instead of assuming it. Connections are acknowledged end to end — Sent means written to the radio, Delivered means the other device confirmed it.
- L4
Fragmentation Protocol
MTU-Sized ChunksGroup IDsReassemblyBLE moves small frames, so FLVSH splits large packets into MTU-sized fragments and reassembles them on arrival. Voice notes and long messages cross the radio as ordered, deduplicated chunk streams.
Each fragment carries an index, a total, and a random group ID, so two messages in flight at once can never interleave into garbage.
Hover for detailRetransmitted fragments are detected by index and dropped. A stream missing pieces is held, not guessed at — reassembly completes only when every fragment is present, or not at all.
- L5
Mesh Relay
Store & ForwardTTL HopsDedupOut of range of the person you're texting? Any FLVSH phone between you relays the encrypted packet, hop by hop, until it arrives. Relays forward ciphertext they cannot read.
A TTL bounds how far a packet travels, and every relay remembers what it has already forwarded, so the mesh never floods itself.
Hover for detailAcknowledgments and read receipts ride the mesh back the same way, so a sender two hops away still sees Delivered. Each relayed message records its hop count — you can see how far the crowd carried it.
- L6
Offline Queue
RetryTimeoutDrain-on-ConnectSend to someone who just walked out of range and the message queues on your device. The moment they're reachable again — directly or through the mesh — the queue drains and the message goes out.
Every send is tracked to an outcome: Sent, Delivered, Read, or Failed with a retry button. Nothing silently disappears into the void.
Hover for detailPending messages settle by acknowledgment, not hope: a write that was never confirmed times out and is marked Failed so you know to resend. Reconnecting to a peer drains their queue automatically.
- L7
Local-Only Storage
On-Device SQLiteDisappearing MessagesZero CloudConversations are stored in a local database on your device and nowhere else. There is no cloud backup, no sync server, no analytics endpoint — because there is no server at all.
Disappearing messages expire on a per-conversation timer and are deleted from the database, not just hidden from the list.
Hover for detailWipe the app and the data is gone everywhere, because everywhere was your phone. What never leaves the device can never leak from a breach you didn't cause.