Millwright
A compiler for robot choreography: compose arm, gantry, legged, AMR and humanoid motions as clips with signals and shared resources, and watch them scheduled in 3D.
In early access for subscribers until 22 November 2026. Subscribe to run it now.
Subscribe →A compiler for robot choreography. You write what robots do as clips with knobs (reach, pick, place, trace, walk), compose them with loops, signals and shared resources, and Millwright expands, schedules and plays them in 3D, with a timeline of every robot. Where Bench Twin plans people assembling a product, Millwright is about the machines: arms, gantries, legged robots, AMR fleets and humanoids.
- Clips are values: reach() is solved live by inverse kinematics; reverse, speed, mask, blend and retime bake clips into pure functions of time. Any knob can be a lambda with a seeded rng, so every run replays exactly.
- Signals and resources: belts spawn parts and their zones are event sources, arms hand off over signals, a jig can be claimed so two robots never use it together, and waits show up as hatched blocks on the timeline.
- Your own rigs: define a gantry or a legged inspector from joints and links, and the same verbs work on it. Springs, hoses and antennae are simulated as secondary motion.
- Look at the compiler: the Graph tab shows the DAG, Passes shows each pass with its timing and node counts, and you can write passes of your own. Diagnostics point at the line that caused them.
- Humanoids and therbligs: a two-handed humanoid at a workstation logs every hand motion as a therblig, and the Operations tab charts the left and right hand with cycle times.
- Overlays: ghosts, paths, reach, zones, reservations and labels, from the scene camera or the top view, at 0.25× to 4×.
Sixteen examples come with it, from Hello stage and One reach to a belt with signals, a custom gantry, a legged inspector, an AMR hand-off, a shared weld cell, The factory (five weld cells, a QC line and six AMRs), custom passes and two humanoids at two benches. Built with three.js.