OpenCues deliberately splits into two kinds of location: ~/.cues/ holds everything you edit (pure config, shared by every host), and each host integration keeps its patched artefacts in its own directory. opencues which prints the whole layout live, with a marker per path showing what actually exists.
The map
| Path | What it is |
|---|---|
~/.cues/ | Your configs: cues, blanks, OPENCUES.md settings, .env keys. Shared by every host. |
<project>/.cues/ | Project-level overrides; wins on name conflicts when you run a host from inside the project. |
~/claude-code-cues/ | The patched Claude Code fork; everything CC-specific lives under its .cues/ subdirectory. |
~/opencode-cues/ | The patched OpenCode fork, with the built @opencues libraries in its node_modules/. |
integrations/chrome/dist/ | The Chrome extension build, inside the cloned repo (optionally copied to a --target for Windows Chrome). |
~/.opencues/vendor/ | Contained tools the installer offered to fetch for you (bun, tmux), kept here so uninstall can clean them. |
/tmp/opencues.log | The runtime debug log, plus /tmp/opencues-install-<host>.log for installer output and per-PID IPC files. |
The config search order
At runtime, hosts read config from three layers, top priority first: an $OPENCUES_HOME environment override (for CI and power users), then <cwd>/.cues/ for the project you're standing in, then ~/.cues/ as the user-level default. Missing layers are silently skipped, and project wins on name conflicts. The same convention as .editorconfig or .npmrc: an opaque dot-directory at the project root that follows the project, not the machine. Your API keys live in this tree too, at ~/.cues/.env with owner-only permissions.
Why config and hosts are separate
The repo's FAQ gives two reasons. Host integrations have to touch host-specific spots: Claude Code means patching a cli.js, OpenCode means patching files inside a fork, Chrome means a built extension. None of that is user config. And ~/.cues/ stays purely yours: the things you edit, conceptually separate from compiled runtime and patched binaries. A practical consequence: uninstalling a host never touches your cues and blanks, and installing a second host picks up the same config instantly.
Uninstalling
opencues uninstall <host> rolls back each host's own artefacts (reverting the CC cli.js, restoring OpenCode's patched files). What it deliberately keeps: ~/.cues/, because your configs outlive any one host. The full-nuke option for everything is removing the fork directories and ~/.cues/ by hand; the repo FAQ lists the exact commands.
Checking your own machine
Three commands answer almost any "where is it" question: opencues which for the path layout with exists/missing markers, opencues version for what's installed at which version, and opencues doctor for whether any of it is broken or stale. If a path in the table above is missing on your machine, that usually just means the corresponding host was never installed.
Related: How to install · How to uninstall · opencues doctor · System requirements · The .cues folder · GitHub repo