Claude has usage limits that fill up as you work and reset every five hours. This turns each of those windows into an extraction run, played out on a €40 handheld games console sitting next to your keyboard. Your usage is cargo. Bank it before the window burns out, or lose it.
It's the aggressive sibling of pocket-clawd, which shows the same numbers with a worried crab. This one has larvae.
▶ See it running in your browser — every tab and state, rendered by the same code the console runs.
Every 5-hour usage window is a RUN. Your live usage percentage is LOAD.
- Salvage accrues while you work — on rises only, paid at the current band's multiplier. The productive band is 60–85% LOAD: inside it the multiplier ramps from x2.0 to x3.0 over an hour held. Below it you're coasting; above it you're gambling.
- Press A to EXTRACT. Banks your salvage at a bonus (x1.5 in band) and ends your stake in the window. One extraction per run.
- Hit 95% LOAD, or get rate-limited, and the run is a BLACKOUT. Unbanked salvage is gone. The screen makes sure you know.
Every closed window becomes a serial-numbered specimen in the DEBRIEF tray, ranked F to S. Streaks, ranks and contracts are recomputed from the sample log at every launch — there is no save file, and quitting with unbanked salvage voids it. That's deliberate.
The only way to play well is to keep looking at the numbers — which is the entire point of putting them on a second screen.
The design brief was a security terminal that watches something biological — retro-futurist industrial sci-fi in the graphic-realism school: flat colour doing the work of rendering, everything annotated, nothing decorated. The lineage runs through F1 livery sheets, Ghost in the Shell, Designers Republic on WipEout, Teenage Engineering, PS2-era Sony ads.
The rules, in short — docs/DESIGN.md is the full spec:
- Eight colours, total. Near-black ground, graphite panels, bone text, and one load-bearing accent: acid green, used only for data, live state, and the thing you should press. Red means this run is in danger and appears for nothing else. Flat fills only — no gradients, no glows, no rounded corners, ever.
- One typeface, a caps-only industrial display face baked to bitmaps and
drawn as rectangles. It ships without
%,<or>, and its X, V and K collapse at small sizes — the font baker synthesizes and redraws them, which is its own small saga (DESIGN.md §3). - Photography survives as dither. Every image is quantized to a handful of colours and ordered-dithered against the near-black ground, so it reads as print, not as a picture.
- Motion is slow, mechanical, and mostly absent. Hard cuts with a 3-frame glitch, never fades. Nothing drifts horizontally (no vsync — it tears). The one living exception: the specimen larvae undulate, and their speed is data — a hot window writhes, a cold one barely moves.
- Everything is annotated — serials, callouts with leader lines, machine strings as texture. If a corner looked empty, it got a registration tick, not a flourish.
Five tabs: RUN (the live window), TRACE (a week of telemetry as a seismic plot), LOG (the specimen tray), TASKS (contracts), LINK (the uplink, and a calibration specimen). Leave it idle for two minutes and it goes full attract mode.
| A handheld | An R36S or one of its clones running ArkOS: a pocket-sized Linux console, around €40. Any similar 640×480 ArkOS handheld should work. |
| Claude Code | Already installed and logged in on your computer. That's where the numbers come from. |
| A network | Both on the same WiFi. If the console's dongle won't join your network (many can't do 5GHz/WPA3), pc\hotspot-on.ps1 turns your Windows PC into a 2.4GHz hotspot it can join. |
Nothing to install on the console — standard library Python only, because this firmware ships a locked-down filesystem.
1. Get it.
git clone https://github.com/ShellPayant/runner-protocol.git2. Get the console onto your WiFi (Options → WiFi Settings on ArkOS) and turn on Remote Services (SSH). The WiFi menu shows its IP address.
3. Tell the scripts where it is. Create pc\deploy.config.ps1:
$DeployHost="192.168.1.42"# the console's IP$DeployUser="ark"# stock ArkOS username (password is also ark)and pc\pusher.config.ps1:
$DeviceUrls=@("http://192.168.1.42:8788/")Optionally copy device\runner_config.example.json to
device\runner_config.json with your details — it's what the LINK tab
prints under HOST.
4. Deploy.
powershell -File pc\deploy-runner.ps1It verifies the game model and every screen against every state first, and refuses to copy anything if a test fails. You now have Claude Runner in the console's Tools menu.
5. Want it on the main carousel instead, with artwork and a video snap? On the console:
cd /path/to/runner-protocol
sudo ./install/install-carousel.shSafe to re-run; install/uninstall-carousel.sh puts es_systems.cfg back
exactly as it was.
6. Start the pusher on your computer and leave it running. Double-click
pc\Start Usage Pusher.cmd (Windows). It reads the Claude Code login you
already have and sends just the usage percentages — nothing else. Within a
minute the deck goes live.
| L1 / R1 | previous / next tab |
| A | EXTRACT — bank the salvage, end your stake in this window |
| Y | PROTOCOL DRILL — on and off (see below) |
| any button | wake from attract mode, skip the boot sequence |
| SELECT + START | exit |
Without a live uplink the deck sits on NO SIGNAL. Press Y there and the
PROTOCOL DRILL runs a full window on synthetic data — cold start, the
band, critical, blackout, reset — compressed into ninety seconds, on the real
renderer with real input and sound, so you can feel the loop and practice the
EXTRACT timing without burning five real hours. The header is badged
PROTOCOL DRILL / SYNTHETIC the whole time, drill data never touches your
history file, and Y ends it. --demo (or RUNNER_DEMO=1) launches straight
into it.
Step-by-step install and device support: docs/INSTALL.md · docs/COMPATIBILITY.md
powershell -File pc\sim-runner.ps1 -Tab run -State criticalrenders any screen in any state to an animated GIF with fabricated data —
the whole UI, exactly as the device draws it. Every image in this README was
made that way. States: cold, inband, critical, blackout,
extracted, extracting, nodata; add -Boot for the boot sequence.
Needs Python with pillow.
device/runner_config.json— what the LINK tab shows as HOST.- The band, multipliers and payout rules are constants at the top of
device/runner.py, and the test suite intools/test_model.pywill tell you if your rebalance broke an invariant. - The art is
device/art/*.raw— a trivial BGRA format described inrunner.py'sload_art(). The font rebakes fromtools/Maratype.otf, the sound effects from arithmetic (tools/bake_sfx.py). - Change anything visual and read docs/DESIGN.md first. Rule one: acid is load-bearing.
The typeface is Maratype by imago? / metamorphosiis, released freely by its designer — see NOTICE.md. Everything else — the game, the renderer, the artwork, the sounds — is this project's own.
MIT, see LICENSE. Do what you like with it.
Not affiliated with Anthropic. This reads your own usage numbers, with your own login, and makes a game about it.





