Case study · 2026
Building the 1903 Wright Flyer with Claude Code
A 234-part 3D reconstruction from blueprints, written in Python, in a single session with Claude.
The brief
The conversation started with a one-paragraph ask, three PDFs from the Wright Brothers Aeroplane Co., two scanned blueprint plates, and a link.
“I want to use a tool called agentcad.dev to build this. I want as detailed as possible a model with part-level accuracy. I expect this to be hard but I think together we can do it.”Source material
Two measured Christman drawings (public domain) plus the Wright Brothers Aeroplane Co. (WBAC) specification posters became the build truth. Every dimension constant in the model traces back to one of them. Both plates are hosted by wright-brothers.org.
Toolchain
agentcad — a CLI that executes CadQuery Python scripts and produces STEP geometry, GLB/STL meshes, PNG renders, and per-part metrics. Every named show_object() call lands as a discrete solid in the output. The build ran across 19 numbered versions, with each version directory keeping its own STEP, GLB, browser viewer, renders, and metadata.
One Python module — geometry.py — held every dimension constant and part generator. Each part of the aircraft got its own small script under parts/, plus sub-assembly scripts (wing_upper.py, biplane.py, airframe.py) and a top-level flyer.py composing everything.
The build, frame by frame
Seventeen milestones. The model started as a single airfoil rib and ended as the recognizable Wright Flyer with anhedral, angle of incidence, fabric covering, control wires, and instruments. Click any frame to enlarge.
01 · proof of fidelity
Wing rib
One airfoil section at the right chord (78 in / 1981.2 mm) with a 4¾-in camber peak at the 35% station — proof of fidelity for the unit that gets repeated 39 times per wing.
02 · spruce LE member
Front spar
Full-span 40 ft 4 in spruce, modeled as two halves spliced at the centerline per Plate 1's "front spar is joined at this line and can be separated" callout.
03 · 70% chord
Rear spar
Same construction as the front spar, positioned at ~70% chord. The trailing edge itself was a wire, not a spar — that comes later.
04 · skeleton
Upper wing
First complete wing skeleton. 39 ribs at Plate 1's spacing (22 in tip, 13 in intermediate, 11.75 in inboard) plus the 4 spar halves. Visibly an airplane wing.
05 · biplane
Both wings + struts
Lower wing dropped 6 ft 1 in below the upper. 16 inter-wing struts at 8 stations (front and rear at each) link them. Reads as a biplane.
06 · canard + tail
Airframe v1 (length too long)
Forward elevator (canard), twin rudders, and outrigger trusses. First version came in at 23 ft instead of the spec's 21 ft 1 in.
07 · length corrected
Airframe v2
Forward and aft outrigger lengths trimmed; total length now 21 ft 3 in — within 2 inches of spec.
08 · ground gear + pilot
Skids and pilot pod
Two 12 ft skids 4 ft 9 in apart. Hip cradle, footrest, and the 12-inch elevator control lever. The pilot lay prone with hips in the cradle.
09 · height correction
Skid drop tightened
Total height-over-wings came in 6 in over spec. Skid clearance dropped from 24 in to 18 in to land at 8 ft 1.7 in (spec: 8 ft 1 in).
10 · 12 horsepower
Powerplant
Engine block, 4 cylinders, magneto, radiator, gas tank. Twin contra-rotating 8 ft pusher propellers behind the wing, with hubs and sprockets ready for the chains.
11 · biggest visual leap
Fabric covering + X-bracing rigging + chains
Cotton muslin covering on both wings, diagonal X-bracing wires in every inter-wing bay, and the two drive chains (one crossed for contra-rotation). The skeleton went from "structural diagram" to "airplane".
12 · center-section cutouts
Pilot + engine openings
The lower wing fabric was cut away in two zones: a narrow opening for the pilot's torso and a wider one for the engine and radiator. Without the cutouts, the engine was technically inside the wing solid.
13 · sled-like skids
Upturned skid fronts
Skids replaced with a curved profile — straight body, upward-bending front like a sled runner. Visible from below; hidden behind the lower wing in iso.
14 · isolation render
Ground gear, alone
Skid sub-assembly rendered in isolation to verify the upturned-front shape — the only frame in the progression that's not the cumulative airplane.
15 · part-level fittings
Strut fittings + outrigger bracing
32 metal pivot eyes added at every interplane strut end (these are what enabled wing warping). The forward and rear outriggers got vertical end members + diagonal X-wires, becoming proper trusses.
16 · controls + instruments
Wires, anemometer, tachometer, stopwatch
Wing-warp wires from the cradle to the wingtips. Rudder control wires from the cradle to the rudders. Elevator wires from the lever to the canard. Three flight recorder instruments at the pilot station.
17 · matches the blueprint
Angle of incidence + anhedral
Wings tilted nose-up by 3° 25′ (Plate 2 side view) and given 10-inch tip droop (Plate 2 front view). The wing covering was split into left/right halves so each could rotate independently for the V-fold. After this pass the front-on silhouette matches the blueprint.
The final aircraft
Three-second loop, rendered through the project’s three.js viewer at 800×600.
Build numbers
Every part on the WBAC parts identification poster is represented. Engine internals, sprocket teeth, chain links, and individual fabric seams were the four categories of detail that exceeded the source-document fidelity and would have required invention.
What got delegated to the model
Claude held the full picture of the project across the session — sources, dimensions, build plan, version history, blueprint cross-references — and made dozens of small judgment calls that didn’t need to come back to me: rib spacing pattern interpretation, propeller blade simplification when gear-profile extrusion produced self-intersecting wires, splitting the wing covering into halves to enable independent anhedral rotation, choosing rotation pivots so the inter-wing strut error stayed symmetric.
The hard parts were the things that always are: getting cross-script imports working past agentcad’s pre-execution validator, untangling the geometric coupling between two wings that pivot at different roots and the strut connecting them, balancing fidelity against engineering effort. Two feedback bundles got filed against agentcad along the way, mostly about naming and assembly transforms.
Try it yourself
agentcad is on PyPI:
pip install agentcad[mcp]
Sign up for updates
New releases and agent-facing features. We’ll send a confirmation link before adding you.