Skip to main content

dmx

PyPI Test Docs License: AGPL-3.0

The harness for AI-native engineering teams.

Read the docs →

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 Removes finished jobs older than 30 days, 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 lock them into every project with /dmx/update-shared-sources; dmx fetches them into a git-ignored cache. 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.6.0) or use @latest, restart your IDE, then run /dmx/upgrade once in each repo, on a branch, and commit what it changes as one PR. 0.6 moves each ticket's files into its job folder and locks shared sources instead of copying them; /dmx/upgrade migrates both. See the 0.6.0 upgrade notes. 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

Contributing

Contributions are welcome. See CONTRIBUTING.md for development setup and the Contributor License Agreement. To report a vulnerability, see SECURITY.md.

License

AGPL-3.0

Metadata

Release files for deepmodel-dmx 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for deepmodel-dmx 0.6.0
File Size Uploaded
deepmodel_dmx-0.6.0.tar.gz 356.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for deepmodel-dmx 0.6.0
File Interpreter ABI Platform
deepmodel_dmx-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 557.3 kB

Release files / deepmodel_dmx-0.6.0.tar.gz

Download URL deepmodel_dmx-0.6.0.tar.gz
Size 356.0 kB
Tags Source
SHA-256 checksum
How to use checksums
ba60b4474a6943b4c3cc6344593c5140b74c09507fc0d8236eec246c5b444a72
BLAKE2b-256 checksum
How to use checksums
ba368fbff7b295ec4cf5584b925aafb8bcbc72d48a12ff9a08836aa6f6000e42
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.6.0-py3-none-any.whl

Download URL deepmodel_dmx-0.6.0-py3-none-any.whl
Size 201.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6875cd9c283ece783380a9f732f0a4477e80be90d0e4bf67a3567a1d0147b551
BLAKE2b-256 checksum
How to use checksums
e6fed03f817532983c6d4cab3b391c9fd399d604a8c7f7ffac576c252187e239
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 history Release notifications | RSS feed

0.7.1

2 release files

0.7.0

2 release files

This release

0.6.0 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page