NARU
NARU — A WebGPU-native engine for massive CAD and BIM

Engineering models on the open Web, at scale.

An open-source studio, compiler, and WebGPU runtime for massive CAD, BIM, and engineering scenes. Delivery is standard glTF 2.0 over plain HTTP Ranges — this entire demo is served by GitHub Pages, with no backend and nothing to install.

▶  Launch the Studio — Digital Hub IFC federation PyGamer STEP assembly

Requires a WebGPU-capable browser (current Chrome, Edge, or Firefox; Safari from Safari 26 on macOS 26). You can also open your own compiled .gltf package — it loads entirely client-side.

Proven in the browser, not promised

Every card below is a committed evidence record that CI re-validates on every merge. The screenshots are the exact captures those records pin by digest — click through for the numbers, hardware, and the commands that reproduce them.

Adafruit PyGamer STEP assembly rendered and picked in the NARU Studio

A real STEP assembly, end to end

Adafruit's PyGamer board: 85 part occurrences sharing 34 meshes, 162,838 unique triangles, and source-aware picking — identical behavior in Chrome and Firefox.

Browser matrix evidence →
First coarse frame of the sixty5 IFC federation

A real-large IFC federation in seconds

The 839.9 MB seven-discipline sixty5 model reaches a first coarse frame of all 78,173 renderable occurrences in a 4.3 s median — down from a 268.0 s baseline.

First-frame evidence →
The sixty5 federation rendered under a fixed 64 MiB residency budget

Memory stays inside a declared budget

Fixed 64 MiB decoded and GPU budgets hold at any scene size; chunks the budget cannot take are priced from the compiled document and never downloaded.

Residency evidence →
A picked foundation beam resolving its IFC property sets

Selection resolves source identity

A picked foundation beam resolves to its source IFC entity and lazily fetches its property sets from the package sidecar — no Scene IR intermediate in the browser.

Real-large browser evidence →
A mixed coarse and target-detail frame during progressive loading

A useful frame before full detail

A coarse WebGPU frame renders before the first target Range completes, and mixed coarse/target frames follow per completed range — recorded under a delayed network.

Browser matrix evidence →
View-priority scheduling cancelling an obsolete range request

Camera moves cancel stale downloads

Panning aborts the obsolete Range request and its Worker decode, and the newly hottest chunk is requested first — in Chrome and Firefox.

Browser matrix evidence →
A sectioned 0.25 mm plate gap rendered 10,000 km from the origin

Precision 10,000 km from the origin

A 0.25 mm plate gap compiles with ≤ 0.001 mm error and renders with zero pixel drift between near and far scenes, through navigation, sectioning, and picking.

Precision evidence →
Spatial demand partitioning requesting only visible-leaf chunks

Only the view's geometry is demanded

An opt-in compiler-built BVH lets a localized view demand 152 instead of 209 of 234 chunks on the same federation, cancelling obsolete Ranges before their bodies arrive.

Spatial demand evidence →

Evidence-gated by construction

Compiles are deterministic — two full runs of the same source produce byte-identical JSON, binaries, and reports — and unchanged sources restore from a verified persistent cache in seconds (cache evidence, ADR-0009). The roadmap advances only when a capability is reproduced in this repository: validators hardcode digests and counts on purpose, and pnpm check re-runs all of them in CI. Read the roadmap and the Phase 1 completion report.