Say what you want and it gets built. Point at what you mean and it gets changed. Tweak by hand when that is quicker. No feature tree to fight, no menus to memorise, and every edit stays reproducible. From first idea to exact STEP, print-ready STL and shop drawings, on your own machine.
Sound on. A real session with the real agent; only the thinking time is sped up.
Needs Claude Code. The app does not bundle Anthropic's Claude Code; install it once (free, one command) and sign in with your Claude account or API key. The app walks you through it on first launch. Details.
Intel Macs and Linux: use the source zip for now.
# any platform with Python 3.12, inside the unzipped source zip or a clone of github.com/agenticcad/agenticcad
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python server.py # then open the address it prints in your browser
Same app, same Claude Code requirement. All releases: github.com/agenticcad/agenticcad/releases.
Free for non-commercial use under PolyForm Noncommercial 1.0.0. Commercial use is A$99 per user per year; see licensing.
Three ways to shape a part, and they all end in the same place: one build123d script that the exact kernel executes. No feature tree, no hidden state, nothing you cannot read.
“60 × 40 × 8 plate, four Ø5 holes 8 mm from the corners, a Ø20 boss with a Ø8 bore.” Attach a photo or a napkin sketch if you have one. The agent writes the model with named dimensions.
Click a face, an edge or a body and it becomes a chip on your message, with its exact type, centre, normal and size. The agent works on that face, not a guess.
Press/pull, holes, fillets, chamfers, shells and sketches from a Fusion-style ribbon, or change a number in the Parameters card. Written into the same script, undoable, visible to the agent.
This viewer runs the app's renderer on meshes baked from the real kernel. Hover and click faces: the chip and the [Selected geometry] block are exactly what a chat message carries.
Because the message carries the geometry, the agent can write faces().sort_by_distance((x, y, z))[0] and hit the face you meant, then confirm with inspect_model or a screenshot. Every rebuild renumbers faces, so the app matches chips again by type and centre.
Sometimes you know exactly what you want and do not want to say it. The ribbon works like a desktop CAD tool: pick, type a number, ↵. A command dialog walks you through each tool with a live prompt, chips for what you picked and unit fields. Under the hood the operation is appended to the body's expression in the script, so it is undoable, reproducible and visible to the agent.
_plate = plate.part
_plate2 = _plate + extrude(_plate.faces().sort_by_distance((7, 0, 19))[0], amount=5, dir=(0, 0, 1))
_plate3 = tap(_plate2, "M4", at=(18, 0, 4), depth=6, axis=(0, 0, -1))
result = {"Plate": _plate3.fillet(2, [*_plate3.faces().sort_by_distance((7, 0, 24))[0].edges()])}
Play the ribbon tutorial →
Hover a tool. Shortcuts match the app: B C O K create, Q H F X L V modify, I measure, D drawings, P slice.

Select a face, press K: rectangles, circles, polygons and slots with grid snap. Stored as an editable block that is also a real Sketch the agent can extrude, cut or revolve.
ISO metric (M4) and Unified inch (1/4-20, #10-32): tap drill, clearance, hex and socket heads, nuts and washers from the tables. tap(part, "M4", …) cuts the hole and drawings call it out as M4×0.7.
Every top-level number is a field. Measure snaps to vertices, edges and faces: lengths, radii, angles, hole spacing, mass, clearance between bodies.
Planes, cylinders, cones, spheres, tori and B-splines from OCCT. The display mesh has exact normals; the geometry underneath is analytic.
Most parts stop here. File ▸ Export gives you what a slicer or another CAD package needs, and one press of Drawings on the ribbon turns the model into a drawing you can hand to someone.
The things you reach for once the first parts are done.
Parametric script parts and exact STEP parts with thumbnails and tags. Insert from the Browser with + Part, save any body to it, and the agent searches it before modelling a standard part.
Drop a .step on the viewer: as a new body in the current design, as a new design, or straight into the library. Exact, and referenced from the script so the design stays reproducible.
Attach photos, sketches or old drawings to a message. The agent reads them directly; the dimensions you type override what it estimates.
Claude Opus 5.5 by default. Settings for the model, effort, max steps, thinking summaries, web tools, standing instructions and MCP servers (stdio, http, sse) with live connection status. Restart the session in place.
Rename, delete and add bodies, set parameters, sketch blocks and ribbon operations are AST rewrites of the same file. Every build is kept in history; Undo steps back through it.
123 unit and API tests run in seconds with no Claude calls. 26 agent evals run the real agent headless and grade geometry, programs and answers deterministically, with cost and steps per case.

Have a CNC router? Describe the job the way you would brief a machinist and the agent writes a second script, cam.py, against a small API: section, holes and stock_minus taken from the exact model; face, contour, pocket, adaptive, drill and parallel3d for the cuts. The GRBL post checks travel, spindle range, feeds and depth against the machine you picked and tells you before you press run.
The first lines of the exported G-code:
Personal projects, hobby making, research, education, and use by charities, schools and public institutions. Full source, every feature, no account, no telemetry. PolyForm Noncommercial 1.0.0.
Using it in a business, in products or services, or as part of paid work. One licence per person who uses it, billed yearly in Australian dollars, same software. Buy online with the number of users you need; tax is added at checkout where it applies, and the receipt is your licence record, nothing to install or enter. Questions and volume or site licences: agenticcad@prodevelop.com.au. Terms of sale.
Simulated replays of real sessions: the chat, the tool calls, the code and the exact meshes at every step were generated by the kernel, not drawn. Play them, pause them, scrub them.