Try the demo

Start

Connect your agents

Agents you start in the DMN app are connected for you. For agents you run elsewhere, one command each. Every command previews its change first.

Three ways in

Way What it gives the agent Best for
The skill (dmn skill-init) Teaches the agent the dmn command line, which it runs in its own shell Agents with a shell: Claude Code, Codex, Gemini CLI, Cursor, OpenCode. The lightest way: no tool definitions ride along in every request
MCP (dmn mcp-init) DMN's tools: search, read, memory, claims and the rest Agents without a shell, or that prefer tools
Hooks (dmn hook-init) A briefing at the start of each session, and in Claude Code a re-index of each file it edits and the fix when a failed command matches a lesson Claude Code and Codex

You can use all three together. Each command shows what it would change; add --apply to write it, --check to verify it later, and --remove --apply to undo it. Files and folders lists exactly what each writes.

Agents in the DMN app

Start an agent with + agent in the Fleet panel and it's connected before its first turn: DMN adds its MCP server to the agent's project config, and the agent gets the project's briefing as it starts. Run dmn skill-init --apply once as well, so agents can use the lighter command line.

Settings ▸ Connect your AI tools does the same for the agents it finds on your machine: a Connect button for each, or Connect all.

Claude Code

dmn skill-init --apply --agent claude    # the dmn skill, and the short-answers rule
dmn hook-init --apply                    # the briefing, edit re-index and lesson hooks, for this project
dmn hook-init --apply --global           # or the same for every project

Restart Claude Code afterwards. dmn mcp-init --apply --agent claude adds the MCP server as well, if you want the tools too.

Short answers are on by default for Claude Code: the briefing asks it to answer tersely, which in our benchmark cut tokens by a further 23% with answers rated about as useful. To turn them off, put this in %APPDATA%\dmn\config.toml:

[skill]
compact = "off"

Codex

dmn skill-init --apply --agent codex     # ~/.codex/skills/dmn
dmn hook-init --apply --agent codex      # the briefing, in ~/.codex/hooks.json
dmn mcp-init --apply --agent codex       # optional: the MCP server, in ~/.codex/config.toml

Cursor

dmn skill-init --apply --project --agent cursor   # .agents/skills in this project
dmn mcp-init --apply --agent cursor               # .cursor/mcp.json

Cursor also reads the skill Claude Code and Codex use from your user folder. dmn mcp-init --deeplink prints a link that adds the MCP server to Cursor in one click.

Gemini CLI, OpenCode, Continue and Warp

Agent Command
Gemini CLI dmn skill-init --apply --agent gemini and dmn mcp-init --apply --agent gemini
OpenCode Reads the Claude Code and Codex skills. For an OpenCode-only setup: dmn skill-init --apply --agent opencode
Continue dmn mcp-init --apply writes .continue/mcpServers/dmn.yaml
Warp dmn mcp-init --apply writes .warp/.mcp.json

Any other MCP client

DMN's MCP server is the dmn-mcp-bridge program, which speaks MCP over standard input and output and finds the project from the folder it starts in. Most clients take a block like this:

{
  "mcpServers": {
    "dmn": { "command": "dmn-mcp-bridge", "args": [] }
  }
}

dmn mcp-init --print prints the exact block for each client it knows. MCP tools lists the tools the server offers.

Check it worked

dmn config verify     # every skill, MCP entry and hook, and whether each is current

Then ask the agent something about your code. A connected agent runs dmn search (or the search tool) instead of grepping.