finds.dev← search

// the find

noib3/cola

★ 562 · Rust · MIT · updated Jan 2026

🥤 A text CRDT for real-time collaborative editing

cola is a pure Rust CRDT library for plain-text collaborative editing — no server coordination required. It implements a tree-based sequence CRDT (similar in spirit to YATA/Fugue) that lets multiple peers independently edit and converge. Aimed at developers building collaborative editors who want to own the transport layer themselves.

The API is unusually clean for a CRDT library: you call `inserted`/`deleted` to get ops, `integrate_insertion`/`integrate_deletion` to apply them, and that's essentially it. The benchmark suite uses real editing traces (automerge-paper, rustcode, sveltecomponent) which is how you actually validate correctness and performance — not toy examples. The blog post on the design is genuinely good and explains the run-length encoding and gtree structure without hand-waving. Serde support is included, which saves the usual painful step of rolling your own serialization for network transport.

Plain text only — no rich text, no attributed spans, no structured content. If you need anything beyond a flat string you'll be bolting it on yourself. The fork model assumes you already have a copy of the document to fork from, so bootstrapping new peers joining mid-session (late joins) isn't handled for you. 562 stars and 13 forks after presumably a couple years suggests it hasn't seen real production adoption, which means the edge cases in concurrent garbage collection or long-running sessions may not be battle-tested. There's no built-in awareness/cursor/presence concept, so you're on your own for showing where other users are in the document.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →