dmx
The harness for AI-native engineering teams.
Most teams building with AI run into the same problems:
- Workflow lives in chat history. No process, nothing that persists, nothing you can hand off.
- Every developer uses AI differently. Different tools, different prompts, different output.
- Results are unpredictable. Brilliant one session, wrong the next.
- No shared context. Every session starts from scratch.
dmx fixes the process, not the model. It runs as an MCP server inside Cursor, Claude Code, GitHub Copilot, and Antigravity, and turns your engineering workflow into loops: ordered skills your agent runs, validators that check the result, and a human gate before anything moves forward. It implements the AI SDLC, an open framework for spec-first, phase-by-phase AI development.
How it works
Every piece of work runs through five loops, from first spec to open PR:
spec → plan → dev → validate → release
| Loop | What happens | Validators check |
|---|---|---|
| spec | Creates the ticket and branch, drafts spec.md, asks clarifying questions |
Q&A answered, approach and scope defined |
| plan | Turns the spec into a phased tasks.md |
The plan has phases and real tasks |
| dev | Implements one phase at a time and commits it, until every phase is done | Tests pass |
| validate | Reviews the change for completeness, code quality, and security | Tests pass, the change matches the spec, no regressions |
| release | Syncs the memory bank and opens the PR | The PR exists and memory is committed |
Each loop pauses after every skill so you can review. Run /dmx/loop-continue to move on. Validators run deterministically, outside the model: a required check that fails stops the loop and tells you why. When a loop passes, the next one starts on its own.
Loops are YAML in your repo. Override any default in .dmx/loops/, add your own, and review changes in PRs like any other code. Loops →
Quick start
1. Add dmx to your IDE. There's nothing to install: uvx fetches dmx on demand. 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, then restart the 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 |
Commit the project file and everyone on the team gets dmx. The MCP setup guide covers the Claude Code CLI across all projects, Windows paths, deploying with Jamf or Intune, and other IDEs.
2. Initialize your repo. On your integration branch, run:
/dmx/init
Pick the sdlc workflow and your ticketing system (GitHub Issues, Jira, or none). Then open a new chat so the rules take effect.
3. Commit and push what /dmx/init wrote. The spec loop branches from what's on origin.
4. Start your first loop:
/dmx/run-loop spec
Add rate limiting to the public inference endpoint.
Answer the spec's questions, then /dmx/loop-continue at each gate. When the PR merges, /dmx/close-ticket closes the ticket and deletes the branch.
The Quick Start walks through every step.
What you get
Validators with policy. Required checks block; optional checks warn. Write your own in validators/ as plain Python. Validators →
A memory bank. .dmx/ holds project context, the current spec and plan, and loop state, committed to the repo. Every session and every developer starts from the same understanding. Memory bank →
Shared config for the whole organization. Define loops, skills, and validators once in a git repo and vendor them into every project with /dmx/sync. Layer team config over an org baseline; each repo can still override what it needs. Shared sources →
Skill discovery. Ask your agent "which skills can update helm?" and it finds matching skills from your repo and every shared source. Ask for the task and it runs the right one. Custom skills →
Every skill on its own, too. Each step is also a /dmx/* command (/dmx/plan, /dmx/implement-next-phase, /dmx/validate, /dmx/create-pr, …) for when you want to drive by hand. Command reference →
Upgrading
Pin a version in your MCP config (deepmodel-dmx==0.5.1) or use @latest, restart your IDE, then run /dmx/upgrade once in each repo and commit the refreshed rule files. Upgrading dmx →
Roadmap
- Full lifecycle loops: spec, plan, build, validate, release
- Validators, human gates, and persistent loop state
-
.dmx/memory bank, committed to the repo - Org-wide and team shared sources, with skill discovery
- Team server: a hosted MCP endpoint with shared loops and rules across the team
- Gateway: model governance, cost visibility, and autonomous background execution
Learn more
- Documentation: concepts, loops, configuration, and reference
- Changelog
- AI SDLC: the open framework dmx implements
- When Is a Loop Ready to Run Without You?: the thinking behind dmx
Contributing
Contributions are welcome. See CONTRIBUTING.md for development setup and the Contributor License Agreement. To report a vulnerability, see SECURITY.md.
License
Metadata
Release files for deepmodel-dmx 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| deepmodel_dmx-0.5.1.tar.gz | 320.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| deepmodel_dmx-0.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 495.0 kB
Release files / deepmodel_dmx-0.5.1.tar.gz
| Download URL | deepmodel_dmx-0.5.1.tar.gz |
|---|---|
| Size | 320.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
902e867629e0d4b33a37d096ee6ed9dcfe0ee1632d3e414d06a02cadbaa7726e
|
|
BLAKE2b-256 checksum How to use checksums |
e02a820d2aea652e6e3e616eeb2f457818fb41e6210edad2ff9f917cdb5eee48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / deepmodel_dmx-0.5.1-py3-none-any.whl
| Download URL | deepmodel_dmx-0.5.1-py3-none-any.whl |
|---|---|
| Size | 174.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f1a4f783b6d421ac3061775fa1d3019c51a8c85408e557b7d932231190ba9e9f
|
|
BLAKE2b-256 checksum How to use checksums |
2f539a7dcd031d91606530aa2238301142aae2fb8365641bcfb2806f334c0113
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|