# kaicad > Compile a YAML furniture definition into 3D models, shop drawings, a cut list and a BOM — in your browser, with no account and no upload. Schema version: 0.1. Every page below is also published as a rendered HTML page at the same URL without the `.md` suffix. ## Start here - [What kaicad is](https://kaicad.barpom.xyz/docs/start-here/what-kaicad-is.md): 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. - [The loop, end to end](https://kaicad.barpom.xyz/docs/start-here/the-loop.md): The round trip — write the YAML with an LLM, compile it in the browser, read the report, paste it back — and what has to be true at each step. - [Your first design](https://kaicad.barpom.xyz/docs/start-here/your-first-design.md): The shortest path from nothing to a compiled assembly — open the worked example, then paste a document of your own. ## Schema - [The document](https://kaicad.barpom.xyz/docs/schema/the-document.md): The top-level shape of a design.yaml — the schema line, meta, units, catalogue pins, and the order the ten sections appear in. - [Parameters and expressions](https://kaicad.barpom.xyz/docs/schema/parameters-and-expressions.md): The five parameter types, and the restricted expression language — what it can compute, what names it can see, and the one hyphen rule that trips models up. - [Materials](https://kaicad.barpom.xyz/docs/schema/materials.md): Naming the stock a design is made from — pointing at a catalogue family and narrowing it to a board that is actually milled. - [Parts](https://kaicad.barpom.xyz/docs/schema/parts.md): Blanks, grain direction and named instances — the board a part is cut from, before anything is cut into it. - [Anchors](https://kaicad.barpom.xyz/docs/schema/anchors.md): The placement model — part-local coordinates, the six faces, the twelve edges, face (u, v) positions, anchor path syntax, and why an anchor carries a secondary axis. - [Features](https://kaicad.barpom.xyz/docs/schema/features.md): The ten things that can be cut into a blank — dados, grooves, rabbets, mortises, holes, pockets, notches, chamfers, roundovers and tapers — and how each one is positioned. - [Joints](https://kaicad.barpom.xyz/docs/schema/joints.md): What touches what — the twelve joint kinds, the mate that positions two parts, align, the `through` part that decides which way hardware goes in, and fastener patterns. - [Arrays](https://kaicad.barpom.xyz/docs/schema/arrays.md): One declaration for a run of identical parts — slats, shelves and pickets — with a count that can be computed from a standard. - [Requirements](https://kaicad.barpom.xyz/docs/schema/requirements.md): Design intent the machine can check — knock-down, the longest part that fits up your stairs, load, deflection, tools, and the standards a design promises to satisfy. - [Assembly and outputs](https://kaicad.barpom.xyz/docs/schema/assembly-and-outputs.md): The part held still, how the piece is grouped and taken apart, and what gets drawn, exported and tabulated. - [Units and precision](https://kaicad.barpom.xyz/docs/schema/units-and-precision.md): Millimetres everywhere, degrees for angles, exact arithmetic internally, 0.1 mm on display — and the rule that stops a rounded cut list breaking a clearance that passed. ## Catalogue - [How the catalogue works](https://kaicad.barpom.xyz/docs/catalogue/how-the-catalogue-works.md): Materials, fixtures and standards — how an id resolves, why a fixture is a machining recipe rather than a mesh, and the licence. - [Species](https://kaicad.barpom.xyz/docs/catalogue/species.md): Fourteen timbers with density, stiffness, seasonal movement and screw-holding — the properties the deflection, wood-movement and fastener checks read. - [Solid lumber](https://kaicad.barpom.xyz/docs/catalogue/solid-lumber.md): Three stock families with every thickness and width they are actually milled in — metric actuals, never nominal — and the rough allowances the cut list adds. - [Sheet goods](https://kaicad.barpom.xyz/docs/catalogue/sheet-goods.md): Plywood, MDF and veneered MDF — thicknesses, sheet sizes and the properties that make a panel behave differently from a board. - [Wood screws](https://kaicad.barpom.xyz/docs/catalogue/wood-screws.md): Six countersunk sizes, each with the pilot hole, clearance hole and countersink it cuts, and the edge, end, engagement and spacing rules it imposes. - [Bed bolts](https://kaicad.barpom.xyz/docs/catalogue/bed-bolts.md): The knock-down rail-to-post joint — four sizes, and the five holes across two parts that each declaration cuts. - [Knock-down hardware](https://kaicad.barpom.xyz/docs/catalogue/knock-down-hardware.md): Threaded inserts, cam locks, dowels and shelf pins — what each cuts, what it demands of the panel, and which to reach for. - [Cable management](https://kaicad.barpom.xyz/docs/catalogue/cable-management.md): Grommets and cable tie mounts — the clear bore that limits the bundle, the panel thickness each needs, and what the path checks read. - [Standards](https://kaicad.barpom.xyz/docs/catalogue/standards.md): Mattress sizes, slat gaps and ergonomic ranges — every number with the source it came from, because an uncited number is an opinion. ## Validation - [How checks run](https://kaicad.barpom.xyz/docs/validation/how-checks-run.md): What runs when, why a rule that could not run is reported as unverified rather than passed, and what the runner does when a rule throws. - [Error codes](https://kaicad.barpom.xyz/docs/validation/error-codes.md): Every code the pipeline can emit, grouped by prefix, with the explanation written for a model repairing a document rather than a developer reading a stack trace. - [Reading a report](https://kaicad.barpom.xyz/docs/validation/reading-a-report.md): The report format — stable codes, JSON Pointer paths, computed suggestions, errors before warnings, in an order that makes two runs diffable. - [Repairing from a report](https://kaicad.barpom.xyz/docs/validation/repairing-from-a-report.md): Errors first, warnings are judgement calls, re-emit the whole file, keep meta.id. What to paste back, and what to expect in return. ## Reference - [For your LLM](https://kaicad.barpom.xyz/docs/reference/for-your-llm.md): Every page here is published twice — rendered, and as plain Markdown at the same URL with .md appended — plus llms.txt and llms-full.txt for agents that would rather fetch the lot. - [Licences](https://kaicad.barpom.xyz/docs/reference/licences.md): MIT for the app, CC0 for the catalogue data, and what that means for the LGPL wasm kernel underneath. ## Optional - [llms-full.txt](https://kaicad.barpom.xyz/llms-full.txt): every page above, concatenated. - [The app](https://kaicad.barpom.xyz/app/): the compiler itself. It is a client-rendered SPA — there is nothing in its HTML to read.