Projects & identity
Configuration in cnfgr is either global (applies everywhere) or scoped to a project. Because the same project can live at different paths on different machines, cnfgr resolves project identity from stable signals rather than folder location.
How a project is identified
When cnfgr discovers a project on disk, it resolves identity in this priority order:
- Git remote URL — the most reliable signal, matched against your known projects.
.cnfgrmarker file at the project root containing{ "projectId": "<uuid>" }.- Manual mapping — you explicitly tell cnfgr “this folder on this device is that cnfgr project.”
Folder name and folder hash are deliberately not used — they’re too fragile.
Per-device path mapping
A project stores a per-device mapping of where it lives locally. Your laptop might
have a repo at ~/code/app and your desktop at ~/dev/app; both map to the same
cnfgr project, so project-scoped configuration follows the project regardless of
path.
Global vs project precedence
Project-level configuration overrides global configuration by name. When both exist:
- The project version wins where the project applies.
- The UI shows both and marks the global one as overridden by project, so the precedence is always visible.
Markdown content is never automatically merged between the global and project versions — the override is by record, not by line.