vibecad
Conversational CAD: describe a part in English, get a printable parametric model
Describe a physical object in plain English and an agent models it in build123d, shows it in a live browser viewer, and writes out printable STL and STEP files. Every dimension is a named parameter, so “make the flange 2mm thicker” is a revision, not a redraw. It runs under Claude, Codex, and Grok, and the public repo carries the interface, the skill, and an example object; my parts library stays private.
How a part gets made
You launch an agent in the workspace and describe what you need. The agent writes a parametric model in build123d (Python on top of Open CASCADE), renders it, and you iterate one request at a time: look at the render, say what’s wrong, watch the model update, repeat until it stops being wrong. Each object lives in its own directory: the model source, the STL/STEP exports (rewritten on every run), and a notes file for object-specific decisions and gotchas, so coming back to a part months later doesn’t mean re-deriving why the wall is 2.4mm.
Because everything is a named parameter, later revisions stay parametric instead of degrading into one-off edits. When a real thread is needed, bd_warehouse generates actual ISO threads rather than an approximation. Printing goes through STEP export into Bambu Studio.
The interface
Say “bring the interface up” and the agent starts a local server and opens a browser page with three panels: a 3D canvas of the current model (per-face meshes, orbit controls), a collapsible live view of the model source, and a chat wired straight to the agent session.
The part I like most: ctrl+click any surface on the canvas to drop a [surface N] reference into the chat, then say “take this surface and make it wider”. The agent receives the message with the clicked face already resolved to its part, surface type, and dimensions, so “this one” means the same thing to both of us.
Where it came from
It started as exactly one part: a snap-in grommet for a 6mm hole in the foam on the Raptor. By the end of that same day it had a name, an interface, a skill, and thirty-one commits. My actual workspace (models included) stays private; the publishable subset lives on an orphan branch that becomes the public repo.
It’s a thin layer over excellent open-source tools (build123d, OCP’s Open CASCADE bindings, three.js for the canvas, FastAPI for the server), and the layer’s whole job is making them conversational.