IMR R&D · the origin · May 2026
Before Touchstone was a capability bench, it was a wager: could a team of local language models run an autonomous development shop — finding their own weak spots, writing the fixes, and opening the pull requests — on a single GPU sitting on a desk? This is where it started.
The bet
The whole system was designed around a single, deliberately harsh constraint: everything runs locally, on hardware we already own. No frontier API doing the real work, no rented H100s. One consumer superchip, one orchestration box, and a stack of small open models. Every architectural decision — the load watchdog, the concurrency throttle, the one-PR-per-issue rule, the 128K context cap — falls out of that one constraint.
If a weak model on cheap hardware could be made to do real engineering, the win wouldn’t be a bigger bill — it would be a blueprint anyone could run.
Two machines, one job
The pipeline lives across two boxes on a home LAN. A fanless Intel NUC is the brain — it owns orchestration, the database, and the scheduler, but has no GPU. It delegates every token of inference over HTTP to the GX10: NVIDIA’s Grace Blackwell GB10, an ARM CPU and a Blackwell GPU sharing one 128 GB pool of unified memory.
The most dangerous failure mode
Unified memory has a sting in the tail: there is no separate VRAM to watch, so memory pressure is invisible until it isn’t. Load two large models at once, exceed the pool, and the machine doesn’t throw an error — it freezes solid and needs a physical reboot. With agents firing autonomously, that risk is constant.
The answer was a tiny gatekeeper: lm_watchdog, a lightweight HTTP server that allows exactly one model load at a time. Everything that wants to load a model has to ask it first.
The recover endpoint that clears a stuck gate has its own guard: if a benchmark is mid-flight it refuses, so a runaway retry can never clear the gate and let a second model in while inference is still running.
The pipeline — five steps, fully automated
A benchmark run is a fixed five-step loop. The orchestrator drives it; the watchdog gates the load; and the final step closes the loop by feeding results back into the agents that decide what to fix next.
The crew — Paperclip Forge
The agents wake when an issue lands in their queue, read their instruction file, do the work, and go back to sleep. Those instruction files are the only memory they carry between runs. Three roles, each a different model picked for the job:
The war story: gridlock
Early on, the CEO did the obvious thing and queued all 100 issues at once. The result was instructive: 20-plus CTO runs hit the single GPU together, every process stuck waiting for its turn, each timing out before it ever saw a first token. Nothing shipped. The fix was unglamorous and decisive — raise the per-run timeout, and stop queuing everything. Issues now sit blocked until the CEO releases them, three at a time, as slots free up.
What it proved — and what came next
The first sprint shipped real pull requests against a real codebase with no human writing code — the loop closed. But the benchmarks that drove it (Hello World, Statistics, a CSV bugfix, a rate limiter) were toy problems, and a 0–100 judge is a soft ruler.
IMR R&D · project journal · origin chapter, May 2026 · re-skinned from the original LMEH writeup.