typesafe-mario
Experimental controller where Jev picks NES inputs for Super Mario Bros. from structured emulator RAM and telemetry, not screenshots.
Overview
TypeSafe Mario lets Jev choose controller inputs for the original Super Mario Bros. The model never sees screenshots: the harness converts emulator telemetry and RAM into compact, object-centric JSON with Mario's motion, jump trajectory, upcoming enemies, terrain, measured response delay, recent control results and episode progress. Jev chooses one of a small set of actions (noop, right, right_jump, right_run, right_run_jump, jump, left), the emulator advances several frames, and the loop repeats.
A dashboard shows the chosen action, full probability distribution, confidence, latency, jump probability, danger score, reward and parsed state, and every decision is logged to JSONL. A state-demo command shows exactly what would be sent without calling the API. The goal is reaching the flag in World 1-1 without dying. No ROM is included.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which controller action should Mario take now? | noop · right · right_jump · right_run · right_run_jump · jump · left |
How it works
- Parse emulator RAM and telemetry into structured JSON.
- Ask Jev to choose an action.
- Advance the emulator several frames.
- Log the decision and repeat.
Strengths
- No screenshots; compact structured state.
- Full per-decision logs for analysis.
- Inspect model input without spending API calls.
Caveats
- Experimental; success rate not stated in the excerpt.
- Requires your own legally obtained ROM and a TypeSafe key.
Getting started
pip install -e ".[mario,dev]", set TYPESAFE_API_KEY, then typesafe-mario play --env SuperMarioBros-1-1-v0 --frames-per-decision 8At a glance
- Type
- Demo
- Status
- prototype
- Language
- Python
- Runtime
- emulator harness + dashboard
- Has code
- yes
Use cases and integrations
How curated lists describe it
Gaming: TypeSafe/Jev agent that plays Super Mario Bros. from structured emulator state, choosing each action from emulator-derived features.
yibie/awesome-jevSuper Mario Bros. from structured emulator state.
AnotiaWang/awesome-decision-modelsAn experimental NES Mario controller that gives Jev structured emulator RAM and telemetry instead of screenshots.
logicrw/awesome-jev-projectsSuper Mario Bros. agent choosing actions from structured emulator state.
cobanov/awesome-jevA TypeSafe/Jev agent that plays Super Mario Bros. from structured emulator state.
hellogumbo/awesome-jevJev picks NES controller inputs for Super Mario Bros. from emulator state, with no screenshots.
MrJev/awesome-jev
Frequently asked questions
Does Jev see the screen?
No, it receives structured JSON from emulator RAM and telemetry.
How often does it decide?
Every eight emulator steps by default.
Is a ROM included?
No, you must supply your own legally.
Related projects
Real-time bot battles where you write a fighter's strategy in plain English and a System One model pilots it several times a second.
ProjectbetaTypeScriptBot that plays Red Alert 2 web skirmishes, with code handling mechanics and a decision model making stance, threat and timing calls.
ServicebetaPythonMultiplayer 3D science-fantasy version of Houston's River Oaks District with Jev-powered NPC companion, chauffeur and smart drive.
ProjectbetaTypeScriptBrowser 3D planetary rover sandbox where a TypeSafe controller chooses the next action from complete candidates, versus a baseline.
ProjectbetaTypeScriptDoom runs as a spacecraft payload over real flight software; Jev pilots from the ground every half second while Claude reviews.
ProjectprototypePythonMinecraft agent where Hermes plans, Jev picks one bounded action at a time and a Mineflayer harness validates and executes.
ProjectprototypeJavaScript