Skip to main content
Local-first  ·  Deterministic  ·  Distributed state

Build collaborative systems
that converge

Build collaborative, offline-first, and distributed applications without designing your own synchronization, conflict resolution, replay, or replication layer. NodalMerge is a local-first distributed state engine: write locally, merge concurrently, converge deterministically, with full audit-grade replay semantics.

CRDT
State model
DAG
History structure
Offline queue
P2P
Peer topology
Deterministic replayCanonical resolutionSpeculative writesAuthority policiesWebSocket-firstIndexedDB persistenceAudit-grade history

294,521 ops/sec

Native Rust core — real-world 259,778-edit editing trace, hash-linked DAG, per-character identity, policy checks all included.

119,482 ops/sec

Same engine, same trace, running in-browser via WASM — try it live in the Engine benchmark demo.

27,110 ops/sec

Same browser run, with an Ed25519 signature on every operation — the integrity work most CRDT libraries skip entirely.

See benchmarks/text-engine-performance for methodology, environment, and how to read these numbers safely.

One primitive does the work: immutable operations are what every peer stores and exchanges. Everything you actually read — canonical state, a registered query view, a speculative lane, even a materialization outside the state graph — is a programmable projection, a deterministic consequence of replaying that same history. See architecture/overview for the full layer breakdown and architecture/projections for why that consequence is the most underrated part of the design.
You’re building a collaborative UI — real-time editing, presence, offline-first UX.
1

Install the SDK

2

Connect a room

3

Read and write synced state

JavaScript SDK

Full API reference — sync, text, presence, blobs, offline, and config.

SDK overview

Pick the right surface, understand intent vs canonical patterns.

Subscriptions

Event subscriptions, runtime message types, lifecycle hooks.

Collab text playground

Interact with RGA text ops and DAG replay live.
🔀

Deterministic CRDT merge

All peers converge to the same canonical state regardless of write order or network partitions.

📼

Replay-grade history DAG

Every change is a node in an append-only DAG. Replay any window, branch, or ancestor state on demand.

✈️

Full offline queue

Writes queue locally while disconnected and flush deterministically on reconnect — no data loss.

🏛️

Authority-scoped policies

Lock write authority to specific key paths and peers. Policy violations are rejected, not silently dropped.

🧵

RGA collaborative text

Character-level RGA with tombstone semantics, anchor-based positioning, and per-glyph attribution.

🔍

Canonical projections

Register query specs, build paginated projections at any checkpoint, and invalidate on schema change.

Architecture

System model, CRDT behavior, replay semantics, speculative vs authoritative, and topology boundaries.

Protocol

Message-level sync, reconciliation flow, blob transfer, and failure semantics.

SDK

JavaScript and React integration — sync, text anchors, presence, offline, projections, and config.

API and commands

Full WebSocket command/response contract, capability gates, and rejection taxonomy.

Operators

Setup, persistence, GC lifecycle, observability, topology, and replay operations.

Benchmarks

Performance expectations and runtime attribution guidance.

Guides

Practical implementation guides for real product workflows.

Tutorials

Hands-on walkthroughs: protocol tracing, incident triage, replay inspection.

Five interactive playground apps

Workflow demo, collab text, protocol inspector, replay lab, and collab maps — local playgrounds for exercising SDK, replay, and protocol behavior live. See developer-experience/apps for what each app demonstrates and how to run them.
1

Run the quickstart

Start a local server and validate your first room end-to-end. → Quickstart
2

Follow the first-hour onboarding path

Validate SDK + WASM flows, inspect protocol behavior, check presence and replay evidence. → First hour path
3

Explore the interactive apps

Use the collab-text and protocol-inspector playgrounds to observe runtime behavior live. → Developer experience apps
4

Read the architecture fundamentals

Mental model + CRDT model are the highest-leverage reads before writing integration code. → Mental model · → CRDT model
5

Configure your production baseline

Server setup, persistence strategy, security posture. → Server setup · → Persistence