How geohot/pi_plays_pokemon works
This repository is a lightweight game-playing harness: pi’s model observes screenshots, issues button presses, and judges completion through the extension’s tools. The emulator sidecar owns gameplay state, campaign resumption, run evidence, and the live web UI. An optional stream mirror forwards pi’s reasoning and tool results to that UI. The README documents these capabilities; the sampled source is partial, so uncertain internal wiring is omitted.
Main entry points: emu.py HTTP sidecar · game.ts Game tools · stream.py Event mirror · roms Game ROM
Components 12
Agent Interface
- Game tools
.pi/extensions/game.ts - Game prompt
.pi/SYSTEM.md
Game Runtime
- HTTP sidecar
emu.py - Game Boy emulator
emu.py
Run State
- Campaign state
emu.py - Run evidence
emu.py
Live Observability
- Event mirror
stream.py - Live web UI
emu.py
Other components
- Pi model
- Pi agent
- Game ROM
roms - Web UI viewer
Connections 14
- Pi agent → Game tools: loads tools
- Pi agent → Game prompt: uses prompt
- Pi model → Game tools: calls tools
- Game tools → HTTP sidecar: HTTP requests
- HTTP sidecar → Game Boy emulator: controls
- Game ROM → Game Boy emulator: loads ROM
- Game Boy emulator → Campaign state: saves state
- Campaign state → Game Boy emulator: resumes state
- HTTP sidecar → Run evidence: writes evidence
- Pi agent → Event mirror: JSON events
- Event mirror → HTTP sidecar: posts feed
- Web UI viewer → Live web UI: opens UI
- Live web UI → HTTP sidecar: requests status
- HTTP sidecar → Live web UI: serves screen and logs