Programmatic CAD

Timber framing and woodworking design made easy

Kumiki is a purpose-built programmatic CAD tool for timber framing and woodworking, with real parametric joinery and fast agentic workflows. Use the Kigumi VS Code extension to view your designs and plans as you iterate.

Joint types
30+
Runs in
VS Code
Exports
STL & OBJ
A tiny house frame designed in Kumiki

How it works

Python in, frame out

A frame is a program, so it is diffable, reusable and parametric

Timbers, joints and assemblies are ordinary Python. Change a span and every joint that depends on it moves. Keep a frame in git, review a change as a diff, import a bent you already built and place it four times.

  • Joints are function calls with named arguments, not hand-placed geometry
  • Patterns compose: a bent becomes a bay becomes a building
  • Works with an AI assistant, because the design is text a model can read and edit
Python source declaring mitered and keyed lap joints at a frame corner The shed that code builds, rendered in Kigumi

The VS Code extension

The frame redraws as you save, beside the code that made it

Kigumi runs the frame and renders it in the editor. Select a timber and read its dimensions, walk into a joint's CSG tree, hide layers, cut sections, and measure what you are looking at.

  • Selection down to a single face, edge or joint feature
  • Layers, tags and per-member visibility for picking a frame apart
  • X-ray and section views for reading a joint from the inside
X-ray view of a double sawhorse, showing the joinery inside the timbers A coffee table frame rendered in the viewer

Joints, not boolean cuts

Traditional joints that stay correct when the timbers change

Mortise and tenon, dovetails, half-laps, scarfs, wedged and pegged variants — each one is a parametric joint that re-cuts itself when the timbers it joins move, change size, or meet at a different angle.

  • Housings, shoulders, reliefs and pegs derived from the timbers, not drawn
  • Angled and compound intersections, not just square ones
  • The same joint at another size or angle is the same call with other numbers
X-ray of a half-blind cross lap joint with keys A pegged mortise-and-tenon brace joint at an angle

Shop drawings

Elevations and plans generated from the frame itself

A drawing is a projection of the model, so it cannot drift from it. Kumiki lays the views out from the timbers themselves — you never place a viewport or a scale.

  • Generated automatically from the frame
  • Customised in code, where the drawing is part of the design
  • Overridden by hand in Kigumi when a sheet needs one more dimension
A generated sheet: front elevation, plan, side elevation and isometric

Order of operations

The order the frame goes together, worked out from the joinery

Kumiki solves which timbers can be moved into place, and in what order, from the joints themselves — then plays it back so you can watch the frame come apart.

  • Assembly order derived from how each joint actually goes together
  • Scrub from assembled to disassembled to read a sequence
  • Catches a frame that cannot be assembled before you cut it
A coffee table part-way disassembled, with the assembly timeline slider The same frame at another point in the assembly sequence

Start with a sawhorse, end with a barn

Kumiki installs as a Python package; Kigumi installs from the VS Code marketplace. The patterns that made everything on this page ship with it.