Automerge

JSON CRDT library for building local-first, collaborative applications. Automerge represents any JSON data structure as a CRDT that merges changes from multiple sources without conflicts. Unlike Yjs (which focuses on text/rich documents), Automerge handles arbitrary JSON documents — counters, maps, lists, text. Rewritten in Rust (Automerge 2.x) with WebAssembly bindings for high performance. Developed by Ink & Switch research lab (also behind Beehive, Pushpin local-first projects).

Evaluated Mar 06, 2026 (0d ago) v2.x
Homepage ↗ Repo ↗ Developer Tools crdt local-first collaboration json-crdt rust wasm open-source ink-and-switch
⚙ Agent Friendliness
59
/ 100
Can an agent use this?
🔒 Security
77
/ 100
Is it safe for agents?
⚡ Reliability
71
/ 100
Does it work consistently?

Score Breakdown

⚙ Agent Friendliness

MCP Quality
--
Documentation
75
Error Messages
68
Auth Simplicity
90
Rate Limits
90

🔒 Security

TLS Enforcement
85
Auth Strength
70
Scope Granularity
65
Dep. Hygiene
88
Secret Handling
82

Rust core provides memory safety. No network calls — security depends on sync transport. Open source (MIT/Apache 2.0) for full auditability. No built-in encryption or access control.

⚡ Reliability

Uptime/SLA
70
Version Stability
72
Breaking Changes
68
Error Recovery
75
AF Security Reliability

Best When

You need offline-first collaborative JSON documents with flexible schema, and Yjs's text-oriented model doesn't fit your use case.

Avoid When

You're primarily building a collaborative text editor — Yjs has better editor bindings. Avoid if you need server authority over state.

Use Cases

  • Build local-first apps with JSON document sync that works offline and merges changes when reconnected — no server required for basic sync
  • Implement multi-agent shared JSON state where agents write to different parts of a document tree and changes merge automatically
  • Create collaborative database-like applications where multiple users edit records concurrently with automatic conflict resolution
  • Sync application state across devices with Automerge's efficient binary change encoding without custom sync protocol implementation
  • Use Automerge as the storage layer for agent knowledge graphs where multiple agents contribute observations to shared JSON documents

Not For

  • High-performance text editing UIs requiring rich editor binding — Yjs has better editor integration (ProseMirror, CodeMirror, Monaco bindings)
  • Applications needing strict consistency or business logic on mutations — CRDTs merge mathematically, not via rules
  • Server-authoritative state with complex validation — Automerge is peer-to-peer; validation must happen at application layer

Interface

REST API
No
GraphQL
No
gRPC
No
MCP Server
No
SDK
Yes
Webhooks
No

Authentication

Methods: none
OAuth: No Scopes: No

Automerge is a library with no built-in sync server — auth is fully delegated to the sync transport layer. AutomergeRepo (the sync layer) supports custom network adapters where auth can be implemented. No built-in access control.

Pricing

Model: open_source
Free tier: Yes
Requires CC: No

Automerge is open source maintained by Ink & Switch and community contributors. No commercial offering. Sync infrastructure must be self-built or use third-party services (e.g., Automerge-Repo + custom server).

Agent Metadata

Pagination
none
Idempotent
Full
Retry Guidance
Not documented

Known Gotchas

  • Automerge 2.x (Rust/WASM) has a different API than 1.x (pure JS) — don't mix documentation versions; the 2.x API uses Automerge.change() with a mutable proxy pattern
  • Documents must be initialized with Automerge.init() before any changes — operating on uninitialized documents throws errors
  • Automerge text handling uses Automerge.Text objects, not plain strings — agents must use splice() operations for text mutation rather than assignment
  • Large documents accumulate change history — periodic compaction with Automerge.save() + Automerge.load() is needed to manage document size in long-lived applications
  • AutomergeRepo (the recommended sync layer) is separate from the core Automerge library — many tutorials conflate the two; understand which layer you're using
  • WASM initialization is asynchronous in browser environments — agents must await Automerge.init() before using the library; synchronous usage causes silent failures

Alternatives

Full Evaluation Report

Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for Automerge.

$99

Scores are editorial opinions as of 2026-03-06.

5215
Packages Evaluated
26151
Need Evaluation
173
Need Re-evaluation
Community Powered