OpenCascade.js

The OpenCASCADE 3D CAD kernel, compiled to WebAssembly with full TypeScript bindings. Build solids, run booleans, fillet edges, mesh, and read/write STEP — in a browser tab, a Node CLI, or an LLM tool call. Trim the wasm to the symbols you need, or extend it with your own C++ — no fork required.

FAQ — fork status, maintenance, contributing →

Used by

See all projects →

V3 upgrades OCCT to V8 and modernizes the toolchain for the agentic, browser-first era.

This is not a maintenance bump. V3 retargets the bindings at coding agents and modern bundlers — the same wasm runs unchanged in a Vite tab, a Bun CLI, and a Cursor agent tool call.

OCCT V8

First WebAssembly binding to track OCCT V8 — BRepGraph, modern differential property packages, NCollection size_t migration, Gordon surface construction.

Agent-native

Every page is an .mdx resource. /llms.txt indexes the surface. Suffix-free symbols read like the C++ docs — LLMs hit the right overload without a lookup table.

Browser-first

ESM single-file, Vite / Next / Bun ready, COOP/COEP-aware threading, multi-arch GHCR images so Apple Silicon and Linux build the same bytes.

Read the V3 breaking changes →

What's new in V3

ESM-only build

One wasm, one init() Promise. No CommonJS.

Suffix-free symbols

gp_Pnt, not gp_Pnt_3. Overloads dispatched in C++.

using disposables

Every shape implements Symbol.dispose for scope-exit memory management.

Multi-threaded WASM

1.24× geomean on mixed CAD. Opt in via /multi.

See full release notes →