Arbor
Pre-release

Desktop kernel · open source

Parametric CAD.
Native ECAD.
Zero cloud.

A local suite for parts, boards, and toolpaths. History lives in SQLite. Solids live in OpenCASCADE. The STEP file never phones home.

Loading viewport

Drag height, bore, and across-flats. Switch Sketch / Solid / Trace / Path.

On the machine

Four systems.
One document tree.

Part studios, assemblies, drawings, CAM, simulation, render, and PCB sit in the same local project. The full module map lists every studio, including scaffolds.

PDM

Local-first versioning

Every check-in is a row in SQLite. WAL on disk, checkout on the feature tree, release states without an account. Path: .cad_workspace/*.cad_db

  1. r16HEAD fillet R4checked out
  2. r15hole Ø6.8
  3. r14extrude 8 mm
  4. r13sketch locked

ECAD

Board in the same tree

Snap routing, DRC profiles, Gerber and Excellon out. Sized for a Voltera mill, not a fab portal.

Assembly

Snap, then mate

Concentric and coincident snaps lock before the dialog stack appears. Instances stay in a local BOM.

CONCENTRIC

Sculpt

T-spline cage

Control mesh in orange. Subdivided surface in vellum. Organic bodies sit next to BREP extrudes in the same studio, not a separate clay app.

Runtime stack

What the binary is made of

The landing page is Next.js. The product is not. Arbor runs as a Tauri desktop app with a Rust sidecar and an OpenCASCADE worker. Full numeric limits and schema notes: specifications.

git clone \
  https://github.com/Eerielettuce3717/arbor-cae.git
Arbor runtime stack by subsystem
SubsystemStackBound to
WindowTauri 2Native shell. No Electron tax.
Kernel I/ORustPDM, CAM post, filesystem, workers.
SolidsOpenCASCADEBREP, STEP, boolean, mesh buffers.
ViewportWebGL / ThreeGPU mesh, view cube, sketch overlay.
HistorySQLiteLocal revisions, WAL, release states.
ECADPixiJS + DRCSnap routing. Gerber / Excellon.
CAM2.5D pocketZigzag clear. Fanuc post.