Multi-Agent-CAD
MAC (Multi-Agent CAD): A decoupled multi-agent framework for text-to-CAD generation via constrained test-time compute
Install / Use
npx skills add Pan-Chera/Multi-Agent-CADInstalls into whichever agent you are using.
Aider Config
Aider AI pair programming config
Quality Score
Category
AutomationSupported Platforms
Our assessment of Multi-Agent-CAD
Multi-Agent-CAD scores 90/100 on our quality scale, 103rd of 647 Automation skills we index (top 16%).
Its Aider Config is 24 KB long, well organised into 30 sections with 10 code examples: a thorough specification that gives an agent plenty to work with.
With 1,002 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 7 days ago, so Multi-Agent-CAD is actively maintained.
- Our last check on 2026-09-22 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Multi-Agent-CAD compared with similar skills
All 4 of these similar skills score higher than Multi-Agent-CAD; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| Multi-Agent-CAD (this skill)by Pan-Chera | 90 | 1.0k | 7d ago | Aider Config |
| Agent-Reachby Panniantong | 100 | 85.0k | 8d ago | CLAUDE.md |
| rufloby ruvnet | 100 | 73.1k | today | CLAUDE.md |
| nanobotby HKUDS | 100 | 48.5k | today | MCP Server |
| Scraplingby D4Vinci | 100 | 83.1k | today | MCP Server |
Frequently asked questions
- How do I install Multi-Agent-CAD?
- Run
npx skills add Pan-Chera/Multi-Agent-CAD. The install tabs above show the steps for each supported agent. - Which AI agents does Multi-Agent-CAD work with?
- It is written for Aider, as a Aider Config file. Other agents that read the same format can often use it too.
- Is Multi-Agent-CAD safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is Multi-Agent-CAD still maintained?
- The repository was last updated 7 days ago, so Multi-Agent-CAD is actively maintained.
Skill content
View source on GitHub🛠️ MAC (Multi-Agent CAD): Generate printable 3D models with 1% the tokens
Tsinghua University · IEI Lab
4 agents collaborating · 116× fewer tokens · 99.3% feature pass rate — turn concise natural language directly into printable 3D models.
Same CAD generation capability, 1/116 the tokens, 1/13 the inference cost.
| | CAD Skills | MAC (ours) | Advantage | |---|---:|---:|---:| | Tokens | 103.9M | 896k | 116× ↓ | | Cost | ¥125.69 | ¥9.67 | 13× ↓ | | Pass rate | 97.9% (138/141) | 99.3% (140/141) | ↑ |
🎬 Web UI walkthrough
Below is a screen recording of one full pipeline run through the Web UI.

📖 Table of Contents
1. 📸 Real-World Gallery

