Lattice Lattice

How Lattice works.

Roughly 7 minutes to read. 15 if you follow the links.

Six short sections. Skim the diagrams if you're in a hurry.


1. What Lattice does.

Lattice moves text messages between phones using only the radios already in your phone, which means Bluetooth and Wi-Fi. There's no Lattice company server sitting in the middle, no account to create, and no phone number to hand over. Your identity is a set of keys your phone generates the first time you open the app. They never leave the phone, and other phones know you by a 12-character ID like ZRV8-F6NE-E6TX.

Most of the time you'll keep using whatever messenger you already use. Lattice sits quietly until the day a normal messenger stops working: a regional internet shutdown, a festival where every tower is overloaded, a disaster, a country where messengers are blocked. The best time to set it up is when you don't need it.

2. How a message gets from you to your mum.

If your mum's phone is right next to yours, the two phones talk directly over Bluetooth. If she's a kilometre away, the message hops through other Lattice users between you. Each phone in between only sees a sealed envelope it can't open.

  You  ──BT──▶  ?  ──Wi-Fi──▶  ?  ──BT──▶  Mum
   │                                         ▲
   └── sealed envelope, only Mum can open ──┘
  

Each hop is a separate Bluetooth or Wi-Fi connection. The envelope is encrypted so that only the recipient has the key to open it, your mum in this example. The strangers in between forward it without knowing the contents or even who it's for.

Lattice doesn't pick one radio. It fires the same message down every viable radio at once (Bluetooth, Wi-Fi Aware, LoRa or a Meshtastic device for long range, Tor if there's any internet) and the receiver throws away the duplicates. The fastest path wins and the slow ones don't matter. Bluetooth and Tor are the proven, tested paths today. The longer-range radios are built into the app and being hardened on real hardware. Bearers explains the mechanic in detail.

3. Why nobody else can read it.

Every Lattice message is end-to-end encrypted using a hybrid of two cryptographic primitives: classical Curve25519 (the same one Signal and WhatsApp use) and ML-KEM-768 (post-quantum, standardised by NIST in 2024). Encrypting with both means a future adversary who breaks one of them still can't read your messages.

   plain text "hi mum"
        │
        │  encrypted with: classical key  +  post-quantum key
        ▼
   ┌──────────────────────────┐
   │  outer wrapper: who is   │   ← stripped at each hop
   │  this for?               │
   ├──────────────────────────┤
   │  ╔════════════════════╗  │
   │  ║ inner ciphertext   ║  │   ← only your mum can open
   │  ║ "hi mum"           ║  │
   │  ╚════════════════════╝  │
   └──────────────────────────┘
                   ↓
              hop, hop, hop
                   ↓
   your mum's phone derives the same shared key
   (it has both halves, no one else does)
   and opens the inner envelope
  

Even Lattice the project can't read messages on the wire. Nobody runs a Lattice server because there isn't one. So there's no central place to subpoena, nothing that can be compelled to hand over your conversations, and nothing for an attacker to break into.

4. What if you're far apart.

Range is where Lattice has real limits. Four scenarios:

   Same building or street:                  ✓ very fast
   ──────────────────────────
       📱 ─────── 📱
       (one direct Bluetooth connection)


   Same city, no internet:                   ✓ works, slower
   ──────────────────────────
       📱 ──── 📱 ──── 📱 ──── 📱 ──── 📱
       (chain through other Lattice users
        within Bluetooth range of each other)


   Different cities, no internet:            ✗ doesn't reach
   ──────────────────────────                  without help
       📱 ────? ──────────────────? ──── 📱
                  (gap)
       Needs LoRa or a Meshtastic device (long-range radio)
       OR someone physically carrying the message
       OR the cell network coming back

   Different cities, both have internet:     ✓ via Tor bearer
   ──────────────────────────
       📱 ──── Tor ──── 📱
       Optional. The two phones don't trust the
       network in the middle, but the cryptography
       doesn't either, so it works.
  

Bluetooth has a real-world range of roughly 30 metres line of sight, sometimes more in open air and less inside buildings. Wi-Fi Aware, the newer phone-to-phone radio, does about 200 metres in good conditions. The mesh works by stringing those short hops together. Across a city with reasonable Lattice density that's enough. Across a country it isn't, and no amount of clever software changes that: a small radio can't reach a thousand kilometres without infrastructure. The Tor bearer covers people who have internet but no shared messenger. LoRa and Meshtastic cover people who don't.

5. How you add someone you can't meet in person.

The strongest way to add a contact is to be in the same room, scan a QR code, and read the eight fingerprint words out loud to each other. That's how you'd add a family member you live with. For someone you can't physically meet, like a relative across the country or a friend overseas, there are Lattice Invites.

   1. You generate an invite link.       Your phone makes a fresh
                                          one-time key pair.
        ┌─────────────────────────┐
        │ lattice://invite/abc...  │     The link contains the public
        └─────────────────────────┘     key signed by your long-term
                                         identity.
        you also see four words:         The four words are computed
        crow  river  iron  pine          from the key, on your phone.

   2. Send the link via WhatsApp,        The link travels the
      SMS, email, anything.              normal channel.

   3. Call them on the phone.            A different channel —
      Ask "what four words do you see?"  this is the safety check.

   4. They open the link.                Their phone displays
      They see four words.               its own four words from
                                          the same key.

   5. The words match: continue.         A man-in-the-middle would
      The words don't: hang up.          have to substitute the
                                          whole key, which would
                                          show different words on
                                          their screen.
  

Four words is roughly 4 billion to 1 against an accidental collision. That's plenty to defeat casual interception. It won't stop a state-level adversary who can compromise your messaging app and your phone call at the same moment, and for that you have to meet in person and scan the QR. The verification screen says as much.

6. What happens to your messages.

Three things, all on purpose:

   ┌──────────────────────────────────────────────────────┐
   │ 1. Messages live on your phone, and on the phones    │
   │    of the people you sent them to. Nowhere else.     │
   │                                                      │
   │       Your phone:        Their phone:                │
   │       ┌─────────┐         ┌─────────┐                │
   │       │  📱     │  ────▶  │  📱     │                │
   │       │  msg    │         │  msg    │                │
   │       └─────────┘         └─────────┘                │
   │                                                      │
   │ 2. Messages have an expiry. Default is 7 days.       │
   │    They auto-delete from both phones at the          │
   │    configured time. You can change this per-chat.    │
   │                                                      │
   │ 3. Your identity is a 12-word phrase, generated      │
   │    once on your phone. You write it on paper and     │
   │    keep it somewhere safe.                           │
   │                                                      │
   │       crow river iron pine                           │
   │       elm sun grain rope                             │
   │       coast hill flame still                         │
   │                                                      │
   │    Lose your phone but have the words: you're fine.  │
   │    Lose your phone and the words: gone forever.      │
   │    Both stores: encrypted by your biometric +        │
   │    a PIN you set, so theft of the phone alone        │
   │    doesn't compromise you.                           │
   └──────────────────────────────────────────────────────┘
  

This is the same model as a hardware crypto wallet. There's deliberately no recovery path that skips your seed phrase, because any recovery path is also a way in for an attacker. The trade-off is real. Lose both your phone and your phrase and your Lattice identity is gone, so you'll set up a new one and have your contacts re-add you.


7. What Lattice doesn't do.

Five things to be plain about:

Read the full list in What Lattice Doesn't Do.


Going deeper.