CADForge

An IFC-native BIM authoring engine in Rust — with a real family system.
An engine becoming an application: it opens a window, and you can draw in it.

Early development · v0.2.0 249 tests IfcOpenShell-validated MPL-2.0 Tested: Windows · macOS · Linux Targeting: Android · iOS
Status: not production ready. CADForge reads and writes IFC, authors a building semantically, flexes parametric families, cuts openings, renders on the GPU, opens a window you can drop an IFC file into, and lets you draw walls, slabs, and columns in it. It has no constraints, no way to edit an element after drawing it beyond undo, and has never run on a phone. Everything claimed on this page is measured; everything unbuilt is named.

Why it exists

Every serious new BIM authoring tool in 2026 — Motif, Arcol, Qonic, Snaptrude, Forma — is cloud/browser-first and closed. Every open one is desktop-only. Nobody ships a native, offline-capable, openBIM authoring application that runs on a tablet as well as a workstation, and nothing in the open AEC ecosystem has a family system at all.

Shapr3D proved the native-plus-tablet posture works commercially in mechanical CAD. Nobody has done it for AEC. That is the gap.

It draws

A rectangular room of four walls with a floor slab and two columns, drawn with the authoring tools and rendered on the GPU.
Drawn with the tools, not authored in code — and every click deliberately aimed 29 mm off. Snapping is what makes the eight wall ends meet exactly rather than nearly.
Four walls forming a room, with a timber door standing in one wall, rendered on the GPU.
Four walls and a hosted door, rendered headlessly through wgpu.
The same room with the door hidden, showing the rectangular opening cut through the wall.
Door hidden. The dark rectangle is a real boolean cut, not a texture.

In the first frame the doorway is invisible because the leaf fills its own opening to within the 10 mm frame clearance — correct, but it proves nothing. Hide the door and the cut has to be there.

What is measured

0
EXPRESS rule violations, per IfcOpenShell 0.8.5
520 MB/s
IFC scan throughput, 17.5 MB file
23/23
Corpus files round-trip with every element intact
249
Tests, zero clippy warnings

Exported IFC4 is checked against the reference implementation, not just against itself: every relationship resolves, geometry generates for every element from the swept solids alone, and every GlobalId survives a round trip.

Three decisions that shape everything

No webview for the viewport

WebGPU is absent from WKWebView and Android WebView, which would cap 3D at WebGL2 on three of four target platforms. The viewport is a native wgpu surface.

No B-rep kernel

There is no production-grade pure-Rust one. Fornjot ended without reaching its goals. Geometry is a deterministic parametric recipe; the mesh is a disposable cache.

The family system is the product

Typed parameters, named types, a recipe DAG, host behaviour. Placing a door expands into a real IfcOpeningElement, IfcRelVoidsElement, and IfcRelFillsElement.

Ten architecture decision records carry the evidence, the costs, and what would make each one wrong.

Try it

git clone https://github.com/ibuilder/CADForge
cd CADForge
cargo test --workspace
cargo run -p cadforge-shell --features gpu

# open a file in a window, then press 2 and click to draw a wall
cargo run -p cadforge-shell --features viewport --bin cadforge-viewport -- model.ifc

# or draw a room with no window at all, and export it
cargo run -p cadforge-shell --features gpu --example drawn_room

The demo authors four walls through commands, defines a parametric door family, places it as a hosted opening, cuts the wall, renders to out/demo.png, exports valid IFC4, undoes the entire session to an empty model, and redoes it. The drawn_room example does the same journey from clicks instead of code, and CI validates both files against IfcOpenShell.

Where it is going

PhaseState
FoundationcompleteDecisions, workspace, tests
Core modelcompleteCommands with exact inverses, revisions, undo
IFC outcompleteNative IFC4 writer, externally validated
IFC incomplete23/23 corpus files round-trip intact
RenderercompleteHeadless wgpu on real hardware
ViewportpartialWindow, orbit, GPU picking and section planes work; instancing and capped sections do not
Authoring toolspartialWall, slab, and column with snapping and undo; beams, hand-placed openings and constraints do not
MobileplannedAndroid first, then iOS

The honest blocker is vendor files. All 23 of buildingSMART's certification models now import and round-trip intact, but that corpus is clean and skews to infrastructure. It says nothing about a consultant's Revit export with duplicate GlobalIds, mis-nested placements, and geometry that fails to generate. Full roadmap →

View on GitHub API documentation Build plan Landscape research Changelog