A Type System for the Physical World
Every LLM fails the same way.
Same motor, 4 models, 4 failures. They could all describe how a NEMA 17 stepper connects to a lead screw coupling — but description isn't constraint. The AI needs a type system.
Ports: the grammar of connection
Stepper motor (Shaft port, green) and lead screw (Bore port, red). Click Connect to snap them together.
Stepper shaft to lead screw bore. Animated alignment. No coordinates needed.
It's a type system, not a parts list.
Shaft ↔ Bore. Rail ↔ Carriage. BoltCircle ↔ BoltCircle. The constraint solver validates before rendering. When the AI says "connect motor.shaft to leadscrew.bore," the port system checks compatibility, computes the alignment transform, and validates the fit. No freeform coordinates.
275 parts, 7 domains


The catalog started with what I already had drawings for.
The McMaster pipeline
Playwright → WASM tessellation → gltf-transform → LibSQL. 5MB STEP → 200KB GLB.
When AI picks from a typed vocabulary
Instead of hallucinating geometry, it searches. Every connection is declared. Every port is typed. Design becomes constraint satisfaction, not generation.