Formally verified · offline-first · open architecture

Verified information that travels without the internet

Project Fabric is a secure protocol for delivering authenticated public information — weather, market prices, health notices, official documents, and life-safety alerts — over everyday human movement. It needs no towers, no data plans, and no accounts, and every phone cryptographically verifies what it receives before showing it.

0bytes of internet required
75×less network traffic than flooding*
2machine-checked invariants
488 Bcrosses the signing air gap
The problem

When connectivity disappears,
information becomes rumor.

In regions where networks are shut down, priced out, or were never built, people still need to know tomorrow's weather, today's crop prices, and whether the river ford is passable. What fills the gap is word of mouth — unverifiable, stale, and easy to poison.

📡

No infrastructure to trust

Cell towers can be switched off. Internet access can be filtered, surveilled, or made unaffordable. A resilient channel can't depend on either existing.

🕒

Stale news is dangerous news

A three-day-old flood warning is worse than none. Information needs a verifiable clock and an expiry date — even on phones that have never seen accurate time.

🎭

Forgery is cheap

Anyone can retype a "government announcement" and pass it along. Readers need proof of who published a story and when — checkable on the phone itself, offline.

The idea

Turn everyday movement into the network.

Most systems fight to keep infrastructure alive. Project Fabric assumes the opposite: the towers are down, the internet is filtered, and no server can be trusted. It then uses the one network that never fails — people moving. A single signed file is published once and spreads person to person; cryptography, not a server, guarantees it is real. The result is a communications substrate that works precisely when ordinary connectivity does not.

🚶

Sneakernet, done right

An edition rides SD cards, phone-to-phone shares, and brief Bluetooth encounters on the bus or in the market queue. Devices exchange only the pieces each is missing, and interrupted transfers are banked — never restarted. Delivery emerges from daily life, no schedule required.

🔑

Trust without a server

Every phone verifies a publisher's digital signature offline against keys it already holds. There is no authority online to attack, bribe, or switch off — and a forged "government notice" is rejected on the device before it is ever shown.

🛡️

Safe by construction

No accounts, no addresses, no location, no history. The reader app cannot even request internet permission, and the build fails if a dependency tries to add it. Being caught carrying the app reveals nothing about who you talk to — because it never knew.

How it works

News moves the way people move.

An edition is published once, then spreads phone-to-phone through ordinary daily life — the bus, the market, the clinic queue. Every hop verifies. No hop needs the internet.

✍️

A newsroom composes an edition console

Articles go into a deterministic console: the same inputs always produce byte-identical output, so any reviewer can independently reproduce what was published. No cloud, no server farm — one plain machine.

same sources → same bytes, every time
🔏

An air-gapped signer approves it optical diode

Signing keys live on a machine that has never touched a network. Only a few hundred bytes of metadata cross the gap — content physically cannot reach the keys, and the signer refuses anything content-shaped.

488 bytes across the gap · keys never leave
📦

The edition becomes a sealed bundle NFB1

The signed edition is packed into a single file with erasure-coded pieces and cryptographic proofs for every fragment. Any file transport works: an SD card, a USB stick, a phone-to-phone share.

🚌

People carry it the fabric

Village anchor phones seed the edition. Buses, traders, and market visits do the rest — phones exchange pieces during brief encounters, and partial transfers are banked, never wasted. Three hops from the newsroom, a farmer has today's forecast.

interrupted contacts OK · progress is never lost

Every phone verifies before it displays trust

Signatures are checked on-device, against keys the phone already holds. Forged or tampered content is rejected before it costs a single byte of storage — or a single unit of battery-hungry cryptography.

Old news removes itself TTL

Editions carry an expiry. When it passes, the content is gone — from every phone, automatically. Storage stays tiny, stale warnings can't circulate, and a signed clock keeps even offline phones honest about what "expired" means.

Research contributions

Three contributions, not one app.

Project Fabric began as a question: how can authenticated public information be disseminated securely over intermittently-connected networks while preserving deniability and resisting abuse in adversarial environments? Existing tools each answer part of it — secure messaging, mesh transport, delay-tolerant routing — but none answer all of it together. The project's three contributions do.

1A secure dissemination protocol

