For your user
| Folder | What's in it |
|---|---|
%LOCALAPPDATA%\DMN |
The program: the app, the engine, the dmn command line, the MCP bridge, the proxy, the terminal host, and the model search uses. The uninstaller removes it |
%LOCALAPPDATA%\dmn-data |
The engine's data: each project's index, logs, lessons, the proxy's records, the in-app browser's profile, the worktrees automations run in, and the folders of Claude accounts you saved in Settings ▸ Accounts (each holds that account's Claude Code sign-in) |
%APPDATA%\dmn |
Settings: config.toml for the engine and workspace.toml for the app |
dmn whoami prints the exact paths on your machine, and dmn config show says which settings came from which file. The uninstaller deletes the last two folders when you tick Delete the application data.
In each project
DMN keeps a .dmn folder at the root of each project it indexes:
.dmn/
memories/ notes agents share: one markdown file per note
sessions/ records of past sessions, by month
scrollback/ your terminals' output, so the app can restore them
project_id the project's identity, so a moved folder keeps its index
.gitignore keeps scrollback/ and sessions/ out of git
README.md says what the folder is, for anyone who opens it
workspace.toml the app's settings for this project, if you changed any
What to commit. .dmn/scrollback/ and .dmn/sessions/ hold terminal output and what your sessions did, so DMN writes a .dmn/.gitignore that keeps them out of git. It only writes the file when it's missing: edit it as you like, and an emptied file stays empty. The first time, it also writes a short .dmn/README.md, so someone who finds the folder in your repository knows what it is; delete it and it stays deleted. .dmn/memories/ is plain markdown; commit it if you want the notes in the repository, or ignore the whole folder:
# .gitignore
.dmn/
In your agents' settings
These are written only when you run the command, click Connect in Settings ▸ Connect your AI tools, or start an agent in the app. Each command shows what it would change before you add --apply, and copies a file it changes to <file>.dmn.bak.<time> first.
| What | Claude Code | Codex | Others |
|---|---|---|---|
The DMN skill (dmn skill-init) |
~/.claude/skills/dmn/, and the short-answers rule in ~/.claude/skills/dmn-compact/ |
~/.codex/skills/dmn/ |
Gemini CLI: ~/.agents/skills/dmn/. Cursor and OpenCode read the Claude Code and Codex ones |
DMN's MCP server (dmn mcp-init) |
~/.claude.json, or .mcp.json in the project |
~/.codex/config.toml, or .codex/config.toml in the project |
Cursor .cursor/mcp.json, Gemini CLI .gemini/settings.json, Continue .continue/mcpServers/dmn.yaml, Warp .warp/.mcp.json, each in your user folder or the project |
The briefing and its hooks (dmn hook-init) |
.claude/settings.json in the project, or ~/.claude/settings.json with --global |
~/.codex/hooks.json, and its trust entry in ~/.codex/config.toml |
— |
--project on skill-init puts the skill in the project instead (.claude/skills/, .agents/skills/).
Starting an agent in the app adds DMN's MCP server to that agent's project config (for Claude Code, the project's .mcp.json) if it isn't there yet, so the agent has DMN's tools from its first turn. Other entries in the file are left as they are.
Take it back out
dmn skill-init --remove --apply # the skill, for your user (add --project for the project's copy)
dmn mcp-init --remove --apply # DMN's MCP server, in every agent that has it
dmn hook-init --remove --apply # the hooks in this project (--global for your user's)
dmn config verify # check what's left
To remove DMN entirely, see Remove DMN.