Offline Protocol demo apps
Offline Protocol keeps eleven open-source demo apps in the offline-app-examples repository. Each is a React Native app for iOS and Android built on @offline-protocol/mesh-sdk, and each runs one operation between phones in the same place, with no internet, accounts or server. The demos page shows every recorded app running on an iPhone and an Android phone.
The apps cover the operations teams run every day:
| App | Operation | How it keeps state in step |
|---|---|---|
| Order Up | Restaurants: orders from waiters’ phones to a kitchen display | Idempotent requests, resends and status updates |
| Stock Sync | Retail: one shared inventory across phones in a store | Optimistic local changes confirmed by host snapshots |
| YardGate | Logistics: yard gate check-in, approved or denied by the officer | A nearby service discovered and invoked over the mesh |
| Event Floor | Live events: staff dispatch and gate admissions | An encrypted staff group and a gate admission ledger |
| OutageNet | Public sector: outage coordination between field units and a command post | Status updates and handoff acceptance, synced later |
| AgriMesh | Agriculture: field readings to the farm office | Store and forward over a multi-hop Bluetooth mesh |
| DockHand | Fleet yards: driver check-in and a signed dock assignment | A signed handoff, synced to a fleet platform when online |
| ChargeCatch | EV charging: session ledgers on charge points | A site hub over a Bluetooth mesh, reconciled later |
| SafeRoll | Staff safety: signed incident alerts and a roll call | Check-ins across a Bluetooth mesh, uploaded when online |
| Cowrite | Collaboration: one shared document with live cursors | The SDK’s replicated documents in an MLS group |
| Tic Tac Together | Games: a two-player board | Host-authoritative state with revision numbers |
Choosing a demo app to start from
Start from the app whose operation looks most like yours, because its sync pattern is the part worth copying. Order Up shows how to make a request land exactly once. Stock Sync shows shared state that keeps working out of range. YardGate shows a nearby service one phone offers and another invokes. AgriMesh and ChargeCatch show readings and ledgers that wait on the device and reach a backend once a link returns. Cowrite is the starting point for shared documents.
Each app’s README explains how its sync works and what its tests cover, so you can lift the pattern without the rest of the app.
Running a demo app on two phones
A demo app needs two or more physical phones, iOS 15.1 or later or Android 7.0 or later, with Bluetooth on. Simulators and emulators run the interface but cannot discover each other. On the computer you build with, the repository’s README asks for:
- Node.js 22 or 24 and pnpm 11, through Corepack
- For iOS, macOS with Xcode 16.1 or newer, CocoaPods and an Apple development team for signing
- For Android, Android Studio with the Android SDK and JDK 17
No API key or developer portal account is needed: the examples use only nearby Bluetooth, with the SDK’s internet transports and telemetry off. The apps are MIT-0, so their code can go straight into your own app.
Apps developers have built
Developers have built and shared their own apps on the SDK. On the demos page each one links to the builder’s post or repository:
- Radius, by Mizan Ali: a social networking app that shows who nearby is worth meeting, phone to phone.
- Obsidian folder sharing, by Gokul: an Obsidian plugin that syncs folders between devices without internet, built on the SDK’s browser support.
- Shielded Zcash payment, by Satvik: a private Zcash payment between two phones in airplane mode.
- hopchat, by Gokul: an encrypted terminal chat that also runs the room, from the lights and TV to a shared local AI model.
Others include Heimdall, a friend finder that works with no signal, and MeshWallet, an Ethereum wallet whose phones relay signed transactions over a Bluetooth mesh.
Starting your own app from a demo
The fastest route to your own app is to let a coding agent plan and scaffold it with the Offline Protocol MCP server, or to scaffold a starter with the offline CLI, and then copy the sync pattern from the demo app closest to your operation. If you are deciding between platforms first, which Offline Protocol SDK should I use? compares every package.