3,555 ROMs
Fuzzy-searchable No-Intro index bundled. gbax download
pulls from the public archive.org mirror. Bring games you own.
An emulator for hackers, speedrunners, and AI researchers. Plays Pokémon Emerald in a window with sound and a keyboard — and in the same session exposes the framebuffer, memory bus, and input as an HTTP API any coding agent can reach.
Same emulator. Same session. Same API. Whether you're the player or the algorithm, you're in the loop together.
Three commands.
$ pip install gbax
$ gbax download "pokemon emerald"
$ gbax play emerald
The wheel ships a prebuilt mgba_libretro.so. No cmake.
No apt-get. No $GBAX_CORE_PATH.
$ gbax browse
Interactive search-as-you-type over all 3,555 ROMs. Arrow keys to navigate, Enter to download. ROMs you already own show a green ●.
The cooperative loop.
Every input source — keyboard, controller, HTTP — drives the same runtime via the same lock. They combine by set-union; none of them blocks the others. Plug in two pads, plug in an agent, keep your hand on the keyboard. All of it works together.
POST /action
GET /frame
GET /memory/0x02024284
POST /buttons
POST /capture_state
GET /savestate/3
GET /plugins/emerald_party/party
What you get.
Fuzzy-searchable No-Intro index bundled. gbax download
pulls from the public archive.org mirror. Bring games you own.
Framebuffer, full memory bus, input, cheats, save states,
an atomic /action for multi-step agent plans,
and a live /stream over WebSocket.
Python files that hook the play loop and publish HTTP
routes under /plugins/<name>/…. Bundled Emerald
party plugin shows the pattern.
Supervised memory inference. Label what's true
(hp=22, scene=overworld). gbax intersects across
captures and finds where each value lives.
Ctrl+R records, F1–F9 replay. ~6,700 cheat codes vendored from libretro-database; no network at runtime.
crt-lottes out of the box, custom WGSL when you want
pretty, via the [gpu] extra.
/stream serves a stylish GBA-bezel viewer page;
/stream/ws pushes pristine RGBA frames at 30 fps.
?mode=controller docks an on-screen pad — play
on your phone, your laptop, anything in between.
Built for three.
You want to remember.
gbax browseThe agent layer doesn't even have to be running.
You want to practice.
Keyboard, gamepad, and the agent — all in the same loop, never blocking each other.
You want a laboratory.
/action + /stateTake it for a spin.
# Linux x86_64 — bundled core, no extra setup
$ pip install gbax
$ gbax download "pokemon emerald"
$ gbax play emerald --listen --plugin gbax.plugins.emerald_party