Skip to content
C3Control / Continuity
Sync documentation
C3Sync

C3Sync / Core concepts

Updated 2026-07-24 · C3Sync README and QUICKSTART.md

Sync and merge behavior

Capture boundaries

C3Sync captures the working tree at agent-turn boundaries. The resulting restore anchor binds the session position to the file state that existed when that turn completed.

Files included

  • Tracked files and untracked files that git does not ignore
  • .c3syncinclude entries, even when git would ignore them
  • Extra exclusions declared in .c3syncignore

The .git directory, .c3sync state, build output ignored by git, and conflict sidecars are never synchronized as ordinary files.

Offline peers

Machines do not need to be online together. JetStream retains encrypted events, and a peer resumes its durable consumer when it reconnects.

Concurrent edits

Changes to different paths merge independently. If two machines modify the same path concurrently, the selected version becomes the working copy and the other version is written beside it as <name>.conflict.

Two agents writing to the same session at the same time are unsupported. C3Sync detects concurrent writers and pauses materialization for that session instead of guessing.

Committed history

Git-aware stale detection prevents an older clone from silently reverting content already protected by newer committed history. Keep clones fetched so peers can make the most precise ancestry decision. If a peer's uncommitted state genuinely reverts committed content in a way that cannot converge, C3Sync surfaces a conflict with a .conflict sidecar rather than dropping the change silently.

Commits are also kept in step in the forward direction: when you commit and push on one machine, your other machines fetch and fast-forward automatically while preserving unrelated uncommitted work. See git integration & auto-pull.