jev-nethack
Jev plays NetHack 5.0: code lists the legal moves each turn, Jev picks one with a choice question, and a motor types the keys.
Overview
nethack-jev has TypeSafe's Jev play NetHack 5.0 with no LLM in the loop. Each turn the code reads the terminal screen, builds a list of legal options such as attack, explore, eat, pray, descend, kick a door or dig, and sends them to Jev as a single choice question. A small motor module performs the keystrokes for the chosen option. The structure is borrowed from Jev Plays Doom.
A local dashboard shows the live screen, the options with Jev's probabilities, decision history, spending and past games, and lets you pause, step, change speed or give a standing order, with a default $5 budget. As of 2 October 2026 the README reports 570 games as a dwarven Valkyrie, a deepest level of Dlvl 11, a best score of 18,708 and no ascension. Notably, a no-model baseline that always takes the first option also reached Dlvl 11. All code was written with Claude Code.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which legal action should be taken this turn? | attack · explore · eat · pray · descend · kick door · dig |
How it works
- Read the game screen from the terminal
- Code lists the legal options for this turn
- Jev picks one option via a choice question
- The motor sends the keystrokes
- Decisions and cost are logged per game
Strengths
- No LLM in the loop; one typed decision per turn
- Spend cap and per-game decision logs
- Dashboard with probabilities and controls
- Honest baseline comparison
Caveats
- A no-model baseline matched the deepest level reached
- No game has ascended
- Requires a Jev key and building a NetHack fork
Getting started
Run scripts/build-nethack.sh, create a venv and install requirements, build the web dashboard, add JEV_API_KEY to .env, then python -m jev.server and open http://127.0.0.1:8770At a glance
- Type
- Project
- Status
- prototype
- Language
- Python
- Runtime
- Local server with web dashboard
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
TypeSafe's Jev model plays NetHack 5.0: code lists the legal moves, Jev picks one, no LLM in the loop
logicrw/awesome-jev-projectsTypeSafe's Jev model plays NetHack 5.0: code lists the legal moves, Jev picks one, no LLM in the loop.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Which of the legal options listed by code to take each turn.
How well does it play?
After 570 games its deepest level was Dlvl 11 and it has not ascended; a first-option baseline also reached Dlvl 11.
How is cost controlled?
A default $5 budget, adjustable with JEV_BUDGET_USD.
Related projects
Source for browser chess and Chess960 where code computes each legal move's facts and Jev picks one per turn as a typed Choice.
ProjectproductionTypeScriptBrowser 1v1 sniper arena where Jev reads match state about 9 times a second and chooses movement, aim, ADS, firing and jumping.
ServicebetaTypeScriptInstrumented 2048 web lab where every move is a Jev Choice over four directions, with probabilities, latency and cost shown live.
ProjectbetaTypeScriptFifteen live arcade games where Jev and LLMs play each other, led by WikiRace in which Jev picks only real links.
ProjectbetaTypeScriptReal-time bot battles where you write a fighter's strategy in plain English and a System One model pilots it several times a second.
ProjectbetaTypeScriptBrowser extension that lets Jev, local Laya or an OpenAI-compatible model take over a running ra2web (WannaFire) RTS match.
ProjectbetaTypeScript