The 10 benchmark parts (P1–P10, sharing prompts with earthtojake/text-to-cad), the 10-piece show gallery (S1–S10, original prompts), and the articulable print-in-place demo below were each generated by MAC. The 3D rotation views and prompts for the physical printed models shown above are in qwen3.7_token.md.
🤖 Articulable Print-in-Place Models
Multi-body articulable models that print pre-assembled — multiple independent solid bodies coexist in one STEP with 0.4–1 mm clearance gaps so they move freely right off the build plate, no assembly required. This is a harder scenario than single-body generation: not only must the pipeline model each body separately, it must also precisely control clearances so the kinematic pairs actually function.
| Description | Real-shot | |---|---| | Ball-in-Cage Fidget Toy<br>A print-in-place classic: a solid ball is trapped inside a cube cage, printed as one piece — the ball rattles freely but cannot escape.<br>• 40 mm cube cage with a 16 mm radius spherical hollow inside, centered at origin<br>• 15 mm radius solid ball — 1 mm clearance from cage interior on all sides<br>• Six 12 mm radius through-holes (one on each face) make the ball visible & touchable<br><br>Articulable Gyroscope Toy<br>A print-in-place rotational pair: the inner ring spins inside the outer ring via two pivot pins.<br>• Outer ring: 30 mm outer / 23 mm inner radius, 10 mm tall, centered on XY plane<br>• Two 2.4 mm radius pivot holes through the outer ring along the X axis<br>• Inner spinner: 22 mm outer / 15 mm inner radius, 10 mm tall, 8 inner notches<br>• Two pivot pins (2.0 mm radius, 6 mm long) protrude outward into outer ring holes<br>• 0.4 mm radial clearance lets the inner ring spin freely 360° around the X axis | <img src="assets/articulable.gif" width="320" alt="Articulable models real-shot"> |
🎨 Show Gallery (S1–S10)
10 demo parts showcasing MAC on creative prints — ornaments, articulable toys, and mechanical mechanisms. Unlike P1–P10 (shared prompts), these are original to this project. Detailed prompts and 3D rotation views: qwen3.7_token.md.
| S1 | S2 | S3 | S4 | S5 |
|---|---|---|---|---|
| Honeycomb organizer | Gyroscope ornament | Lighthouse | Smartphone stand | Ball-in-cage |
|
|
|
|
|
|
| S6 | S7 | S8 | S9 | S10 |
|---|---|---|---|---|
| Articulable gyroscope | Multi-link chain | Geneva mechanism | Plasma reactor | Brake disc |
|
|
|
|
|
|
📐 Benchmark Parts (P1–P10)
10 mechanical parts covering arrayed features, boolean operations, rotational patterns, helical sweeps, and multi-body assemblies. The benchmark models shown below were all generated by this project using prompts from earthtojake/text-to-cad (CAD skill). Detailed prompts and per-feature pass rates are in qwen3.7_token.md.
Benchmark model views
| P1 | P2 | P3 | P4 | P5 |
|---|---|---|---|---|
| Rectangular block with 4 through-holes | Circular flange | L-bracket | Stepped shaft | Open-top enclosure |
|
|
|
|
|
|
| ¥5.53 → ¥0.31 (17.8×) | ¥8.07 → ¥0.34 (23.7×) | ¥13.07 → ¥1.08 (12.1×) | ¥6.53 → ¥0.57 (11.5×) | ¥2.88 → ¥0.36 (8.0×) |
| P6 | P7 | P8 | P9 | P10 |
|---|---|---|---|---|
| Aerospace clevis bracket | Radial-engine cylinder | Centrifugal impeller | Miniature spiral staircase | Planetary gear assembly |
|
|
|
|
|
|
| ¥15.21 → ¥3.10 (4.9×) | ¥17.42 → ¥0.53 (32.9×) | ¥32.75 → ¥1.20 (27.3×) | ¥12.80 → ¥1.45 (8.8×) | ¥11.43 → ¥0.73 (15.7×) |
Per-prompt cost (CNY): CAD Skills → MAC (cost-reduction ratio). Totals: ¥125.69 → ¥9.67 (13.0×). Raw data: docs/qwen3.7_token.md.
Design your own prints! See §2 Quick Start for how to generate a model.
2. 🚀 Quick Start
Installation
git clone https://github.com/Pan-Chera/Multi-Agent-CAD
cd Multi-Agent-CAD
conda env create -f environment.yml
conda activate multi_agent_cad
pip users (no conda):
aider-chatpinsnumpy==1.26.4, butbuild123d>=0.8requiresnumpy>=2,<3— these conflict in pure pip. Use this workaround (verified on macOS arm64 + Python 3.11):python3.11 -m venv .venv source .venv/bin/activate # Windows PowerShell: .venv\Scripts\activate pip install --upgrade pip # Install aider first (pulls numpy 1.26.4 + transitive deps), then force-upgrade numpy. # Verified: aider 0.82.3 imports cleanly on numpy 2.x — the pin is over-cautious upstream. pip install "aider-chat==0.82.3" pip install --no-deps --force-reinstall "numpy>=2,<2.3" pip install "build123d>=0.8" "langgraph>=0.2,<0.3" "langgraph-checkpoint>=2.0,<3.0" \ "pydantic>=2.5" "openai>=1.20.0" "anthropic>=0.30" \ "trimesh>=4.0" "rtree>=1.1" "scipy>=1.10" "scikit-learn>=1.3" \ "fastapi>=0.110" "uvicorn[standard]>=0.27" "ipython>=8.15" "pytest>=7.4" # --no-deps skips re-checking the numpy pin in pyproject.toml; fastapi+uvicorn # are already installed by the previous step, so the [web] extras resolve. pip install --no-deps -e .The last step registers the
mac-config-resetconsole script and lets you runpython -m multi_agent_cad.graphfrom any directory. See requirements.txt / pyproject.toml for the canonical dependency list.
Windows:
conda env create -f environment.ymlworks out of the box —trimeshandrtreecome from conda-forge prebuilt;OCPis pulled in transitively bybuild123d(via its PyPI depcadquery-ocp-novtk). Don't use the pure-pip workaround above on Windows — native wheels fortrimesh/rtreecan be unreliable. Set the API key in PowerShell as$env:DASHSCOPE_API_KEY = "sk-..."(orset DASHSCOPE_API_KEY=sk-...in cmd.exe). For the Web UI under conda,pip install -e ".[web]"inside the activated env works —uvloopauto-skips on Windows. Windows isn't in CI, but the code avoids Unix-only APIs and uses UTF-8 throughout; issues welcome.
Configuration
Edit multi_agent_cad/config.py:
| Field | Purpose |
|---|---|
| DS_API_KEY | API key (or set DASHSCOPE_API_KEY env var — takes priority over the in-file value) |
| USER_REQUEST | Default CAD generation request |
| DS_BASE_URL + 4 stages' MODEL / TEMPERATURE / MAX_TOKENS / KWARGS | Provider and per-stage model params (see §4 Hybrid Routing) |
To restore defaults after editing config:
python -m multi_agent_cad._config_defaults --reset
🔌 Use any LLM provider (not locked to Alibaba Cloud)
MAC calls models through an OpenAI-compatible endpoint. The repo defaults to
Alibaba Cloud DashScope (qwen3.7-max). Point two config fields at any provider
and the whole pipeline follows:
The model names and endpoints below are illustrative only. Verify the exact model ID with your provider's docs (DashScope console / OpenAI models API / etc.) before use — names like
qwen3.7-maxmay not match what's currently served.
| Provider | DS_BASE_URL | Example *_MODEL | Notes |
|---|---|---|---|
| OpenAI | https://api.openai.com/v1 | gpt-5.6 | DASHSCOPE_API_KEY = your OpenAI key; set *_KWARGS = {} |
| DeepSeek | https://api.deepseek.com/v1 | deepseek-v4-pro | OpenAI-compatible |
| Google Gemini | https://generativelanguage.googleapis.com/v1beta/openai/ | gemini-3.6-flash | OpenAI-compatible endpoint |
| Local (Ollama) | http://localhost:11434/v1 | qwen3-coder:32b | no API key needed |
| Anthropic Claude | via an OpenAI-compatible gateway (OpenRouter / LiteLLM proxy) | claude-sonnet-4-6 | the Aider repair stage supports Claude natively via litellm |
For OpenAI, edit config.py:
DS_BASE_URL = "https://api.openai.com/v1"
SPEC_PLANNER_MODEL = ARCHITECT_MODEL = CODER_MODEL = REPAIR_MODEL = "gpt-5.6"
# disable the Qwen-only thinking toggle:
SPEC_PLANNER_KWARGS = ARCHITECT_KWARGS = CODER_KWARGS = REPAIR_KWARGS = {}
# Aider stage (litellm-prefixed model name):
AIDER_MODEL = "openai/gpt-5.6"
then export your key (the env-var name is historical — it accepts any OpenAI-compatible key):
export DASHSCOPE_API_KEY="sk-..." # bash / zsh
# PowerShell: $env:DASHSCOPE_API_KEY = "sk-..."
About the model name
qwen3.7-max— it is simply the model ID served on the configured endpoint, here the flagship reasoning model of Alibaba DashScope. Every*_MODELfield accepts whatever model ID your provider exposes; nothing in the code is Qwen-specific. The only Qwen-specific piece is theenable_thinkingtoggle inside*_KWARGS— set*_KWARGS = {}for other providers (more per-provider examples live in config.py).
Two ways to run
MAC runs the same pipeline from the terminal or from a browser UI. Same outputs, different ergonomics — pick by what you need:
| | Terminal | Web UI |
|---|---|---|
| Best for | Mid-run steering | Visual feedback, easier to grasp |
| Mid-run inject change / halt | ✅ 10s checkpoint per QA (1 auto / 2 inject / 3 halt) | ❌ auto-iterates only |
| 3D preview of result | ❌ open STEP/STL in an external viewer | ✅ in-browser <model-viewer> + one-click downloads |
| Config editing | edit config.py | fill a form |
| Output location | repo root (temp_*) | per-job tempdir (optional copy to a path you specify) |
See Terminal and Web UI below.
Terminal
python -m multi_agent_cad.graph # original workflow: deterministic coder first, Aider fallback
pyth
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
85.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
ruflo
73.1k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
nanobot
48.5kUltra-lightweight, open-source, self-hosted personal AI agent framework in Python with WebUI, tools, memory, MCP, multi-agent workflows, automation, and chat apps
Scrapling
83.1k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
