The Problem
CAD software is a closed, proprietary market. Existing kernels (Parasolid, ACIS, OpenCASCADE) are either expensive, complex, or not designed for integration with modern AI tooling. vcad addresses this by building an open-source, parametric BRep kernel in Rust that compiles to WebAssembly, making it embeddable in web apps, desktop apps, and AI agent workflows.
What This Does
vcad is a portfolio of five self-contained projects: a Rust kernel (crates/), a TypeScript web app (packages/), an AI evaluation harness (mecheval/), a Supabase backend (supabase/), and a small services folder. The kernel covers solid modeling, sketching, assemblies, simulation, and STEP import/export. The TypeScript side includes a React/Three.js app, an MCP server for AI agents, and a wasm bridge.
The README.md documents a complete feature set: primitives, booleans, fillets, sweeps, lofts, assemblies with joints, physics via Rapier3D, and ray tracing. The changelog/ directory shows active development through early 2026, including AI text-to-CAD and CAM toolpaths.
How It Is Wired
Execution starts at crates/vcad-cli/src/main.rs:217 in main, which reaches 399 functions. The CLI entry point (vcad export input.vcad output.stl) drives the kernel through crates/vcad-cli/src/repl.rs:81 (execute, 303 functions). The kernel's core is crates/vcad-kernel-geom/src/lib.rs with 177 functions (16 types), defining evaluate, normal, d_du, d_dv, domain. The unified API in crates/vcad/src/lib.rs is called from 84 files and provides alloc_node_id, vertices, indices, and to_mesh.
The most critical functions are insert (called from 192 places), is_empty (185), and abs (145). The to_crdt_params -> insert edge (85 calls) shows the CRDT sync path. One traced network path: main -> run_login -> poll_for_token -> poll_for_token_async reaches client.get(&url).send. The packages/app/src/data/examples/index.ts participates in a circular import cycle.
How To Use It
# Clone the sibling dependency first (required)
git clone git@github.com:ecto/tang.git ../tang
# Rust kernel
cargo test --workspace
cargo clippy --workspace -- -D warnings
# Web app
npm ci
npm run dev -w @vcad/app
# Desktop (Tauri v2)
npm run tauri:dev
The CLI is cargo install vcad-cli then vcad export input.vcad output.stl. The MCP server is npm install -g @vcad/mcp. Configuration lives in .github/PROJECT_SETUP.md and .claude/ for agent workflows.
Real-World Use
A parametric part library for a manufacturing company: engineers design parts in the web app, the kernel generates STEP files for CNC, and an AI agent uses the MCP server to create variants. The Rust library API is direct:
use vcad_kernel::Solid;
let solid = Solid::cube(100.0, 60.0, 20.0);
let hole = Solid::cylinder(10.0, 25.0, 32);
let result = solid - hole;
let mesh = result.to_mesh(32);
Code Health & Issues
Static analysis found 288 issues (81 high, 207 medium). The critical one: ANTHROPIC_API_KEY is committed in .github/workflows/fix-ci.yml, exposing a credential to PR-triggered workflows. Three other high findings: unpinned GitHub Actions (tag-based, vulnerable to supply-chain attacks), discarded exit codes in ci.yml, and 42 deeply nested blocks in crates/stepperoni/src/parser.rs. The 1,634 duplicated 6-line blocks across 280 files suggest significant copy-paste in kernel STEP entities.
Repository hygiene is solid: tests present, CI, Dockerfile, license, lockfile. The packages/kernel-wasm/vcad_kernel_wasm_bg.wasm (9.5MB) and similar blobs should move to Git LFS.
The Bottom Line
A serious, well-structured attempt at an open-source CAD kernel with real depth across modeling, AI integration, and deployment. The security issues in CI workflows are actionable and should be fixed before public contribution. Worth evaluating if you need embeddable, AI-friendly CAD that runs in the browser.