Architecture#
System overview#
Hermes / Claude / Codex
|
| MCP tools
v
cleanroom-mcp
|
| HTTP API
v
cleanroom-controller (PocketBase + embedded UI)
|
+-- filesystem logs/artifacts
+-- node registry
+-- power provider abstraction
+-- job scheduler
|
v
cleanroom-worker (embedded in Buildroot image, runs on cleanroom hosts)
Hardware lifecycle#
controller enables PoE
-> Soekris PXE-boots Buildroot
-> worker registers
-> job runs from clean state
-> logs/artifacts uploaded
-> controller disables PoE or requests reboot
Design principles#
- Go-first. No Python or Node.js on the control plane unless absolutely required.
- No Docker or Kubernetes on workers. Workers run bare Buildroot.
- Workers own no durable state. Every boot is a clean slate.
- Controller owns scheduling and power. Workers are passive.
- Workers get no long-lived secrets. Credentials are job-scoped and ephemeral.
- Reboot/poweroff wipes worker state. The power cycle is the reset primitive.
- MCP is a thin adapter. It translates AI tool calls into controller API calls and nothing more.