_  _     _   _  _         _
| \| |___| |_| || |__ _ __| |_____ _ _ ___
| .` / -_)  _| __ / _` / _| / / -_) '_(_-<
|_|\_\___|\__|_||_\__,_\__|_\_\___|_| /__/
solving nethack, one stupid harness at a time  ·  v0.8.1

@ What is this?

NetHack (1987) is among the oldest unsolved challenges in games. Winning — an ascension — means descending some fifty procedurally generated levels, seizing the Amulet of Yendor, and escaping through five final planes: tens of thousands of turns under permadeath, randomized item identity, and a knowledge burden its own developers say takes years to master.

Humans win rarely but reliably — 0.4% of 8.6 million public games ascend, yet the record streak is 61 wins in a row and top players hold 70–90% lifetime. Machines are another story. The entire history of autonomous wins is three games, in 2015, by one hand-coded bot, on a version whose winning exploit was patched out that same year. On modern NetHack, no program has ever won.

THE STATE OF THE DUNGEON — every line of attack, ascensions on modern NetHack (3.6+)
Line of attackBest known resultAsc.
Humans, all logged gamesmedian score 836 ("Beginner"); ascension is death-cause #150.4%
Humans, experts15.9% win rate, 47–71% in form; record streak 61reliable
Symbolic — BotHack (2015)won on v3.4.3 via a pudding-farming exploit, removed in 3.63*
Symbolic — AutoAscend (2021)challenge median 5,300; no successor in 5 years; Medusa in 0 of 109,545 games0
Learned — imitation + RL (2021–)plateaus below the very bot it imitates0
LLM direct play (2026)6.8% progression while saturating every other game in BALROG0

Every machine line: zero ascensions on NetHack 3.6+, the modern research standard. *BotHack's three wins were on the older 3.4.3, via an exploit the developers then removed.

Why now

In the last couple of years, coding agents that write and refine programs in a loop have started cracking problems that resisted everything else. They push abstract-reasoning puzzles that stalled LLMs for years, beat the human winners of SAT-solver competitions, and turn up new, provably-correct algorithms. The pattern is consistent: a model that cannot reliably do the task itself can write a program that does.

NetHack is where that pattern has never held. Its own creators put it forward as a grand challenge for AI, and it is still unsolved years later; one of them marks the anniversary each year with "AI still can't learn to play NetHack." It is the hardest game in the BALROG suite, the one frontier models fail while saturating the rest. Whether the approach cracking everything else can crack this one, nobody knows.

That is what NetHackers is for: an open attempt to find out together. What we score is the program a coding agent writes, and every result compounds on the last instead of restarting with each paper.

How it works

The unit of evaluation is the program — a deterministic bot, cheap to run and exactly replayable. Objectives grid over the 73 starting identities and the milestone ladder, so specialists, generalists, and firsts all have somewhere to land. A thin hub keeps each objective's best elites; anyone can pull one, improve it, and register the result — so one contributor's improvement becomes everyone's parent. The hub never runs your search and assigns no work; how you make bots is entirely up to you.


! Why you should care

Two kinds of people get pulled into this.

If you do AI research

NetHack is a live, unsolved benchmark for the question the whole field is on: can an agent turn knowledge it already has into working code? The knowing–doing gap is clean and measurable, the output is a symbolic program you can read rather than one more opaque score, and the evaluation is cheap, seeded, and renewable — a benchmark you cannot memorize or cheaply saturate. It gives agentic operators, program search and evolution, and neuro-symbolic policies a hard, honest target, and every result lands in a shared, permanent archive. » the paper & hub API

If you just think it's cool

You don't need to be good at NetHack, or an ML researcher. A coding agent and a laptop will do. Point it at a bot, watch it evolve and climb the board, and go for something no machine has managed in nearly four decades: get a program to win. It runs locally, it is genuinely addictive (a slot machine of stupid deaths and small breakthroughs), and every win you register becomes someone else's starting point — your name on the frontier. » start solving


$ Leaderboard

Every registered program, ranked by mean progression on this objective — how far each delve got, and how deep it reached. Each was produced by a hacker (that's you, if you join in) through the shared evolution, their own harness, or any other means. The platform scores the program and never asks how it was made. AutoAscend sits at the bottom of every table, where this effort started, as the yardstick for how far past it we've gotten.

objective: tally: tier:

Two tiers, by design: self-reported lands the instant you register, so search is never bottlenecked on our compute; verified is the trusted tier — the hub re-runs the program on held-out seeds. Verification (M2b) isn't live yet, so today every result is self-reported.

LEADERBOARD — VALKYRIE DWA-LAW-FEM — self-reported*
[ --More-- ]
deepest coverage · most cells held
first to light · firsts

< The Frontier

Mean progression (0–1) for all 73 role×race×alignment×gender identities. A darker cell is deeper progress; a blank cell is unexplored ground.

Every number is a mean progression (0–1) over that identity's evaluated episodes — the one thing we measure. Ascension sits at the top of the scale (0.875); today only one identity has been touched, and its deepest cell is far below it. These are all self-reported; the verified frontier lands with M2b.

regime: tier:
progression: 0.0 → 1.0 unexplored ★ ascended ≥ 0.875

^ Progress

The community frontier, best-so-far, week by week since AutoAscend set us going. The red AA> line is where we started. Up and to the right is the whole job.

plot: tier:

? Contribute

The platform evaluates and registers programs, and never meters the search that made them — so there are two ways to pitch in.

a) Join the distributed evolution

You don't build a bot from scratch, and you don't need to be good at NetHack. Your machine joins a shared evolutionary harness: it pulls the current best elite from the hub, a coding agent (Claude Code or Codex) mutates it in a sandboxed arena, and every validated win registers back — becoming the next parent for everyone. Concurrent runs cooperate as islands. Needs Docker.

# one-time GitHub sign-in $ pip install nethackers $ nethackers login # evolve, and watch it climb (or die) $ nethackers evolve --objective val-dwa-law-fem

» Read the quickstart

b) Bring your own harness

Study the search, not the game. Any agentic loop is fair — we score only what its bots do: validated win-rate, tokens per candidate, evals-to-first-win, cost per win. Conform to the ArenaBot contract and register a repo@commit. Our own hermetic coding-agent evolver is just the worked example.

# your solution lives at a public repo@commit $ nethackers submit ./my-solution --objective ... # anyone can fetch and build on it, anywhere $ nethackers pull github.com/you/nethacker@a1b2c3d

» Read the paper & hub API

The one lesson we'll spoil for free: a coding agent that remembers yesterday's run stops exploring, so seal your operator from its own past, not only from the evaluator.

something is climbing up out of the dark ♫ 0%