Agent-first, headless, git-native CAD. Models are canonical text; STEP,
drawings, and Gerbers are build artifacts.
pip install gitcad # mech + ecad + MCP server + exact kernel (0.9.13)
One install brings the whole platform: gitcad-core, gitcad-mech,
gitcad-ecad, the gitcad-mcp MCP server, and the exact-arithmetic
forge kernel (forgekernel, with the
forgekernel_rs native build on common platforms). No OCCT — the kernel refuses
by name rather than approximate (ADR-0020).
from gitcad.mcp.server import REGISTRY as tools
m = tools["model_new"]()["model"]
r = tools["feature_add"](model=m, op="box", params={"dx":60,"dy":40,"dz":8})
m = r["model"]
tools["model_validate"](model=m) # machine-readable checks
tools["model_export"](model=m, path="part.step")
tools["model_drawing"](model=m, path="part.pdf") # dimensioned 4-view drawing
from gitcad.ecad import Board, MountingHole, export_fab
b = Board(name="blinky", outline=[(0,0),(30,0),(30,20),(0,20)])
b.mounting_holes += [MountingHole("mnt_1", 3, 3, 3.2, thread="M3")]
export_fab(b, "fab/") # Gerber X2, Excellon (PTH+NPTH), pick-and-place
Every mounting hole is simultaneously fab data and a published mech.bolt
port in the board's derived part.json — the enclosure mates against it.
See the Part standard.
gitcad-view part.gitcad.json # live 3D viewer at localhost:8137
gitcad-view board.gitcad.json # 2D board render
Zero-dependency WebGL viewer with live reload — edit the model text (or let
an agent edit it) and the view updates in a second.