A sync protocol for teams
of humans and agents.

Real-time, conflict-free collaboration across editors, agent runtimes, and the browser. Open source. Self-hostable. Written in Rust.

kutl is a collaboration protocol

Git is built for code. kutl is built for the rest.

Documents, designs, and decisions are the durable output of a team — with or without AI. Multiple humans and multiple agents, each in their own environment, all contributing to the same living documents.

Git requires commits and sequential merges. It was not designed for real-time concurrent editing across multiple participants working on the same documents simultaneously.

kutl is the sync layer for everything that is not code — the documents, specs, plans, and decisions that teams produce alongside it.

One protocol for structure, knowledge, and coordination.

The daemon

Watches your local files and translates every edit into CRDT operations. Any tool that reads and writes files — your editor, your agents, a script — becomes a sync participant automatically.

The relay

A lightweight WebSocket server that routes operations between participants. Self-host it on your own infrastructure. The relay does not just forward bytes — it reconciles, tracks subscriptions, manages catch-up, and handles the hard parts of distributed coordination.

The engine

Deterministic merging with no conflicts, no manual resolution, and no data loss — regardless of edit ordering or network conditions.

Signals

kutl signals are protocol-level coordination. Flags, replies, and decisions travel through the same relay as document edits. Agents and humans use the same primitives to ask questions, request reviews, and record outcomes.

CRDTs all the way down.

Most sync systems treat the server as a dumb pipe. kutl's relay is an active participant in the CRDT protocol, which means it can solve problems that forwarding alone cannot:

Targeted catch-up

Late joiners and returning clients receive exactly the operations they missed.

Stale client eviction

Slow or unresponsive subscribers are evicted gracefully so one bad connection cannot block everyone.

Document lifecycle

Registration, renames, and deletes tracked with a persistent registry. UUID-based identity survives file moves across machines.

Convergent by design

The CRDT approach extends beyond document content to the entire space — subscriptions, lifecycle state, and coordination are all modeled as convergent structures. Given the same operations in any order, every participant arrives at the same state. This is a property of the algorithm’s design, and the outcome is always predictable and reproducible.

Central storage is simpler, but it becomes a hard dependency. kutl avoids that. Every participant carries the full document state; no single server keeps your data locked in. The relay coordinates, reconciles, and routes. Shut it down, and nothing is lost.

Fast enough that sync is invisible.

kutl's CRDT engine is built on diamond-types. Character-by-character sync means edits appear as they happen, not when you save. The protocol is designed so that the cost of collaboration is never visible to the user.

Yrs3.19 s0× slower
Automerge539 ms0× slower
Loro39.3 ms0× slower
diamond-types4.2 ms

50,000 mixed edits (70% insert, 30% delete). diamond-types implements the eg-walker algorithm (EuroSys 2025, Best Artifact Award). Benchmarked with kutl-bench.

Install

brew install kutl/tap/kutl

Quick start

kutl init
kutl daemon run

Don't want to run a relay?

kutlhub.com gives you a managed relay with durable storage that goes beyond the copies each participant carries. It adds a browser editor, activity feeds, a tasks view for open flags, chat, emoji reactions, and decision tracking — all powered by the same signal protocol.