Hardware Engineering Integration bench
Drive the engine. Check the result.
Engineering engines — OpenRocket, PrusaSlicer, KiCad, OpenSCAD, OCCT — are built for a person sitting at a GUI. Two things follow, and the second is the one that bites.
A program cannot drive them well. Every one has a CLI or a binding, and every one of those is version-skewed, undocumented in places, and shaped around a human who will notice when something looks wrong.
And a program cannot look at the result. You catch a bad render by glancing at it. A script does not glance. Neither does an agent. So a tool that returns a plausible-looking artifact and says nothing is not merely unhelpful — it is indistinguishable from a tool that worked, and everything downstream inherits the mistake.
heibench does those two things and nothing else: it puts engineering engines under program control, and it adjudicates what they produce against declared intent.
The two layers
Drive
Put the engine under program control: headless, scriptable, version-aware, deterministic.
| Tool | Engine |
|---|---|
| orlab | OpenRocket, via JPype — load .ork, run simulations, extract
time series and flight events |
| prusaslicer-py | PrusaSlicer, via its CLI — slice a model and get back a verified artifact, on PATH or as a Flatpak |
Verify
Adjudicate an artifact against declared intent.
| Tool | Domain | Oracle |
|---|---|---|
| partspec | mechanical parts, CAD-as-code | OpenSCAD, OCCT (build123d / CadQuery) |
| netspec | PCB connectivity | kicad-cli |
| gerberdiff | fabrication output (Gerber / Excellon) | the fabrication files themselves |
Each tool is independent — no shared runtime, no framework, nothing to adopt in order to use one.
What belongs here
A tool belongs if both hold:
- It puts an engineering engine or artifact under program control — headless, scriptable, deterministic, no human in the loop.
- It is honest about what it established — a structured result, a meaningful exit code, never reporting success it did not verify and never substituting a plausible result for a real one.
The second is not a quality preference. It is the condition that makes the first worth anything, and it is violated constantly — including nine times in this author's own code, across five unrelated domains, eight of which are still open.
What does not
Authoring and design generation, language runtimes, slicer post-processing, dependency management, and machine control at runtime are all out of scope. heibench is the design-time middle: operate the tool, and know whether to believe the output.
The contract
Humans and coding agents working in any heibench repository follow AGENTS.md. Each repository also carries its own, which wins where they conflict; the org-wide file is the floor, not the ceiling.
This site is canonical for the evidence behind that contract — the record of the core defect and the open adjudications between members.