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.
LicenciaPermissive (MIT) — https://github.com/automerge/automerge (Rust core), automerge-repo (sync and storage), plus language bindings
Estado de Desarrollo 🟢 Activo
PropietarioInk & 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
Órgano de Gobierno Ink & Switch (independent non-commercial research lab providing full-time engineering staff)
PaísInternational — Ink & Switch is a distributed research lab; Martin Kleppmann is at the University of Cambridge, UK
Año de Inicio 2015
StackRust core (since 2.0) with bindings to JavaScript/WASM, Swift, Python, C and others; automerge-repo in TypeScript for sync and persistence
FinanciamientoResearch lab — Ink & Switch funds full-time engineering; no venture funding or token
Última Investigación 31 jul 2026
Vista de topología
Esta herramienta en el centro y lo que se relaciona directamente con ella. Cada línea nombra el tipo de relación.
Edición libre de conflictos Almacenamiento local-first
Protocolo de Datos Descentralizado Atributos
OrígenesLocal-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
Base de DatosN/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
Lenguaje de ConsultaN/A — documents are accessed as native language objects (JSON-like) rather than through a query language
Formatos de DatosCompact 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
Edición Colaborativa en VivoCollaborative real-time editing (CRDTs) — concurrent edits from any number of peers merge deterministically without manual conflict resolution, both live and after extended offline work
Edición de Texto EnriquecidoRich text editing — official rich-text CRDT support with a fully supported ProseMirror binding, developed out of Ink & Switch's Peritext research
Soporte MóvilLibrary-level — Swift bindings support iOS; WASM bindings run in mobile web contexts
Soporte WebYes — JavaScript/WASM bindings are the most widely used surface
Aplicaciones NativasLibrary-level — Rust core embeds directly in native applications; Swift and C bindings available
TérminosFree / open source (MIT); no hosted service required. automerge-repo can sync peer-to-peer or via a generic relay the user runs
FondosUnknown — Ink & Switch does not publish per-project budgets
Basado EnCRDT 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
Arquitectura P2PTransport-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
Red de SuperposiciónStore-wide — synchronisation is scoped to a document (or a repository of documents) shared between the peers that hold it; there is no global network
Direccionamiento por ContenidoNo — documents are identified by document ID with changes referenced by hash internally, not addressed by content hash externally
Local-FirstLocal-First — the canonical example of the pattern: full read/write capability offline against a complete local replica, with automatic convergence on reconnection
Cifrado de Extremo a Extremo (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
Biblioteca de CRDTsAutomerge — this entry is the library. Rust core with JavaScript/WASM, Swift, Python and C bindings
Tolerancia a Fallos BizantinosNo — 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
FirmaN/A — changes carry actor identifiers but are not signed by the library; authentication is left to the embedding system
PermisosN/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
Compatibilidad con la Web SemánticaN/A — custom binary/document model with no RDF, JSON-LD or SPARQL layer
Contrato InteligenteN/A — no ledger or contract component
Posición en la Pila del ProtocoloApplication-layer (built on TCP/IP) — transport-agnostic; sync runs over WebSocket, WebRTC, BroadcastChannel or any duplex channel
Incorporación de Activos/ValorNone — no token or value-transfer mechanism
Madurez del Protocolo / EstandarizaciónDe 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
Relaciones
Cómo se conecta esta herramienta con otras herramientas y organizaciones, según relaciones revisadas por el responsable de datos de OpenHaven. Describen cómo se conectan los proyectos, no su calidad.