Forget the AGI headlines – this rocket was hand-carried
Everyone is saying GPT-5.6 Sol can beat Factorio on peaceful mode like the factory problem is solved. Wrong take. Ryan Madden’s Oct 31, 2026 run is weirder than the headlines: a low-thinking Codex agent finished a no-biter map in 13.5 hours of game time, used belts where GPT-5.5 froze, then closed the endgame by walking iron between lines it never properly linked.
Not a pure-automation victory lap. A long-horizon stress test – and you can run a cut-down version yourself.
No news recap here. Scaffold, commands, map traps, and when burning tokens on a rocket profile is dumb.
What actually dropped
Per Madden’s write-up, GPT-5.6 Sol sat inside Codex at low thinking. A game manager plus a small Python library forced human GUI limits: player reach, fog of war. No pixel vision. No free remote build.
Early and mid production charts looked clean. Madden meant to stop after blue science; Sol looked steady enough that he let it keep going. Scaling pain showed up later than expected. The silo only counted a launch after repeated manual ferrying between disconnected production pockets.
Community chatter stuck on the absurd part: the agent will haul state in inventory forever instead of redrawing the graph. Same move coding agents pull when they duct-tape broken module boundaries and ship.
Hands-on: spin up Autorio and aim for a rocket
Reusable stack: ryanmadden/autorio. As of the public README (check it before you clone – paths change), first-run expectations are concrete: macOS, full Steam Factorio (demo not supported), Node.js 22+, Python 3, logged-in Codex CLI. Open Steam before you launch.
- Clone, then
npm ciandnpm run build. - Smoke the whole path:
./autorio start smoke– Codex should craft one gear while the manager records production and exits clean. - Short factory goal next:
./autorio start automation --model YOUR_MODEL(twenty new iron plates). - Peaceful-style rocket profile:
./autorio start rocket --model YOUR_MODEL --seconds 28800. Pass the model explicitly so runs stay comparable; thinking defaults to low and maps to Codexmodel_reasoning_effort. - Watch with
./autorio watch RUN_ID, stop with./autorio stop RUN_ID, compare with./autorio compare. Dashboard:http://127.0.0.1:3000/.
# minimal progression
npm ci && npm run build
./autorio start smoke
./autorio start automation --model gpt-5.6-sol
./autorio start rocket --model gpt-5.6-sol --seconds 28800
./autorio list
The rocket benchmark ignores victory speeches. Completion scores only when the game’s recorded launch count rises. Silo observe fields include rocket.ready; launch still walks the character into reach and can reject if game rules block it.
Pro tip: Hands off the client during scored runs. Human clicks skew wall-clock and tick metrics. Use
--manualonly while debugging the Python client.
Common pitfalls that kill a run
Platform mismatch first. Off the documented macOS + graphical Steam path, pathfinder, window, and OBS pieces fight you. Older headless write-ups are a different architecture – not a flip of one flag.
- Calling it “peaceful” when bases are off. Turns out the rocket profile (README benchmark maps) is base Factorio only – Space Age, Quality, Elevated Rails disabled – enemy-base generation off, seed 424242, permanent noon. Everyday peaceful still spawns biters that fight if poked. You’re measuring logistics under zero defense load. Don’t extrapolate to combat or Space Age.
- Letting inventory become the bus. If the tooling allows endless carry, agents will walk state forever. Prompt or score for belt connectivity when you want real factories.
- Ignoring cache economics. Coverage of Madden’s numbers puts the viral run near 250M input tokens with ~95% cached and 1.5M output – about $52 at API pricing. Cold context is a different budget.
- Trusting exit codes. Autorio treats independent telemetry as ground truth. “Rocket launched” without a counter bump is a fail.
Don’t skip smoke. A bad RCON password or Factorio not ready burns agent time before the first plate.
Performance: what 13.5 hours actually means
| Signal | Detail |
|---|---|
| Game time to rocket | 13.5 h (no bases, low thinking Sol, Oct 31 2026 run) |
| vs GPT-5.5 | Belts finally used; prior attempts stalled on logistics basics |
| vs casual human | First playthroughs often 30+ h; sharp humans ~5 h; speedruns far lower |
| Endgame style | Manual ferrying over clean bus links |
| Token bill (reported) | ~250M in (mostly cached) + 1.5M out ≈ $52 |
| Model knobs | GPT-5.6 Sol as of docs: large context, effort ladder including low; promo rates $4 / $20 per 1M (cached input $0.40) |
Full 60× timelapse on YouTube if you want the visual texture – box-feeding habits and all.
Is 13.5 hours “fast”? Under human-like action limits for a first autonomous full launch – yes. Elegant megabase design – no. Where it actually breaks: local machines work, global connectivity still fails.
When NOT to use this
Need a coding-agent sanity check only? smoke or automation is enough – skip the multi-hour rocket burn. Care about combat, pollution, or Space Age? This profile deletes those axes on purpose. Budget assumes uncached multi-hundred-million-token loops? Walk away. And a ferry-finished rocket is not proof the model “understands factories.” It proved tenacity under a permissive recovery strategy.
FAQ
Did GPT-5.6 Sol really beat Factorio on peaceful mode?
Headline goal: yes – rocket, ~13.5 h game time, no biters, low thinking in Codex. Fine print: bases disabled; late game hand-carried.
Can I reproduce this without Madden’s exact machine?
Closest path is Autorio with Steam Factorio, Codex auth, and the rocket benchmark. Start with smoke. Model IDs and thinking flags move; pin the Sol/effort combo you mean and log them. Linux-only headless means you’re rebuilding stack pieces – not the documented one-box macOS path.
Why didn’t it just fix the belts at the end?
Local craft/build loops cleared mid-game. Global topology – joining distant production graphs without inventory-as-bus – still broke, so under time pressure the agent picked a working kludge. Multi-file refactors show the same pattern: patch symptom, ship, never redraw architecture. Reward “any rocket” and you select for ferrying. Reward sustained belt throughput with zero manual inserts after a cutoff tick and you select for something harder.
Clone Autorio, run ./autorio start smoke today, then decide whether a rocket profile is worth your token budget – not the timeline’s.