JevEmon: Typed Decisions over GBA RAM to Walk Pokémon FireRed Daniel Alfasi released JevEmon, an open-source project in which the Jev model from TypeSafe AI plays Pokémon FireRed by reading the game's overworld state directly from RAM rather than screenshots. JevEmon's pathfinder enumerates reachable destinations — doors, routes, and Pokémon Centers — and Jev returns a typed choice with a probability for each option; the run stops if the answer is illegal. Verified milestones include leaving the Player's House, crossing Pallet Town, traversing Route 1 while winning wild encounters, and reaching Viridian City, where the run currently ends; later legs such as Oak's Parcel and the first Gym are not yet built. The project requires a Mac with Apple Silicon, a user-supplied FireRed ROM, and a TypeSafe API key, and is licensed under GPL v3.0. Jev walks a real Pokémon FireRed ROM. Bring your own ROM, we don't ship it. Not a screenshot agent. Not a bot that mashes A. Each leg of the walk, the code reads the overworld out of RAM, works out every place you could actually go from here — a door, a path to the next route, a Pokémon Center if your party needs one — and hands that list to Jev https://docs.typesafe.ai/models.md . Jev picks a destination; the code paths there and presses the buttons. If a wild Pokémon interrupts the walk, Jev fights it out with the same kind of typed decision, then the journey re-plans from wherever the encounter left you. More on how this is wired: ARCHITECTURE.md https://github.com/daniel4x/JevEmon/blob/main/ARCHITECTURE.md Verified milestones so far: Jev can leave the Player's House, cross Pallet Town, deliver itself through Route 1 fighting and winning any wild encounters along the way , and reach Viridian City. Further legs of the journey Oak's Parcel, the first Gym aren't built yet — the walk currently ends the run once it reaches Viridian City. Grab a TypeSafe API key https://typesafe.ai and put it in .env . cp .env.example .env Drop Pokemon - Fire Red Version U V1.1 .gba next to this README. Requires a Mac with Apple Silicon. brew install mgba ffmpeg uv uv run python scripts/setup.py uv run python -m jevemon --prepare uv run python -m jevemon That builds the checkpoint, starts the local server, and opens http://127.0.0.1:8765 http://127.0.0.1:8765 for you. Hit Go live and sit with it. Edit the lineup in the page. Speed it up. Scrub the VOD after. Everything runs through uv — no shell wrapper scripts, no separate install step. One walk, no browser: uv run python -m jevemon --run --speed 4 Other useful commands: uv sync just the Python environment uv run python -m jevemon --check-journey offline, no API calls uv run python -m jevemon --port 9000 serve on a different port Not the screen. A JSON snapshot of the overworld: where you are, your party's HP, and every destination the pathfinder already confirmed is reachable from here — each with how many times you've already visited it. During a wild encounter, the snapshot switches to the same battle state as any other fight: HP, types, moves, stats, abilities, PP, and only the legal moves and switches for that turn. Jev answers with one choice and a probability for every option offered. If the answer is illegal, the run stops. There is no backup brain. On the ROM, a switch is the Pokémon's personality value, not "slot 3." The party menu moves around. Using the old slot would send out the wrong one. That note lives in AGENTS.md https://github.com/daniel4x/JevEmon/blob/main/AGENTS.md . Edit the starting lineup in config.json or the UI. The interesting part isn't the exact team or the exact route. It's that a typed choice over honest game state — no screenshots, no free-text prompting — is already enough to walk an overworld and handle whatever interrupts it. Fork it. Push the journey further. Teach it a destination beyond Viridian City, or a whole different region. Third-party dependencies and their licenses are in NOTICE.md https://github.com/daniel4x/JevEmon/blob/main/NOTICE.md . Copyright © 2026 Daniel Alfasi. Licensed under the GNU General Public License v3.0 — see LICENSE https://github.com/daniel4x/JevEmon/blob/main/LICENSE .