Skip to Content
ConceptsHow sync works

How sync works

cnfgr is local-first. Every device holds the complete picture of your configuration locally, edits apply instantly and work offline, and the cloud acts as a coordinator and backup rather than the source of truth.

The two processes

Inside the desktop app there are two cooperating parts:

  • The daemon (background process). It auto-launches at login, runs in the tray, owns all file I/O against your AI tools’ directories, watches those directories for changes, holds the local state, and maintains the connection to the sync server.
  • The UI (the window you open from the tray). It talks to the daemon and lets you view and edit your configuration.

Convergent state, not a master copy

State is stored as a CRDT (conflict-free replicated data type). Each device edits its own local copy; the sync server relays those edits between connected devices and persists them. Because edits are mergeable, there is no single “master” copy to fight over — every device converges on the same result.

The sync server is a dumb relay: it moves and stores encrypted state and does not interpret or decrypt your configuration.

Sync triggers

  • File watching with debounced auto-sync is the primary trigger. After you change a file in one of your tools, cnfgr picks it up and syncs a few seconds after the last change.
  • “Sync now” is a manual escape hatch in the UI.

There is no scheduled/interval sync — file watching covers it.

The write path

  1. You (or a tool) change a configuration file, or you edit in cnfgr.
  2. The daemon records the change in the canonical data model.
  3. The change syncs to your account and out to your other devices.
  4. On each device, the daemon projects the canonical record into the native format and location for every connected tool.

cnfgr stores every concept in a single canonical shape and derives each tool’s representation at write time. See Configuration for the record types and Supported tools for per-tool fidelity.

Sync status

The UI shows a per-item sync state so you always know where each piece of config stands:

  • synced — matches your account and other devices.
  • pending — a local change is queued to sync.
  • local-only — exists on this device and hasn’t been shared.
  • excluded-here — intentionally not applied on this device.
  • conflict — needs resolution. See Conflicts & versioning.