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 →

Components for monorepos. Declare each service or package in .dmx/components/<id>/component.yaml with a description and the paths it owns, or let /dmx/init find them in your pnpm, npm, yarn, go.work, uv, or Cargo workspace. /dmx/add-component services/fraud adds any other folder, such as a Go service in a single-module repo. Every loop message names the ticket's components, and in a repo with components the agent reads only the memory that applies to them. run_tests runs the tests of each component the branch changed, plus every component that depends_on it, with default commands for Go, Node, Python, and Rust; set test in component.yaml for anything else, and test_command in config.md for changes outside every component. A component can keep its own skills, validators, and loops in its folder: skills and loops are named <id>/<name>, such as /dmx/run-loop ledger/backfill, and only that component's tickets use them; validators listed under validators in component.yaml add checks to the named loops, never replacing the repo-wide ones. Teams own their component folders through CODEOWNERS:

# .github/CODEOWNERS
/.dmx/                          @acme/platform
/.dmx/components/ledger/        @acme/ledger
/.dmx/components/payments*/     @acme/payments
/.dmx/jobs/

.dmx/jobs/ has no owner, so a ticket's own spec and plan never need platform approval. A repo without .dmx/components/ works as before.

Components can file tickets in their own Jira project or GitHub repo: list the allowed ones in config.md (jira_projects: [LEDG, PAY] or github_issue_repos: [acme/mono, acme/ledger-issues]) and set ticket in a component.yaml; dmx asks before using a destination it chose.

dmx check (or /dmx/check) validates the whole setup, such as unknown depends_on ids, paths that match no files, components without a test command, out-of-date locks, and missing CODEOWNERS lines, and shows what the current branch will load, check, and run. It never changes a file and exits 1 on an error, so it can run in CI.

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. A component can declare its own sources in .dmx/components/<id>/shared-sources.yaml, locked in its folder, so its team bumps them without platform approval; add /.dmx/components/*/shared-sources.lock @acme/platform to CODEOWNERS if platform should review every component bump instead. 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.7.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. Coming from 0.5, /dmx/upgrade also moves each ticket's files into its job folder and locks shared sources instead of copying them (see the 0.6.0 upgrade notes). 0.7 adds opt-in components for monorepos (see the 0.7.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.7.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.7.0
File Size Uploaded
deepmodel_dmx-0.7.0.tar.gz 429.2 kB Details

Built distribution (wheel)

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

Total release size: 681.0 kB

Release files / deepmodel_dmx-0.7.0.tar.gz

Download URL deepmodel_dmx-0.7.0.tar.gz
Size 429.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f11c57dfd86031bf092504546976ca8a0be9e88a1102304b3f328a1558ebb544
BLAKE2b-256 checksum
How to use checksums
54adf3bfff3113eae3f61bf3ac7a5a140288bc4a35f03dc04063a841c9d5cd1f
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.7.0-py3-none-any.whl

Download URL deepmodel_dmx-0.7.0-py3-none-any.whl
Size 251.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22e1e088943a473899d366b8852aef652d32cc161be04726f15710aa8bd92a13
BLAKE2b-256 checksum
How to use checksums
b183f31caea3ff349ebbb2f535477d5eb7243b3f7973c5af34ce2874b9fbf801
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

This release

0.7.0 This release

2 release files

0.6.0

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