Automerge

Decentralized Data Protocol

A CRDT library and accompanying sync protocol for local-first collaborative software. An Automerge document behaves like a JSON object that any number of peers can modify concurrently, offline, and merge without conflict or manual resolution; the library also preserves full change history, allowing version-control-like operations over application data. Version 2.0 rewrote the original JavaScript implementation in Rust, delivering a compact binary document format and substantially better performance, with bindings for JavaScript/WASM, Swift, Python and others. Rich-text support with a ProseMirror binding was added subsequently.

Community

Details

License Permissive (MIT) — https://github.com/automerge/automerge (Rust core), automerge-repo (sync and storage), plus language bindings
Dev Status 🟢 Active
Owner Ink & Switch — the independent industrial research lab provides full-time engineering staff, including lead maintainer Alex Good, Orion Henry, Brooklyn Zelenka and John Mumm. Co-created by Martin Kleppmann (University of Cambridge); the project describes contributors including engineers who co-founded Heroku
Governing Body Ink & Switch (independent non-commercial research lab providing full-time engineering staff)
Country International — Ink & Switch is a distributed research lab; Martin Kleppmann is at the University of Cambridge, UK
Start Year 2015
Stack Rust core (since 2.0) with bindings to JavaScript/WASM, Swift, Python, C and others; automerge-repo in TypeScript for sync and persistence
Funding Research lab — Ink & Switch funds full-time engineering; no venture funding or token
Last Investigated Jul 31, 2026

Topology view

This tool in the centre and the things it is directly related to. Each line names the kind of relationship.

Topology view: AutomergeThis tool in the centre and the things it is directly related to. Each line names the kind of relationship.AutomergeLoro (Basis for)LoroDXOS (Hosts, Interoperates with, Protocol spoken by)DXOSKeyhive (Hosts, Interoperates with, Protocol spoken by, Storage for)KeyhiveNextGraph (Storage for)NextGraph
  • Loro (Tool): Basis for
  • DXOS (Tool): Hosts, Interoperates with, Protocol spoken by
  • Keyhive (Tool): Hosts, Interoperates with, Protocol spoken by, Storage for
  • NextGraph (Tool): Storage for

Open in Graph Explorer

Affordances

Conflict-free editing Local-first storage

Decentralized Data Protocol Attributes

Origins Local-first software research — emerged from Ink & Switch's local-first research programme and Martin Kleppmann's CRDT work, aiming to give applications real-time and asynchronous collaboration without a central server and without users losing ownership of their data
Database N/A as a store — Automerge is a document data structure with pluggable persistence. automerge-repo supplies storage adapters (IndexedDB, filesystem, others); the library itself imposes no database
Query Language N/A — documents are accessed as native language objects (JSON-like) rather than through a query language
Data Formats Compact binary document format introduced in 2.0, encoding both current state and full change history; a JSON-compatible in-memory representation; incremental change and sync-message encodings for the sync protocol
Collaborative Live Editing Collaborative real-time editing (CRDTs) — concurrent edits from any number of peers merge deterministically without manual conflict resolution, both live and after extended offline work
Rich Text Editing Rich text editing — official rich-text CRDT support with a fully supported ProseMirror binding, developed out of Ink & Switch's Peritext research
Mobile Support Library-level — Swift bindings support iOS; WASM bindings run in mobile web contexts
Web Support Yes — JavaScript/WASM bindings are the most widely used surface
Native Apps Library-level — Rust core embeds directly in native applications; Swift and C bindings available
Terms Free / open source (MIT); no hosted service required. automerge-repo can sync peer-to-peer or via a generic relay the user runs
Funds Unknown — Ink & Switch does not publish per-project budgets
Based On CRDT research literature (RGA-family sequence CRDTs, Peritext for rich text); original work rather than a derivative of another protocol. automerge-repo layers sync and storage on top of the core
P2P Architecture Transport-agnostic peer-to-peer sync — the sync protocol exchanges compact difference messages between any two peers over any duplex channel, converging without a coordinator. automerge-repo supports direct peer connections and optional relay servers, which hold no authority over the data
Overlay Network Store-wide — synchronisation is scoped to a document (or a repository of documents) shared between the peers that hold it; there is no global network
Content Addressing No — documents are identified by document ID with changes referenced by hash internally, not addressed by content hash externally
Local-First Local-First — the canonical example of the pattern: full read/write capability offline against a complete local replica, with automatic convergence on reconnection
E2EE No — Automerge does not encrypt documents itself; confidentiality is the responsibility of the transport or the embedding application. Keyhive (in this file) is the Ink & Switch effort addressing access control and encryption for Automerge
CRDTs Lib Automerge — this entry is the library. Rust core with JavaScript/WASM, Swift, Python and C bindings
Byzantine Fault Tolerance No — CRDT merge is designed for cooperating peers; a malicious peer can inject arbitrary valid-looking changes. Authentication and authorization are left to the surrounding system
Signature N/A — changes carry actor identifiers but are not signed by the library; authentication is left to the embedding system
Permissions N/A — no access-control model in the core library; any peer holding a document can modify it. Access control is being addressed separately by Keyhive
Semantic Web Compatibility N/A — custom binary/document model with no RDF, JSON-LD or SPARQL layer
Smart Contract N/A — no ledger or contract component
Protocol Stack Position Application-layer (built on TCP/IP) — transport-agnostic; sync runs over WebSocket, WebRTC, BroadcastChannel or any duplex channel
Asset / Value Embedding None — no token or value-transfer mechanism
Protocol Maturity / Standardization De facto standard with a documented format — the binary document format and sync protocol are documented and stable since 2.0, and multiple language bindings interoperate. No standards-body involvement; the Rust implementation remains the normative reference

Relationships

How this tool connects to other tools and organizations, from relationships reviewed by the OpenHaven data steward. They describe how projects connect, not how good they are.

Interoperates with
Basis for
Protocol spoken by
Storage for