Offline Protocol vs Ditto
Last updated
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 connectivity layer underneath an app: an encrypted BLE and WiFi Direct mesh with self-sovereign identity and serverless service discovery. If you need conflict-free data replication, reach for a CRDT database. If you need encrypted routing, offline identity, and capability invocation across a multi-hop mesh, reach for Offline Protocol. Many teams use both.
Side by side
| Capability | Offline Protocol | Ditto |
|---|---|---|
| Category | Transport, identity, and coordination layer | Offline-first database and sync engine |
| Core model | Encrypted mesh routing plus service invocation | CRDT replication of documents across devices |
| Transports | BLE, WiFi Direct, internet 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 | Optional, serverless by default | Optional, cloud sync available |
| Primary artifact | Rust core SDK with React Native binding | Embeddable database SDK |
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 sits a layer below the data. It is a peer-to-peer mesh over BLE and WiFi Direct with automatic failover, 8-hop relay, and MLS (RFC 9420) encryption, plus 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. You keep your storage and add connectivity, identity, and coordination.
Because of that, the comparison is less versus and more layers. A team could route and invoke over Offline Protocol while replicating a shared dataset with a CRDT engine on top. The overlap is real, both are offline-first and both sync device to device, but the center of gravity differs: Ditto is about data convergence, Offline Protocol is about transport, trust, and invocation.
When to choose each
Choose Ditto when
Your core problem is a shared dataset that many devices edit offline and must converge cleanly. CRDT conflict resolution is the point, and an embeddable database with optional cloud sync is the right shape for your app.
Choose Offline Protocol when
You need encrypted multi-hop routing, self-sovereign identity, and the ability to discover and invoke capabilities across a mesh with no server. You want a connectivity layer you can drop under any storage, not a new database.
If your app touches both, the two can coexist: Offline Protocol carries the encrypted, identity-verified traffic and service calls, and a CRDT layer handles data merge. 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 with a built-in peer-to-peer sync engine, using CRDTs to merge changes across devices over Bluetooth, LAN, and peer-to-peer WiFi with the server optional. Offline Protocol is the transport, identity, and coordination layer beneath an application: a mesh over BLE and WiFi Direct with MLS encryption, Ed25519 identity, and serverless service discovery. One is a data layer, the other is a connectivity layer, so they are often complementary rather than direct competitors.
Can I use Offline Protocol without adopting a new database?
Yes. Offline Protocol is a connectivity and identity layer, not a database. You keep whatever storage you already use and add the SDK for encrypted mesh transport, offline identity, and service discovery. Teams that want CRDT-based data merging can still layer that on top.
Is Ditto or Offline Protocol better for offline sync?
It depends on the shape of the problem. If your core need is conflict-free replication of a shared dataset across devices, a CRDT database like Ditto is purpose-built for that. If your core need is routing encrypted messages and invoking capabilities across a multi-hop mesh with self-sovereign identity, Offline Protocol is built for that. Some teams use both, with Offline Protocol as the connectivity and identity layer.
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.

