---
title: "What kaicad is"
description: "A client-side compiler that turns a YAML furniture definition into a 3D assembly, shop drawings, a cut list and a BOM — with no agent, no account and no backend."
url: https://kaicad.barpom.xyz/docs/start-here/what-kaicad-is
schema: "0.1"
---

# What kaicad is

kaicad compiles a **furniture definition written as YAML** into the things you need to
actually build the piece: a 3D assembly you can spin, shop drawings, a cut list, a bill of
materials, and a validation report that says whether the design will survive contact with
timber.

All of it runs in your browser. There is no server, no account, and nothing is uploaded —
the CAD kernel is a WebAssembly module that loads once and is then cached.

## There is no AI in the product

That is the part people find surprising. kaicad does not draw your furniture for you, and it
does not wrap a model in a chat window.

Instead, the model you already use writes the YAML — these docs are what it writes against —
and kaicad compiles and checks what it wrote. When a check fails you copy the report back into
the same chat and it repairs the file.

The reason is not modesty about what models can do. Text-to-CAD fails in a cascade:
executable code, then valid geometry, then a design that a person could actually build. Most
of the first loss is invented API calls. Asking for *data against a published schema* rather
than *code* deletes that failure class outright — a wrong fixture ID is caught in
milliseconds by a validator, not discovered after a kernel call throws.

## The validator is the product

Anyone can arrange boxes in space. What is missing from every open woodworking tool is the
layer that knows:

- whether two parts occupy the same cubic millimetre, and by how much
- whether a screw has enough thread engagement, and whether it is too near an edge
- whether a 900 mm shelf in 18 mm pine will sag under books
- whether a frame-and-panel top will split when the timber moves 4 mm across the grain in
  winter
- whether the slat gap under a mattress meets the standard
- whether the parts can be cut from stock anyone actually sells

Every one of those produces a stable code, a JSON Pointer into your document, and a
**computed suggestion** — "use `fixtures.wood_screw.4x50`, which gives 30 mm engagement",
not "insufficient engagement".

## What it does not do, yet

v1 is beds, tables, benches, shelving and open case goods, plus cable management. Doors,
hinges, drawers and runners are v2. Metric only. Parts are placed by **anchors** — named
points and faces on other parts — and never by absolute coordinates.

## Where to go next

- [The loop, end to end](/docs/start-here/the-loop) — the round trip, in detail
- [Your first design](/docs/start-here/your-first-design) — from nothing to a compiled bed
- [How checks run](/docs/validation/how-checks-run) — what the validator actually does
- [For your LLM](/docs/reference/for-your-llm) — the Markdown twins, `llms.txt` and the rest
