Quick Start
Get dmx running in a project in under 10 minutes.
Prerequisites
- Python 3.11 or later
uvinstalled (providesuvx) — dmx runs viauvx, so there's nothing to install globally- An agentic IDE: Cursor, Claude Code, VS Code with GitHub Copilot, or any MCP-compatible IDE
- A GitHub repository cloned locally, with an
originremote. The Spec Loop creates feature branches on GitHub, even if you track work in Jira or use no ticketing system. - The GitHub MCP server (
user-github) connected and authenticated in your IDE./dmx/initchecks for it before writing any files. - The Atlassian MCP server, only if you'll use Jira for tickets
Step 1: Connect your IDE
dmx runs as an MCP server. You need to tell your IDE where to find it.
Every IDE uses the same config:
{
"mcpServers": {
"dmx": {
"command": "uvx",
"args": ["--from", "deepmodel-dmx@latest", "dmx", "serve"]
}
}
}Save it to the file for your IDE:
| IDE | For all your projects | For one project, shared with your team |
|---|---|---|
| Cursor | ~/.cursor/mcp.json | .cursor/mcp.json |
| Claude Code desktop app | ~/Library/Application Support/Claude/claude_desktop_config.json | .mcp.json |
| Claude Code in the terminal | — | .mcp.json |
| VS Code (GitHub Copilot) | ~/.copilot/mcp-config.json | .mcp.json |
Restart your IDE after saving. See MCP Setup for the Claude Code CLI across all projects, Windows paths, and other IDEs. Rolling dmx out with Jamf or Intune is covered in Enterprise Deployment.
Step 2: Initialize your project
On your integration branch (main or master), run:
/dmx/initThis command walks you through a one-time setup:
- Workflow mode:
sdlc(the structured lifecycle this guide follows) orfreestyle(no process enforced) - Ticketing system: Jira, GitHub Issues, or none
- Branching strategy: integration branch, production branch
- Tech stack auto-detection: reads your
pyproject.toml,package.json, orCargo.toml - Scaffolds
.dmx/: creates the memory bank with your project context
The .dmx/ directory is committed to your repo. Every developer on your team gets the same project context automatically.
Open a new chat in your IDE once init finishes, so the rules it wrote take effect.
Step 3: Commit and push
The Spec Loop must start from your integration branch, and it creates the new feature branch from what's already on origin. Commit what init wrote and push it before you start:
git add .dmx/
git commit -m "chore: initialize dmx memory bank"
git push -u origin HEADInit also writes rule files for your IDE, such as .cursor/rules/ or a dmx block in CLAUDE.md. Commit those too if your team shares them. Stay on your integration branch.
On a brand-new repository with no commits, the Spec Loop stops with an error telling you to do this first.
Step 4: Run your first Spec Loop
Start it directly with a short description of the work:
/dmx/run-loop spec
Add rate limiting to the public inference endpoint.The loop's one skill, create-ticket, uses that description to scaffold the ticket, branch, and spec.
dmx will:
- Create a ticket in your configured ticketing system (skipped when ticketing is
none) - Create a branch from
origin/{branch_base}and check it out - Scaffold a
spec.mdpre-filled with your project context, including a Q&A section - Pause for your review — this is the human gate
Answer the Q&A directly in spec.md, then resume the loop:
/dmx/loop-continueThis is what actually triggers the Spec Loop validator (check_spec_complete), which checks that:
spec.mdexists and is non-empty- All Q&A questions have answers (not just "TBD")
- The Technical Approach section is filled in
- The Scope section is defined
- The spec belongs to the branch you're on
If all checks pass, dmx automatically chains to the Plan Loop.
Step 5: Approve the plan
The Plan Loop starts automatically as soon as the Spec Loop succeeds. It runs the plan skill, which reads your spec.md and generates a phased tasks.md, then pauses for your review — the human gate.
Review tasks.md. When it looks right, resume:
/dmx/loop-continuedmx validates tasks.md, then chains to the Dev Loop.
Step 6: Build
The Dev Loop runs /dmx/implement-next-phase. It executes every task in the first unchecked phase of tasks.md, checks each one off as it completes, and then stops.
Each phase pauses twice:
-
After
implement-next-phase. Review the diff, then continue:/dmx/loop-continueThis runs
commit, which commits the phase. It doesn't push. -
After
commit. Review the commit, then continue again:/dmx/loop-continueIf phases remain, the next one starts. Once every phase is checked off, the test suite runs and the loop chains to the Validate Loop.
Step 7: Validate and open the PR
The Validate Loop runs the validate skill, a quality gate covering ticket completeness, code quality, and security, then pauses. Review the report. If it says NEEDS WORK, address the findings first. Then:
/dmx/loop-continueOn success, dmx chains to the Release Loop, which runs create-pr: it syncs the memory bank, pushes the branch, opens the pull request, and transitions the ticket to In Review. It pauses once more so you can check the PR; continue to run the final check_pr_ready validator:
/dmx/loop-continueStep 8: Merge and close
Review and merge the PR as you normally would. Then close out the ticket:
/dmx/close-ticketThis transitions the ticket to Done, comments the PR link on it, and deletes the feature branch locally and on origin. The Release Loop ends when the PR exists, so /dmx/loop-continue after the merge isn't a way to close the ticket.
What just happened
You just ran a complete AI SDLC workflow:
- Every phase had a human gate. The AI stopped and waited for your approval before proceeding.
- Validators ran automatically at every loop boundary, and blocked progress when a required check failed.
- Job state was persisted in
.dmx/. Close your IDE and resume tomorrow.
You can also run each step by hand instead of through loops: /dmx/create-ticket, /dmx/plan, /dmx/implement-next-phase, and so on. See the Command Reference.
Next steps
- Read Core Concepts: Loops to understand how loops work
- See The Default Loops for a detailed walkthrough of each loop
- Learn about Validators to understand what's being checked
- Explore Loop Configuration to customize loops for your project