For AI agents: the documentation index is at llms.txt. Markdown versions are available by appending .md to any page URL, including this page's markdown.
Sync protocol
How Strata Sync's server-sequenced sync protocol works, including the monotonic sync log, delta streaming, and bootstrap process.
The server assigns a monotonically increasing syncId to every committed change, creating a single global ordering that all clients follow.
Design lineage
Strata Sync is an open-source implementation of the sync engine Linear described but never released. The protocol below follows that architecture: a global syncId, bootstrap in three modes, partial indexes, a durable transaction queue, delta packets of sync actions, and sync groups as the permission boundary.
Linear's sync engine, open-sourced maps each part of Linear's published design onto the module that implements it, and lists what Strata Sync adds on top (Yjs collaboration, undo/redo, swappable adapters).
The sync log
A monotonic append-only log of sync actions. Each action represents a single change to a single model row.
| Field | Description |
|---|---|
syncId | A monotonically increasing integer assigned by the server, encoded as a string on the wire. |
modelName | Which model changed (for example, "Task" or "User"). |
modelId | The primary key of the affected row. |
action | The change type: "I" (insert), "U" (update), "D" (delete), "A" (archive), "V" (unarchive). |
data | The changed fields (for inserts and updates) or null (for deletes). |
groupId | The sync group the row belongs to, when the model is group-scoped. Used for access control. |
A delta packet bundles sync actions with a lastSyncId watermark:
Published with Edda