The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Apolo Cad listing page.
English · Español
An agent-native 3D parametric CAD for industrial machinery.
Built to be driven by an AI agent (Claude Opus or others) over MCP — or by hand in your browser.
Apolo is a headless parametric CAD for designing real machines. Its edge isn't the kernel (it uses OpenCascade, like FreeCAD) but its agent-native architecture:
Every operation is a command against an API. The whole document is an editable command log. And the same JSON Schemas that generate the UI also generate the agent's tools. One single source of truth.
The upshot: an AI agent can design complete machines end to end —not just autocomplete— and verify them: detect interferences, simulate gravity, look at a render (vision) and emit fabricable shop drawings. It's STEP-interoperable, drivable by a human or an AI, and usable as a headless backend that other tools/agents call.
MVP vertical: conveyors / material handling.
"=expression" (=width-2*profile).
Changing a variable regenerates the whole model.create_belt_conveyor, create_take_up): they
inherit parametric editing, undo, BOM and agent exposure for free.You mostly operate Apolo by talking to an agent. It exposes 79 MCP tools, so any
MCP-compatible client (Claude Code, Claude Desktop, etc.) running a capable model —Claude Opus
or others— can design entire machines. The repo ships a .mcp.json:
With the server up, you ask your agent in plain language:
"Design a 4 m × 600 mm belt conveyor for 1–15 kg parcels, with a hollow-shaft gearmotor and gravity-type take-up tensioning. Check there are no interferences and show me a render."
And the agent:
run_batch (atomic batches: one regenerate, one undo step), referencing
parts from the same batch with $k and dimensions with =expression.render_view (returns an image → vision), get_topology, measure.check_interference, engineering_check, gravity_test (simulates what
falls).drawing / drawing_set / assembly_manual → shop drawings, cut lists,
BOMs and step-by-step assembly manuals.The write core is minimal (run_command / run_batch / edit_command + undo/redo +
set_variable) and covers the entire command registry — there is no tool per command. The
rest of the 79 tools are for reading, perception, drawings and validation. Everything the agent
does lives in the log: editable, undoable and reproducible. Changes show up live in the
browser.
A three.js viewport with PBR materials, shadows and a ViewCube; a schema-driven ribbon (Create / Sketch / Modify / Assemble / Library / Robotics); a parametric properties panel; "pro CAD" shortcuts (move/rotate with snap, isolate, fit, measure, section). The agent and the UI are two equal clients of the same API: what one does, the other sees.
| Belt conveyor — maintenance lift, a declared motion study | Folding door — wood + translucent glass |
|---|---|
![]() | ![]() |
Everything above is produced by the engine itself: shaded renders and animations come from
render_view / motion.gif (VTK) — the very images the agent looks at to review its own work.
The animation is a named motion study: the agent declares the joint keyframes, then scans the
whole travel for collisions.
Clean, non-negotiable boundaries: kernel (pure geometry) ⟂ commands/registry (operations +
schemas) ⟂ doc (log/state) ⟂ api (transport) ⟂ agent/mcp (AI clients) ⟂ ui. Designed to
scale (many commands, modules and clients).
create_belt_conveyor, create_weldment, create_frame, create_sheet_metal,
create_take_up, create_drive_roller, robot arm). BOM with cut list and CSV export.engineering_check (vertical rules: belt speed, motor torque,
support…), check_interference (OCCT booleans), and gravity-based assembly validation
(declare joints/grounds and simulate what falls with convex hulls in MuJoCo).drawing(spec)) the agent composes.ANTHROPIC_API_KEY) for the AI assistant embedded in the UIOpen http://localhost:8000. To connect an agent over MCP, keep the server running and point
your MCP client at the repo's .mcp.json. Optional env vars: APOLO_MODEL (default
claude-opus-4-8), APOLO_DB (SQLite path).
They cover the kernel (per-command volumes/bboxes), the document (undo/redo, incremental
regeneration, .apolo round-trip), expressions and variables, library/BOM/super-commands,
assembly and kinematics, validations (rules, interferences, gravity), drawings, physics and the
MCP client.
.apolo formatA ZIP with manifest.json (version, name, units, visibility) + commands.json (the full log) +
attachments/. Opening a file = replaying its log. Geometry is never serialized → KB-sized
files and cheap autosave.
A coherent, well-architected MVP within its niche: a FreeCAD-level kernel with an agent-native capability no big CAD has. It does not chase feature-for-feature parity with Fusion/SolidWorks (it's a wedge, not a general replacement). Deliberately out of scope: CAM, real FEA, PCB, multi-user cloud.
MIT © 2026 Mario Rojas.
Built on excellent free software: OpenCascade (LGPL), build123d (Apache-2.0), FastAPI (MIT), three.js (MIT) and MuJoCo (Apache-2.0).