A free browser-based experimental CAD workbench: draw walls/slabs/levels, try an AI CREATE agent, inspect BIM-like metadata, import/export common 3D formats, and experiment with IFC—no install required.
Live: https://wordingone.github.io/WEB-CAD/ · License: Source-Available
Disclaimer: WEB-CAD is an experimental tool for exploration and learning. It is not a substitute for professional design software, licensed architects, licensed engineers, or any licensed design professional. Output generated by this application (geometry, IFC files, drawings, exports) is not verified for structural safety, building code compliance, or constructability. Do not use output from this application as construction documents or as a basis for construction without independent review by appropriately licensed professionals. AI-generated content may contain errors. Always consult a licensed architect or engineer for any real-world building project.
WEB-CAD is an experimental workbench — not a production replacement for Rhino, Revit, or ArchiCAD. It runs entirely in the browser: no server, no API key, no install. The goal is to make basic parametric architectural modelling accessible from any device with a modern browser.
| Feature | Notes |
|---|---|
| Draw walls, slabs, columns, stairs, roofs, openings | DSL console or AI agent |
| AI CREATE agent | Type a natural-language prompt; Gemma 4 generates geometry |
| Levels / storeys | Named elevation planes; objects attach to levels |
| NURBS geometry | Revolve, sweep, loft — NURBS surfaces stored, IFC4 round-trip via IfcBSplineSurfaceWithKnots |
| Boolean ops | Union, difference, intersection on any two objects |
| IFC import/export | Load or save IFC4 files; round-trip via web-ifc; NURBS surfaces export as IFC4 B-spline entities |
| 3D format I/O | Import: IFC, STEP, GLB/GLTF, OBJ, STL · Export: IFC4, GLB, GLTF, OBJ, STL, STEP, 3DM, USDZ, SVG, DXF, PDF |
| BIM-like metadata | Select any element; sidebar shows IFC class, storey, GUID, layer |
| Scene panel | Hierarchy, format info, element counts |
| Cmd-K palette | Search commands, demos, and tools |
| Layout mode | 2D drawing sheets with linked section/plan viewports |
| Undo/redo | Full history stack |
| Session restore | IndexedDB auto-save; scene survives a page refresh |
Open the live URL above. No account required.
- Draw — pick a tool from the left palette (Wall, Slab, Column, …) and click in the viewport.
- AI agent — open the chat panel, type a description ("add a gabled roof over the house"), press Enter.
- Import — drag any
.ifc,.glb,.step,.obj, or.stlfile onto the page. - Export — click Export in the toolbar and pick a format.
The webcad MCP server lets Claude Code agents dispatch geometry verbs, inspect the scene, and capture viewport screenshots.
# Add to your .mcp.json:
{
"mcpServers": {
"webcad": {
"type": "stdio",
"command": "node",
"args": ["tools/mcp/webcad-mcp.mjs"]
}
}
}Tools: dispatch · list_verbs · get_verb_schema · list_scene_objects · get_viewport_image · slot_create/list/close
Slash commands: /scene (list scene objects) · /snapshot (capture viewport)
See docs/webcad-agent.md for behavior rules and docs/sample-prompts.md for example prompts.
git clone https://github.com/wordingone/WEB-CAD
cd WEB-CAD
bun install
bun run web:typecheck # strict tsc, no emit
bun run web:dev # http://localhost:5847 — hot reloadSee SETUP.md for the full environment guide and CONTRIBUTING.md for PR conventions.
| Format | Import | Export |
|---|---|---|
| IFC4 | ✓ (web-ifc) | ✓ (hand-emitted STEP-21, round-trip verified) |
| STEP / IGES / BREP | ✓ (OpenCascade WASM) | ✓ (STEP, when geometry originated from OCCT) |
| GLB / GLTF | ✓ (three.js) | ✓ |
| OBJ | ✓ (three.js) | ✓ |
| STL | ✓ (three.js) | ✓ |
| 3DM (Rhino) | — | ✓ |
| USDZ | — | ✓ |
| SVG / DXF / PDF | — | ✓ (layout mode) |
- Experimental. This is a research/prototyping tool. Geometry output is not structurally validated.
- AI agent accuracy varies. The in-browser Gemma 4 model works well for common schematic shapes; novel or complex prompts may need refinement.
- No collaboration. Single-user, single-tab. No server-side persistence.
- WebGPU required for AI. Browsers without WebGPU fall back to CPU inference (slower). The geometry viewer works without WebGPU.
- SharedArrayBuffer / multi-thread WASM requires COOP+COEP headers. GitHub Pages serves single-thread; any COOP+COEP-capable host (Vercel, self-hosted nginx) gets multi-thread.
- IFC schema coverage. Import handles IFC2×3 and IFC4. Export targets IFC4; round-trip verified via
IfcAPI.OpenModel. - English only. The AI agent prompt corpus is English.
- AI: Gemma 4 E4B-it (
onnx-community/gemma-4-E4B-it-ONNX), in-browser via Transformers.js v4 + WebGPU - Spatial SDK:
web/src/commands/spatial-api.yaml— typed dispatch contract for all geometry verbs; handler modules underweb/src/handlers/ - NURBS kernel: custom pure-JS NURBS curves + surfaces (
web/src/nurbs/) — no WASM dep, fully testable in Bun - Parametric geometry: replicad 0.20 (LGPL-2.1) + OpenCascade WASM
- IFC: web-ifc 0.0.77 (MPL-2.0)
- 3D viewer: three.js 0.162 (MIT) + OrbitControls
- Build: Vite 8 + TypeScript 5.3
web/ Browser app (Vite + TypeScript)
src/
main.ts Orchestrator (~170 LOC)
dom-events.ts DOM wiring, worker, file I/O, export pipeline
register-handlers.ts Handler registration (all Sd* verbs)
commands/ Dispatch, DSL, spatial-api.yaml SDK contract
agent/ AI agent harness, goal system
viewer/ 3D viewport, tools, gizmos, selection
handlers/ Per-domain handler modules (transforms, nurbs, structural, …)
geometry/ Layers, levels, grids, clipping planes, drafting
ifc/ IFC build + round-trip
io/ Loaders, exporters, scene store
shell/ Workbench layout, palette, modes
scene/ Scene panel
tools/ Create-mode tools (wall, slab, roof, openings, sketch)
nurbs/ NURBS kernel
scripts/ Bun scripts (audit, setup, CI helpers)
docs/
user/ End-user guides
dev/ Developer reference
internal/ Internal design notes
submission/ Hackathon submission artifacts (historical)
See CONTRIBUTING.md. Issues and PRs welcome.
Source-Available — see LICENSE for full terms.
Stack licenses: replicad LGPL-2.1, web-ifc MPL-2.0, three.js MIT.