Type what you want.
Get a verified CAD part.

A small, plain-Python agent harness. The LLM drives an external CAD MCP server to build a part from your prompt — then a deterministic kernel verifier decides PASS, never the model's own word.

The agent building a part step by step, measuring its own work and self-correcting
One real run, replayed frame by frame — the agent builds, measures its own geometry, catches mistakes, and rebuilds before the independent verifier passes it. (From an earlier Fusion-backed version; the current harness targets an external build123d MCP server.)

Install & run

# install the CLI (the command is `chamfer`)
uv tool install chamfer-cad     # or: pip install chamfer-cad

# build a part from a prompt (needs a provider key in your env)
chamfer run "a 2 L electric kettle with a rounded rim" --provider anthropic

# deliver the verified STEP to a path of your choice
chamfer run "a desk lamp" --provider openai -o out/lamp.step

On first run chamfer seeds ~/.chamfer with default skills and an MCP config (build123d). Drop a CHAMFER.md or .chamfer/skills/ in your project to extend it.

Why it's different

Measured, not claimed

After the agent says "done", a fixed kernel probe re-measures every solid and grades the checklist itself. No self-reported success.

Plain Python, no framework

The whole loop — agent, tools, verifier — reads top to bottom. Flat src/*.py, no magic.

CAD is external

Capabilities come from an MCP server + skills, not baked in. The harness itself is CAD-agnostic.

Any LLM

Anthropic, OpenAI, OpenRouter, or the Claude Code / Codex CLIs — one plain-text protocol.

Gallery

Each GIF is a script-for-script replay of a real session log — actual geometry states, not illustrations. (These runs are from an earlier Fusion-backed version; the current release drives an external build123d MCP server through the same measured loop.)

The agent building an electric kettle step by step, catching an upside-down spout and rebuilding it
Electric kettle — a cylindrical body on a power base, a C-handle with measured hand clearance, a domed lid and a spout, with one live self-correction: the spout first extruded upside-down, the agent saw it in its own measurement and rebuilt it at the rim.
The agent building a desk lamp with a weighted base, verifying a kept-clear light zone and stability
Desk lamp — a weighted base, a slim stem, an overhanging arm and a hollow shade, with a kept-clear light zone verified at a measured 258 mm and stability confirmed from the center of mass sitting inside the base edge.
Chamfer architecture: agent loop over an MCP server, with a deterministic verifier deciding PASS
Where determinism lives: the LLM writes CAD freely; fixed code decides what is true.