Skip to content

ecto/vcad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

960 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vcad mascot

vcad

Open-source parametric CAD for the AI era.

Try it now →

vcad screenshot

Features

  • Modeling — Primitives, booleans, fillets, chamfers, shell
  • Sketching — 2D constraints, extrude, revolve, sweep, loft
  • Assembly — Parts, instances, joints, forward kinematics
  • Simulation — Physics with Rapier3D, gym-style RL interface
  • Import/Export — STEP import, STL/GLB/STEP/DXF export
  • Rendering — Direct BRep ray tracing + tessellated mode
  • Cloud — Supabase sync with Google/GitHub auth

Use vcad

Web App

Visit vcad.io — no install required.

Desktop App

Download the installer for your platform from the latest release:

  • macOS — universal .dmg (Intel + Apple Silicon)
  • Windows.msi installer
  • Linux.AppImage, .deb, or .rpm

First launch on macOS

Releases are not yet notarized with Apple, so on first launch macOS shows "Apple could not verify 'vcad.app' is free of malware". To open it:

  • macOS 15+ — open System Settings → Privacy & Security, scroll to the "vcad was blocked" notice, click Open Anyway, then re-launch vcad.
  • Earlier macOS — right-click vcad.app in /Applications and choose Open, then Open in the confirmation dialog.
  • From Terminalxattr -d com.apple.quarantine /Applications/vcad.app removes the quarantine flag so the app launches normally.

You only need to do this once per install. We'll remove this step once Apple Developer signing is set up.

CLI

cargo install vcad-cli
vcad export input.vcad output.stl
vcad import-step input.step output.vcad

MCP Server (AI Agents)

The MCP server lets AI agents create and manipulate CAD models:

npm install -g @vcad/mcp

Tools: create_cad_document, export_cad, inspect_cad, gym_step, gym_reset

Rust Library

use vcad_kernel::Solid;

// Create a box with a hole
let solid = Solid::cube(100.0, 60.0, 20.0);
let hole = Solid::cylinder(10.0, 25.0, 32);
let result = solid - hole;

// Export to mesh
let mesh = result.to_mesh(32);

See crates/vcad-kernel for the full API.

Architecture

vcad/
├── crates/           # Rust BRep kernel (~35K LOC)
│   ├── vcad-kernel/  # Unified API
│   ├── vcad-kernel-topo/    # Half-edge topology
│   ├── vcad-kernel-booleans/# Boolean operations
│   └── ...           # 20+ modular crates
├── packages/         # TypeScript
│   ├── app/          # React + Three.js web app
│   ├── mcp/          # MCP server for AI agents
│   └── ...
└── supabase/         # Database migrations

Development

Heads up: vcad depends on the tang math workspace at a sibling path (../tang). Clone it next to vcad before any cargo command, or the workspace will fail to resolve:

git clone git@github.com:ecto/tang.git ../tang
# Rust
cargo test --workspace
cargo clippy --workspace -- -D warnings

# TypeScript
npm ci
npm run dev -w @vcad/app   # Run web app locally

# Desktop (optional — Tauri v2 shell)
# Ubuntu/Debian system deps:
#   sudo apt install libgtk-3-dev libwebkit2gtk-4.1-dev librsvg2-dev \
#                    libsoup-3.0-dev libatk1.0-dev
# macOS: Xcode command-line tools
# Windows: WebView2 (shipped with Win11)
npm run tauri:dev          # launches desktop window against the dev server
npm run tauri:build        # produces a signed/unsigned installer

License

Copyright © 2026 Municipal Robotics Corporation

Licensed under the Apache License 2.0. See NOTICE for attributions. Contributions are accepted under the same license per the Apache 2.0 Section 5 inbound-equals-outbound rule.

About

BRep CAD kernel in Rust (and WASM)

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors