Partwright Join the list
CAD as code · in private development

From idea to manufacturing, with your agent.

Describe what you need. The agent designs it as code, checks every fit, motion and load in numbers, and hands you the files to build it. You see the same model and decide.

Investors and partners: talk to us →
KLIV, a walking robot built in Partwright, waving. Cropped from a screen recording of Motion in the app.
How it works

From a sentence to a part you can make.

  1. Describe it

    In your words, with a sketch, a photo or a STEP of what it must fit.

  2. The agent models it

    As build123d code in your repository. Every change is a version.

  3. Partwright checks it

    Fits, joint ranges, strength and standards, in numbers. A failure names the part and the line.

  4. You decide

    Click a face to comment. Accept or reject each change in 3D.

  5. Plan how it is made

    Nested sheets, print plates, bend order, CNC setups, the mould.

  6. Make it

    Drawings, cut files, a bill of materials and instructions, in one package.

Watch a run

A desk lamp, from a brief to print files.

Recorded as it happened. The person comments; the agent proposes a change, its checks catch the clash it caused, and it fixes that too.

84 seconds, cut from three hours of recording. The agent's work is sped up the most: its first 76 minutes of modelling take 14 seconds.

The app

The same scene, in your browser.

You and the agent on one model, at the same time. Design, Motion, Simulate and Make along the top, the model tree on the left, the agent on the right.

127.0.0.1:8790

The agent

  • Writes the model as code, in your repository.
  • Measures, sweeps joints and simulates, in numbers.
  • Builds each fix in a copy, for you to see first.
  • Asks when a choice is yours, with pictures to pick from.

You

  • Click a face: the agent gets the part and the line of code.
  • Sketch on the model: it reads your strokes in mm.
  • Drag a slider or change a hole: the code follows.
  • Accept or reject each change, with a 3D diff.
Provenance

Every face knows the line that made it.

Click a face and Partwright traces it to the line of code that cut it. The agent edits the right line the first time.

# parts.py
def bracket():
    base = Box(P.BASE_L, P.BASE_W, P.BASE_T)
    upright = Pos(P.UP_X, 0, P.UP_H / 2) * Box(P.UP_T, P.BASE_W, P.UP_H)
    part = base + upright
    part = fillet(part.edges().filter_by(Axis.Y).group_by(Axis.Z)[1], P.FILLET_R)
    part -= Pos(P.UP_X, 0, P.PIVOT_Z) * Cylinder(P.BORE / 2, P.BASE_W, rotation=(90, 0, 0))
    return part
Why

Measured, not guessed.

An agent that can only render pictures guesses at fits. One that can ask how large the clearance is gets an exact answer, and designs.

An agent with screenshots
  • Do the fingers hit each other or the servo anywhere in their travel?“There looks to be enough room.”
  • Will the stand tip back when you press the screen?“The base is wide enough to be stable.”
  • Can the enclosure be printed without supports?“The design should print fine.”
  • Can the servo hold the arm straight out?“The servo is rated for this kind of load.”
An agent with Partwright
  • Do the fingers hit each other or the servo anywhere in their travel?0 collisions through the full travel; 11.2 mm to the servo at the closest
  • Will the stand tip back when you press the screen?5 N at the top edge: it holds 1.70 × at 60° and 1.30 × at 70°, 1.25 needed
  • Can the enclosure be printed without supports?0 overhangs over 45°, 0 thin walls, tray and lid
  • Can the servo hold the arm straight out?25.7 % of the shoulder servo's rating, in MuJoCo

Every answer is from a project below.

Examples

Brief in, checked product out.

Each starts from the brief as it was typed. The renders, drawings and checks are from the run itself, and its files are yours to download.

Nine of the runs, each with its brief, checks and files.

See all the examples
Robots and machines

From the CAD to the simulation.

Three robots built over weeks by a person and an agent, and a 7.5 m mill from a two-line brief. The code that makes the parts also makes the simulation: the robot that walks in MuJoCo is the robot you print.

MuJoCo from the assembly

Joints, masses as printed and collision shapes, rebuilt when the code changes.

Controllers on it

A gait or a learned policy, on rough ground, slopes and steps, steered from the keyboard.

Files for the rest of your stack

MJX for training on the GPU and URDF, from the same code.

Production

How each part is made, planned before you order.

Make lays every part out the way a shop makes it, in the numbers a shop quotes from. Change what it chose and the plan follows.

Make · Production
Sheets and plates

Parts nested by their true outlines; FDM, SLA and SLS plates with material and hours.

Bending and machining

The bend order with die and force per bend; CNC setups with what holds the part.

Moulds and weldments

Pull, slides, gate, clamp force and cycle; bars cut from stock, welds in order.

What you get

Files a shop can quote from.

Drawings, flat patterns, print packs, a bill of materials, instructions and board files, kept next to the code.

What it checks

Everything a mechanism has to survive.

Every tool the agent calls answers in numbers. Most run in CI too, with partwright check.

See it in an example
Under the hood

Your code, your agent, your machine.

CAD written as code will win over CAD you click, and the AI models decide it. What has been missing is the feedback. Partwright is that feedback.

Any agent

An MCP server. Claude Code in the app's chat, or any agent from your terminal.

Plain Python

build123d in your repository and your own environment. No format to export from.

The code is the truth

Sliders, clicks and accepted changes all become code.

Local first

Runs on your machine, on 127.0.0.1. Your designs stay with you.

Early access

Build your next robot with an agent.

We work first with a few people who build robots and other moving machines. Join the list and we will write when there is a build to try.

Investors and partners Talk to us

Daniel · daniel@kuta.nu  ·  Joakim · joakim@kuta.nu