About
Why this project exists, what it covers, and how far along it is.
The goal
Applications that share data usually reach for a central database and a network connection to it. That works until the network drops, until two people edit the same thing, or until the data has to live in a place everyone already has, such as a shared folder. CRDTs solve those cases by making the merge rule part of the data.
This site collects the pieces needed to use them in ordinary applications: small libraries for each data type, and one complete shared database that stores structured data and serves it over HTTP and WebSocket.
What the shared database is for
A group of people, each with one or more machines, working on the same data. A chat room, a shared workspace, a task list, a catalogue. Every participant keeps a full copy. Changes travel through a shared folder, or through a direct connection between servers when one is available.
Each service defines the shape of its data: structs for fixed fields, tagged unions for choices, and collections for sets of items. Data that belongs to one person lives in that person's own area, where only their machines may write. Data that everybody edits lives in the shared area.
Design principles
| Principle | What it means in practice |
|---|---|
| One writer per file | Each machine writes only its own directory, so a syncing folder never has to resolve a conflict. |
| Append first | The current day is append-only. Rewrites happen on sealed days, under a rule that keeps readers correct. |
| Absence only hides | A missing record may be a deletion or a file still in transit, so nothing permanent is decided from it. |
| Presence removes | Data is removed for good on evidence that exists: a tombstone, or a verified index that no longer lists a record. |
| Small records | A node is 64 bytes on disk. Values of 16 bytes or fewer sit inside the record. |
| Plain files | Logs, data files and index files. Any program can read them, and any sync tool can move them. |
Status
The format and the algorithms are written up in full in the Reference section. The libraries are being built against that specification. Sample content on this site is provisional while the first release is prepared.
Following the work, or want a say in the format before it settles? The specification pages carry the open questions alongside the decided rules.
Licence
The libraries and the specification are published under the MIT licence. The file format is free to implement.