Skip to Content
ConceptsProjects & identity

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:

  1. Git remote URL — the most reliable signal, matched against your known projects.
  2. .cnfgr marker file at the project root containing { "projectId": "<uuid>" }.
  3. 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.