Skip to the content
2 layers78 × 60 mmIce viz, the printed circuit board in 3D

BRep CAD kernel in Rust/WASM

Size
78 × 60 mm
Copper layers
2
Thickness
1.6 mm
Parts
44
Nets
54
Pads
249
Tracks, vias
794, 287
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
27 Jan 2026
Updated
8 Nov 2026

Overview

Ice viz is an open-source printed circuit board by muni-works, from the muni-works/vcad repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 78 × 60 mm with 44 parts on 54 nets, routed with 794 tracks and 287 vias.

It is built around the RP2040, ICE40UP5K-SG48I and W25Q128JVSIQ, with the W25Q32JVSSIQ, AMS1117-1.2 and AMS1117-3.3 among its other parts. Its parts include 19 capacitors, 10 resistors, 6 ICs, 4 connectors and 2 diodes. It belongs with the RP2040 and FPGA and CPLD boards of this library.

Main components

6

README

README.md

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 phyz, 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.

Native Mac App

A native SwiftUI app lives in apple/VcadApp (macOS only; other platforms use the web app). Build it from source:

bash
apple/VcadApp/build-ffi.sh   # build the vcad-ffi kernel static library
apple/VcadApp/bundle.sh      # assemble dist/vcad.app
open apple/VcadApp/dist/vcad.app

CLI

bash
cargo install vcad
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:

bash
npm install -g @vcad/mcp

Tools: create_cad_document, export_cad, inspect_cad, gym_step, gym_reset

Rust Library

rust
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

text
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 and the phyz physics workspace at sibling paths (../tang, ../phyz). Clone both next to vcad before any cargo command, or the workspace will fail to resolve:

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

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

# Native Mac app (macOS + Xcode command-line tools)
apple/VcadApp/build-ffi.sh && apple/VcadApp/bundle.sh

Export controls

The hosted services (vcad.io and mcp.vcad.io) are not available in jurisdictions subject to U.S. sanctions and export controls — currently Russia, Belarus, Iran, Cuba, North Korea, Syria, and the Crimea, Sevastopol, Donetsk, and Luhansk regions of Ukraine. Users must comply with all applicable export laws. The open-source code in this repository is not affected and remains available to everyone. Details in docs/export-controls.md.

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.

Parts

44
QtyValueFootprintReferences
13100nFC_0603C1, C2, C3, C4, C5, C6, C11, C12, C13, C14, C17, C18, C19
310uFC_0805C8, C9, C10
210kR_0603R6, R10
21kR_0603R5, R7
227R_0603R3, R4
227pFC_0603C15, C16
2330R_0603R8, R9
25.1kR_0603R1, R2
112MHzCrystal_3225Y1
11uFC_0603C7
1AMS1117-1.2SOT-223U6
1AMS1117-3.3SOT-223U5
1BOOTSELSW_SMD_2PSW2
1FPGA-IOPinHeader_1x10_P2.54mmJ4
1ILI9341-LCDPinHeader_1x14_P2.54mmJ2
1RESETSW_SMD_2PSW1
1RP2040QFN-56U1
1SWDPinHeader_1x03_P2.54mmJ3
1USB-C-16PUSB-CJ1
1W25Q128JVSSOIC-8U2
1W25Q32JVSSSOIC-8U4
1greenLED_0603LED1
1iCE40UP5K-SG48IQFN-48U3
1redLED_0603LED2

Similar boards

  • 4 layers68.7 × 53 mmIcey, the printed circuit board in 3D

    Icey

    darshg321/Icey

    an Uno-sized FPGA iCE40-UP5K board for learning!

    113 parts6CERN-OHL-P-2.0
  • 4 layers47.3 × 49.6 mmCH569Board, the printed circuit board in 3D

    CH569Board

    kitspace-test-repos/kicad6-file-collection

    39 partsMIT
  • 4 layers22.9 × 61 mmPico ice, the printed circuit board in 3D

    Pico ice

    tinyvision-ai-inc/pico-ice

    Raspberry Pi PICO board + Lattice iCE40 FPGA's

    109 parts203MIT
  • 6 layers80 × 60 mmIce core, the printed circuit board in 3D

    Ice core

    enkhbold470/ice-core

    iCE40UP5K FPGA board with 8 MB PSRAM and three Pmods, programmed over USB-C by an RP2040. 6-layer KiCad 10 board.

    78 partsCERN-OHL-S-2.0
  • 4 layers82 × 34 mmFiber phantom, the printed circuit board in 3D

    Fiber phantom

    jayis1/hacker-devices

    Full-cycle hardware designs for security research devices — each device is a subfolder with its own README, schematics, PCB layout, and software stack

    17 parts2
  • 4 layers106.2 × 89.3 mm3CH AWG TIA v103, the printed circuit board in 3D

    3CH AWG TIA v103

    GrandFatherPikhto/3CH-AWG-TIA

    3 Channels AWG Tia Generator on 10CL006, AD9707, ADA4807-2

    1,135 parts
  • 2 layers104.1 × 71.1 mmMinifp, the printed circuit board in 3D

    Minifp

    eigenco/frankenpi

    This is an experimental project to connect Raspberry Pi with the help of cheap Cyclone IV FPGA board to 8-bit ISA bus to act as multiple different devices.

    69 parts139
  • 2 layers94.5 × 74.4 mmAx58100-stm32-ethercat, the printed circuit board in 3D

    Ax58100-stm32-ethercat

    MetalMusings/MyOwnEtherCATDevice

    Documentation accompanying the "Make My Own EtherCAT device" video serie on Youtube.

    184 parts93

Questions

How big is the Ice viz PCB?

It measures 78 × 60 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ice viz use?

44 parts, built around the RP2040, ICE40UP5K-SG48I, W25Q128JVSIQ and W25Q32JVSSIQ. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ice viz KiCad files?

From the muni-works/vcad repository on GitHub, at the commit this page was made from: the board is examples/ice-viz/fab/ice-viz.kicad_pcb and its schematic examples/ice-viz/fab/ice-viz.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ice viz design in my own project?

Its repository publishes it under the Apache-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).