The system
Two drawings the kit’s own generator makes from its configuration, and the label sewn into every box. Your copy draws yours.
Drawn from the config
The whole workshop
- HermesThe agent runtime: the board, the cron, the Telegram gateway and the profiles.Wired in. Telegram is its only gateway.
- SurplusThe model marketplace behind Hermes and the workshop’s marketplace builds.Your choice of models; the marketplace itself is wired in.
- Claude CodeRuns Claude and Surplus builds, the Claude reviews, and the host.Wired in.
- CodexRuns Codex builds and the Codex reviews.Per card: any card can go to another engine.
- podmanThe sealed boxes and the workshop secrets.Wired in. Docker is not supported.
What the box refuses
Every card is built inside a podman box with this label sewn in. The flags are the runner’s own.
What a merge must pass
- Admission: every new commit is scanned, its files, file names and message, for credential shapes and for the keys loaded on the host; a hit blocks the card.
- Review: M, L and secure cards get a second family’s review of the exact diff; the merge pass installs only on that verdict, and a changed diff voids it. A Size S card waits for your own read.
- Acceptance: base and merge each run the suite in a box with no network.
- Install: fast-forward only, and the receipt is numbered.
- Dependencies: a sub-system’s box image carries its locked dependencies; a card that changes a lockfile stops until you rebuild that image.
What watches the loop
- Spend: a governor every five minutes; a budget failure blocks the lane until midnight UTC.
- Limits: when a provider says its usage limit is reached, that engine pauses for 30 minutes and the card goes back in the queue, uncounted.
- Pulse: a deadman timer alerts your chat if the cron stops.
- Privacy: your names, hosts and chats live in a private overlay, never in the kit.
The box
- Network
- None. The build reaches one proxy socket that admits only its engine’s API host, and a box without its proxy does not start. Acceptance runs with no network at all.
- Root
- Read-only.
--read-only - Capabilities
- All dropped.
--cap-drop=ALL - Privileges
- None gained.
--security-opt=no-new-privileges - Processes
- 512 at most.
--pids-limit=512 - Memory
- 6 GB.
--memory=6g - CPUs
- Two.
--cpus=2 - Secrets
- One, the engine’s own: a podman secret for Claude and Surplus, the Codex login passed in beside the bundle. Nothing else from the host.
- Repository
- Arrives as a git bundle on stdin, with no repository mount.
- Scratch
- 2 GB in memory, gone when the box exits.
--tmpfs /work