Automerge

Protocolo de Datos Descentralizado

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.

Comunidad

Detalles

Licencia Permissive (MIT) — https://github.com/automerge/automerge (Rust core), automerge-repo (sync and storage), plus language bindings
Estado de Desarrollo 🟢 Activo
Propietario 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
Órgano de Gobierno Ink & Switch (independent non-commercial research lab providing full-time engineering staff)
País International — Ink & Switch is a distributed research lab; Martin Kleppmann is at the University of Cambridge, UK
Año de Inicio 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
Financiamiento Research lab — Ink & Switch funds full-time engineering; no venture funding or token
Última Investigación 1 jul 2026

Protocolo de Datos Descentralizado Atributos

Orígenes 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
Base de Datos 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
Lenguaje de Consulta N/A — documents are accessed as native language objects (JSON-like) rather than through a query language
Formatos de Datos 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
Edición Colaborativa en Vivo 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
Edición de Texto Enriquecido Rich text editing — official rich-text CRDT support with a fully supported ProseMirror binding, developed out of Ink & Switch's Peritext research
Soporte Móvil Library-level — Swift bindings support iOS; WASM bindings run in mobile web contexts
Soporte Web Yes — JavaScript/WASM bindings are the most widely used surface
Aplicaciones Nativas Library-level — Rust core embeds directly in native applications; Swift and C bindings available
Términos Free / open source (MIT); no hosted service required. automerge-repo can sync peer-to-peer or via a generic relay the user runs
Fondos Unknown — Ink & Switch does not publish per-project budgets
Basado En 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
Arquitectura P2P 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
Red de Superposición 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
Direccionamiento por Contenido 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
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 CRDTs Automerge — this entry is the library. Rust core with JavaScript/WASM, Swift, Python and C bindings
Tolerancia a Fallos Bizantinos 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
Firma N/A — changes carry actor identifiers but are not signed by the library; authentication is left to the embedding system
Permisos 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
Compatibilidad con la Web Semántica N/A — custom binary/document model with no RDF, JSON-LD or SPARQL layer
Contrato Inteligente N/A — no ledger or contract component
Posición en la Pila del Protocolo Application-layer (built on TCP/IP) — transport-agnostic; sync runs over WebSocket, WebRTC, BroadcastChannel or any duplex channel
Incorporación de Activos/Valor None — no token or value-transfer mechanism
Madurez del Protocolo / Estandarización 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