An AI plays Pokémon Red on a live stream. You can lend it spare CPU from Windows, macOS or Linux — no GPU needed. The job it most needs is evaluation: play an hour with a fixed checkpoint and report what it achieved. It sends back numbers, never a binary.
Linux / macOS:
curl -fsSL https://franksriracha.zip/start.sh | sh
Windows PowerShell:
iex (irm https://franksriracha.zip/start.ps1)
No Python setup at all, and it pins the exact versions the server runs — which is what makes a save state you produce loadable on our side. PyBoy save states are version-locked, so this is the most reliable way to send us one.
docker pull ghcr.io/hughmungis/poke-contrib:latest
docker run --rm \
-v /path/to/PokemonRed.gb:/app/repo/PokemonRed.gb:ro \
-v /path/to/init.state:/app/repo/init.state:ro \
-e CONTRIB_TOKEN=<your token> \
ghcr.io/hughmungis/poke-contrib:latest --check
Swap --check for eval or ladder once it passes. Your
ROM is mounted read-only and never leaves your machine.
You are about to run a script from someone else's server, which is worth a moment's
thought whoever is asking. These ones are deliberately short and boring — open
start.sh or start.ps1 and read
them first. They clone the public repo, check your Python and your ROM,
and print the command to run next. They use no sudo or admin rights, install
nothing system-wide, add nothing that starts at boot, and do not begin contributing
on their own — that is always a separate, deliberate command.
None is included and none ever will be; it is copyrighted. Dump your own cartridge. The worker checks its SHA1 and refuses to start on a wrong file, so a bad copy fails immediately rather than quietly measuring a different game.
On start it asks the box whether it is up to date, and offers to update if not. If you decline, it stops without contributing.
Current client version: 1.
That is stricter than it sounds and it is not about tidiness: the environment and its reward terms change as the project learns, so an old client computes a different thing under the same name. Its numbers cannot be pooled with everyone else's, and quietly accepting them would corrupt the medians that every promotion decision rests on. The server enforces this too — a stale client is refused work rather than trusted to check itself.