wordingone/WEB-CAD

WEB-CAD — browser-native CAD with embedded LLM agent. Forked from gemma-architect 2026-05-24 for proprietary forward work; original frozen for Kaggle submission.

1

stars

1,782

commits

TypeScript

primary language

Jun 9, 2026

updated

README

WEB-CAD

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.


What it is

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.


Features

FeatureNotes
Draw walls, slabs, columns, stairs, roofs, openingsDSL console or AI agent
AI CREATE agentType a natural-language prompt; Gemma 4 generates geometry
Levels / storeysNamed elevation planes; objects attach to levels
NURBS geometryRevolve, sweep, loft — NURBS surfaces stored, IFC4 round-trip via IfcBSplineSurfaceWithKnots
Boolean opsUnion, difference, intersection on any two objects
IFC import/exportLoad or save IFC4 files; round-trip via web-ifc; NURBS surfaces export as IFC4 B-spline entities
3D format I/OImport: IFC, STEP, GLB/GLTF, OBJ, STL · Export: IFC4, GLB, GLTF, OBJ, STL, STEP, 3DM, USDZ, SVG, DXF, PDF
BIM-like metadataSelect any element; sidebar shows IFC class, storey, GUID, layer
Scene panelHierarchy, format info, element counts
Cmd-K paletteSearch commands, demos, and tools
Layout mode2D drawing sheets with linked section/plan viewports
Undo/redoFull history stack
Session restoreIndexedDB auto-save; scene survives a page refresh

Quick start (browser)

Open the live URL above. No account required.

  1. Draw — pick a tool from the left palette (Wall, Slab, Column, …) and click in the viewport.
  2. AI agent — open the chat panel, type a description ("add a gabled roof over the house"), press Enter.
  3. Import — drag any .ifc, .glb, .step, .obj, or .stl file onto the page.
  4. Export — click Export in the toolbar and pick a format.

MCP server (Claude Code)

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.


Quick start (dev)

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 reload

See SETUP.md for the full environment guide and CONTRIBUTING.md for PR conventions.


Supported formats

FormatImportExport
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)

Known limitations

  • 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.

Stack

  • 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 under web/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

Directory layout

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)

Contributing

See CONTRIBUTING.md. Issues and PRs welcome.


License

Source-Available — see LICENSE for full terms.
Stack licenses: replicad LGPL-2.1, web-ifc MPL-2.0, three.js MIT.

Contributors

wordingone

1,782 commits

wordingone/WEB-CAD

WEB-CAD — browser-native CAD with embedded LLM agent. Forked from gemma-architect 2026-05-24 for proprietary forward work; original frozen for Kaggle submission.

1

stars

1,782

commits

TypeScript

primary language

Jun 9, 2026

updated

README

WEB-CAD

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.


What it is

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.


Features

FeatureNotes
Draw walls, slabs, columns, stairs, roofs, openingsDSL console or AI agent
AI CREATE agentType a natural-language prompt; Gemma 4 generates geometry
Levels / storeysNamed elevation planes; objects attach to levels
NURBS geometryRevolve, sweep, loft — NURBS surfaces stored, IFC4 round-trip via IfcBSplineSurfaceWithKnots
Boolean opsUnion, difference, intersection on any two objects
IFC import/exportLoad or save IFC4 files; round-trip via web-ifc; NURBS surfaces export as IFC4 B-spline entities
3D format I/OImport: IFC, STEP, GLB/GLTF, OBJ, STL · Export: IFC4, GLB, GLTF, OBJ, STL, STEP, 3DM, USDZ, SVG, DXF, PDF
BIM-like metadataSelect any element; sidebar shows IFC class, storey, GUID, layer
Scene panelHierarchy, format info, element counts
Cmd-K paletteSearch commands, demos, and tools
Layout mode2D drawing sheets with linked section/plan viewports
Undo/redoFull history stack
Session restoreIndexedDB auto-save; scene survives a page refresh

Quick start (browser)

Open the live URL above. No account required.

  1. Draw — pick a tool from the left palette (Wall, Slab, Column, …) and click in the viewport.
  2. AI agent — open the chat panel, type a description ("add a gabled roof over the house"), press Enter.
  3. Import — drag any .ifc, .glb, .step, .obj, or .stl file onto the page.
  4. Export — click Export in the toolbar and pick a format.

MCP server (Claude Code)

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.


Quick start (dev)

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 reload

See SETUP.md for the full environment guide and CONTRIBUTING.md for PR conventions.


Supported formats

FormatImportExport
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)

Known limitations

  • 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.

Stack

  • 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 under web/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

Directory layout

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)

Contributing

See CONTRIBUTING.md. Issues and PRs welcome.


License

Source-Available — see LICENSE for full terms.
Stack licenses: replicad LGPL-2.1, web-ifc MPL-2.0, three.js MIT.

Contributors

wordingone

1,782 commits

Languages

TypeScript

66.9%

JavaScript

24.1%

CSS

2.6%

Python

2.5%

C++

1.8%

HTML

1.6%