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
- You (or a tool) change a configuration file, or you edit in cnfgr.
- The daemon records the change in the canonical data model.
- The change syncs to your account and out to your other devices.
- 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.