# Files and folders

> Every file and folder DMN writes: the program, its data and settings, the .dmn folder in each project, and the entries it adds to your agents' configs, with how to remove each.

Source: https://getdmn.com/docs/files/

## 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:

```text
.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:

```text
# .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

```sh
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](/docs/install/#remove-dmn).
