Try the demo

Trust

Files and folders

Where DMN puts things on your machine, in your projects and in your agents' settings, and how to take each back out.

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.