bherbruck/solvecraft
An open-source, clean-room reimplementation of Autodesk Fusion 360 in pure Rust. Parametric 3D CAD for desktop, browser, and AI agents via MCP.
About bherbruck/solvecraft
bherbruck/solvecraft is an open-source project on GitHub, mainly written in Rust. An open-source, clean-room reimplementation of Autodesk Fusion 360 in pure Rust. Parametric 3D CAD for desktop, browser, and AI agents via MCP. It currently holds 468 stars and 35 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).
Project Overview
AI Homed tracks it on the Today's Trending board.
GitHub Repository Details
README
SolveCraft
Parametric 3D CAD; an open-source, clean-room reimplementation of Autodesk Fusion 360, built in pure Rust.
Sketch, constrain, and build solids with a parametric feature timeline. Change a dimension and watch your model rebuild. Run it on your desktop, in your browser, or let AI agents model through the built-in MCP server. Part of the storytold "craft" family.
Start with an empty design and draw the original parametric electronics enclosure in the English desktop UI: rounded corners, a shell, a USB port sketched directly on the wall and a four-boss pattern. Change width from 80 → 100 mm and wall thickness from 2 → 3 mm in Parameters and watch it rebuild. Original animated pointer and click cues; 4× playback. Full video, generated with the demo script.
Documentation: the SolveCraft book (user guide, developer guide and command reference; sources in docs/book), and the web app to try it in the browser.
Status: early but usable for simple parts. 76 of 76 reference parts built in Fusion rebuild in SolveCraft with the same volume, area and topology (docs/oracle.md); command parity with Fusion's Design workspace is tracked in docs/parity.md. Open work and known bugs are in GitHub issues, and help is welcome: see CONTRIBUTING.md.
What works
- Sketches on origin planes, offset planes or planar faces: lines, rectangles, circles,
- Constraints and dimensions solved by our own solver (damped Gauss–Newton with
- Profiles found automatically, including regions split by lines and holes inside outlines.
- Features on a parametric timeline: extrude, revolve, sweep, loft, fillet/chamfer,
- Parameters and configurations with unit-aware expressions (
2 * width + 5 mm,
angle / 2), ordered rules, feature suppression and per-row body materials/appearances.
- Assemblies with nested components and occurrences, joints, motion studies, contact sets,
- Sheet metal with flanges, hems, fold/unfold/refold, material cutouts, flat patterns,
- Files: designs as JSON (
.solvecraft), export to STEP (AP242 with body names, colours and
.step/.stp/.igs/.iges file, insert one into a
design, or drop it on the window (docs/step-import.md).
- Desktop app (egui + wgpu): toolbar with workspace tabs, browser, timeline, 3D viewport with
- Headless CLI
solvecraft-cli: run command scripts, measure (volume, area, centre of mass,
- MCP server
solvecraft-cli mcp: AI agents model, measure and look at parts headless or
Build and run
cargo run --release -p solvecraft -- --sample # desktop app with a sample part
cargo run --release -p solvecraft-cli -- commands # the command registry
cargo run --release -p solvecraft-cli -- run examples/bracket.json --out bracket.step
cargo run --release -p solvecraft-cli -- snapshot examples/bracket.json --out bracket.png
cargo run --release -p solvecraft -- part.step # open a STEP file as a new design
cargo run --release -p solvecraft-cli -- eval part.step # measure an imported STEP file
cargo xtask ci # fmt, clippy, tests, assets, layers, wasm
Windows builds: cargo xwin build --release --target x86_64-pc-windows-msvc -p solvecraft.
In the browser: cd apps/solvecraft-web && trunk build --release --public-url ./ (WebGPU, or
WebGL2 with ?webgl; ?sample opens the sample part).
Scripts
A script is a JSON list of commands, the same ones the UI runs:
{"commands": [
{"command": "sketch.create", "params": {"plane": "XY"}},
{"command": "sketch.rectangle.two_point", "params": {"p0": [0, 0], "p1": [40, 30]}},
{"command": "solid.extrude", "params": {"distance": 20}},
{"command": "solid.fillet", "params": {"edges": [[0, 0, 10]], "radius": 3}}
]}
AI agents (MCP)
solvecraft-cli mcp is a Model Context Protocol server on
stdio. Headless it runs its own design session; with --connect 127.0.0.1:PORT it drives the app
started with solvecraft --control PORT, so you can watch the agent model. Tools:
list_commands, execute, batch, inspect_design, measure, body_topology,
set_parameter, screenshot (returns the image), export, undo, redo, new_design, open,
save. Claude Code: claude mcp add solvecraft -- solvecraft-cli mcp. Details, client
configuration and an example session: docs/mcp.md.
Architecture
| Layer | Crates | Role |
|---|---|---|
| L0 | geom | vectors, planes, profiles, meshes and their measures |
| L1 | sketch, kernel, render | constraint solver and profiles; the B-rep kernel boundary (truck); view math and CPU rasterizer |
| L2 | doc | parameters, expressions, the feature timeline and its incremental evaluation |
| L3 | io | design files, STL/OBJ/STEP/3MF export, STEP and 3MF/STL import features |
| L4 | engine | the session and the command registry (everything is a command) |
| L5 | ui-egui, mcp | the swappable desktop front end; the MCP server (headless or bridged to the app) |
| apps | solvecraft, solvecraft-cli | desktop app, headless CLI |
Contributing
See CONTRIBUTING.md: how to build and test, the code map, the clean-room and licence rules, and where help is wanted most.
Licence
MIT OR Apache-2.0, at your option. SolveCraft is not affiliated with Autodesk; Fusion is a trademark of Autodesk, Inc.