Authenticated public information over intermittent connectivity: publisher-signed, transport-independent, verified on every device, with monotonic time, expiry, replay resistance, and abuse limited by construction. Backed by two byte-exact implementations that agree on golden vectors and two machine-checked invariants.

Evidence: TLA+ invariants · Rust + Python agree · 205 tests

2Build-time security profiles

Guarantees are enforced when the software is compiled, by threat model — not toggled at runtime. An adversarial (Profile A) build cannot compile addressing, identity, reply, or self-locating code, and a signed capability manifest lets anyone prove what a binary can and cannot do. This is the project's most novel single idea.

Evidence: capability manifest, bound to a reproducible source hash

3Trust- & mobility-aware routing

Efficient dissemination without continuous infrastructure, using observed mobility and publisher trust rather than trained models: high- mobility carriers are preferred, higher-trust content is scheduled first, and only missing pieces move. It matches brute-force flooding's reach at a fraction of the traffic (see results).

Evidence: simulation vs. classic DTN protocols · AI-free
Security by architecture

Guarantees, not policies.

The important properties aren't promises in a document — they're enforced by construction, and the two most critical are proved with machine-checked formal models.

Channel isolation

A phone subscribed only to public news can never be made to store — or even cryptographically process — content from any other channel. Possession of sensitive material requires opting in; it cannot happen to you.

Proved in TLA+ · Invariant 1

No resurrection, no rollback

Time on the fabric only moves forward, driven by signed anchors. Expired content stays expired; an adversary replaying old bundles can't bring back yesterday's prices or a cancelled alert.

Proved in TLA+ · Invariant 4

Free rejection of junk

Hostile input is bounced by cheap structural checks before any signature verification runs. A flood of forged alerts costs the attacker effort — and the phone nothing.

Verified live in the reference pipeline

Nothing to seize

No accounts, no logs, no history. One tap clears a phone to a forensically empty state. The reader app requests no internet permission at all — and the build fails if a dependency tries to sneak it in.

Enforced at build time · criterion 25
Simulation results

Reaches everyone. At a fraction of the traffic.

Run against the classic delay-tolerant protocols on an identical, seed-pinned contact trace, Fabric matches the delivery of brute-force flooding while sending a tiny fraction of the messages — and it out-reaches the selective protocols outright. Less traffic means less battery, less congestion, and longer-lasting phones.

Routing strategyDeliveryNetwork traffic (messages)Efficiency (delivered / message)
Fabric100%391.03 — best
Epidemic flooding100%2,9420.01
PRoPHET-style55%211.05
Spray & Wait20%71.14

* Methodology demonstrator on synthetic contact traces (identical contact stream per strategy, seed-pinned, reproducible from the repository — nf-ref/nf_ref/dtn_sim.py). Fabric delivers to every node using ≈75× fewer transmissions than flooding. Validation on real-world traces is a scheduled milestone.

Engineering

Built like infrastructure,
because it is.

Two independent implementations agree byte-for-byte on golden test vectors — including the exact rejection step and cryptographic cost of every malicious input.

TLA+machine-checked models of the two critical invariants, with counterexamples for rejected designs
Rust coreone audited security core — parsing, Merkle proofs, verification order, deniable store, full import pipeline · 31 tests + 9 golden vectors
Python referencebyte-exact second implementation · 165 tests · golden-vector generator · full resilience-substrate reference
Android & iOSno-internet-permission readers for the phones people actually own, over one shared audited core
Roadmap

Where the project stands.

Done

Built & cross-verified

  • Formal spec + TLA+ invariants green
  • Two implementations agree on golden vectors
  • Rust core complete — deniable store, import pipeline (31 tests)
  • Console → signer → reader loop, end to end
  • Android + iOS readers over one shared core
  • Resilience substrate + DTN simulation (165 reference tests)
Now

Review & hardware

  • Independent security audit — package ready, a blocking gate
  • OEM survival probe on real budget handsets
  • Parser fuzzing
  • Validation on real-world contact traces
Next

Toward the field

  • Radio layer, gated on probe results
  • Reproducible builds proven on independent machines
  • Governance charter ratified with partners
  • Partnered pilot

Publish an edition in three clicks.

The operator console runs the full pipeline — compose, air-gapped sign, seal — and previews exactly what readers will see, verification and all.

Open the operator console →