Offline Protocol vs Ditto

Ditto and Offline Protocol solve adjacent problems, not the same one. Ditto is an offline-first database with a built-in peer-to-peer sync engine that uses CRDTs to merge data across devices with the server optional. Offline Protocol is the coordination layer underneath an app: an encrypted multi-transport mesh with device-owned identity, serverless service discovery, and replicated documents that merge deterministically after offline edits, over a storage adapter you choose. If you want a database product with queries and a sync engine, Ditto is that. If you want routing, identity, invocation, and replicated state as primitives under your existing storage, with the cloud remaining the system of record, reach for Offline Protocol.

What each one covers
Offline Protocol
Ditto
Runs on the phone radios already in the field
BLE, WiFi Direct, internet, with failover
Bluetooth, LAN, peer-to-peer WiFi
Multi-hop routing
Up to 8 hops, retry, dedupe
Sync replication, not routed hops
Identity that verifies with no server
OfflineID, Ed25519
Application-level accounts
End-to-end encryption
MLS, RFC 9420, every session
Transport and app-level
Service discovery without a server
Advertise, discover, invoke
Implicit, through replicated data
Replicated documents
Map, list, text, counter
Core product, with a query language
Works with no server at all
Serverless by default
Server optional, hosted peer is the record
No hardware to buy
Phone only
Phone only

Covers itPartly, or with conditionsNot part of the product Taken from each product's own documentation. The detailed table below carries the specifics.

The specifics

Offline Protocol compared with Ditto across category, transports, encryption, and form factor.
Capability Offline Protocol Ditto
Category Transport, identity, and coordination layer Offline-first database and sync engine
Core model Coordination layer: replicated documents, encrypted routing, identity, and service invocation Embedded database with CRDT replication and a hosted peer
Replicated state Map, list, text, counter documents; deterministic merge; whole-space replication Documents with a query language and subscription-based partial sync
Transports BLE, WiFi Direct, internet, Reticulum, Nostr with failover Bluetooth, LAN, peer-to-peer WiFi, server
Encryption and identity MLS (RFC 9420), Ed25519 OfflineID Transport and application-level encryption
Service discovery Serverless request and response across the mesh Implicit through replicated data
Server None required; your cloud stays the system of record Hosted peer becomes the system of record
Primary artifact Rust core SDK with React Native, Python, Java, and C bindings Embeddable database SDK
Licensing and cost
Mesh SDK free under AGPL-3.0, including in production. Closed-source and App Store apps need the commercial license; contact us for pricing. Hosted services from $0 (Free), $99 a month (Pro), $499 a month (Scale). Local mesh traffic is never metered. Pricing
Proprietary SDK with a free tier, Pro, and custom Enterprise pricing. Ditto pricing

How they differ

Ditto describes itself as an offline-first database with built-in peer-to-peer networking, using CRDT-powered conflict resolution to sync device to device over Bluetooth, LAN, and peer-to-peer WiFi, with the server optional (ditto.com). Its customer base spans airlines, quick-service retail, and public-sector work. That framing is a data story: the value is in how records converge without a central authority.

Offline Protocol replicates data too, and then keeps going. Its replicated documents merge deterministically after offline edits, persist on-device by default, and sit on a storage adapter you can swap, so your database and your cloud remain the system of record. Around that it is a peer-to-peer mesh over five transports with automatic failover, multi-hop relay, and MLS (RFC 9420) encryption, an Ed25519 OfflineID for verifying devices with no server, and serverless service discovery so any device can advertise and invoke a capability. It does not impose a database, and nothing in its data layer requires a hosted component.

So the split is scope, not layer. Both replicate data device to device with CRDT merge. Ditto adds a query language, subscription-based partial sync, and a hosted peer, and asks you to make it your data layer. Offline Protocol adds identity, encryption, discovery, invocation, and off-grid transports, and asks nothing of your data layer.

When to choose each

Choose Ditto if you want a full offline-first database with a query language, native SDKs for many platforms, and a hosted peer as the system of record. Choose Offline Protocol if your devices must also authenticate each other, encrypt group traffic with MLS, and discover and invoke capabilities, while the database you already run stays the system of record.

Choose Offline Protocol when

Your devices have to keep acting together when the cloud is unreachable, not only keep their data in sync. You get replicated state across a mesh, authenticated peers, capabilities you can discover and invoke, five transports including off-grid paths, and your database and system of record stay yours.

Choose Ditto when

You want to replace your local data layer with a database that has a query language, subscription-based partial sync, and a hosted peer as the system of record. It does not give you identity, encryption, discovery, invocation, or off-grid transports.

The two can coexist: Offline Protocol carries encrypted, authenticated coordination and Ditto can sit above it as the data store. See how the connectivity primitives apply in logistics and the public sector.

Offline Protocol vs Ditto FAQ

What is the difference between Offline Protocol and Ditto?

Ditto is an offline-first database: you adopt its embedded store, its query language, and its hosted peer as the place your data lives. Offline Protocol is the coordination layer for physical systems: replicated documents that merge deterministically after offline edits, with on-device persistence and swappable storage, plus MLS encryption, Ed25519 identity, service discovery and invocation, and five transports, under the storage and cloud you already run.

Can I use Offline Protocol without adopting a new database?

Yes. Offline Protocol ships replicated documents with on-device persistence by default and a swappable storage adapter with a conformance suite, so you keep whatever database you already use and your cloud stays the system of record. Nothing in the data layer requires a hosted component.

Is Ditto or Offline Protocol better for offline sync?

Both replicate data device to device with CRDT merge. Offline Protocol replicates map, list, text, and counter documents as compact deltas inside MLS-scoped spaces, whole or by interest, with your storage underneath. Ditto adds a query language and a hosted peer as the system of record. If your devices also need to authenticate each other, discover and invoke capabilities, and keep working over off-grid transports, Offline Protocol covers the whole problem; Ditto covers the data.

Does Offline Protocol require a server?

No. Service discovery, identity verification, and message routing all work device-to-device with no server. When internet is present, Offline Protocol treats it as one more transport rather than a dependency.

How do licensing and cost compare with Ditto?

The Offline Protocol mesh SDK is free under AGPL-3.0-only, including in production, and local mesh traffic is never metered on any plan. Closed-source apps and apps distributed through the Apple App Store need the commercial license, which has no published price, so contact us for pricing. Hosted services are optional and run on Free ($0), Pro ($99 a month), Scale ($499 a month), and Enterprise plans. Ditto is a proprietary SDK with a free tier, a Pro tier, and custom Enterprise pricing, listed on its own pricing page. See Ditto's pricing page.

Add the connectivity layer under your app. Keep your data model. Add the mesh.