Skip to content

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.

ProjectprototypeMIT

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

TypeQuestionAnswers
ChoiceWhich legal action should be taken this turn?attack · explore · eat · pray · descend · kick door · dig

How it works

  1. Read the game screen from the terminal
  2. Code lists the legal options for this turn
  3. Jev picks one option via a choice question
  4. The motor sends the keystrokes
  5. 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:8770

At 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-projects
  • TypeSafe'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.

    ProjectproductionTypeScript
  • Browser 1v1 sniper arena where Jev reads match state about 9 times a second and chooses movement, aim, ADS, firing and jumping.

    ServicebetaTypeScript
  • Instrumented 2048 web lab where every move is a Jev Choice over four directions, with probabilities, latency and cost shown live.

    ProjectbetaTypeScript
  • Fifteen live arcade games where Jev and LLMs play each other, led by WikiRace in which Jev picks only real links.

    ProjectbetaTypeScript
  • 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.

    ProjectbetaTypeScript
  • Browser extension that lets Jev, local Laya or an OpenAI-compatible model take over a running ra2web (WannaFire) RTS match.

    ProjectbetaTypeScript