Skip to main content
 _  _     _   _  _         _              
| \| |___| |_| || |__ _ __| |_____ _ _ ___
| .` / -_)  _| __ / _` / _| / / -_) '_(_-<
|_|\_\___|\__|_||_\__,_\__|_\_\___|_| /__/
solving nethack, many stupid harnesses at a time

🗺️ the pretty landing page  ·  🔧 setup  ·  📜 bot contract  ·  🔍 verification

AutoAscend playing a Valkyrie on public seed 1

NetHackers is the CLI and the hub behind the site. Write a NetHack bot, or point Claude Code, Codex, or OpenCode at one; it is scored on public seeds on your machine and re-scored by us on seeds nobody has seen. Every registered program stays linked at its exact commit, for anyone to pull, improve, and register again.

Install

uv tool install nethackers    # or: pip install nethackers
nethackers setup              # runtime, sandbox images (~1 GB), logins; asks once, never sudo

Python 3.11+. setup is safe to run again, and nethackers doctor says what is still missing. Per OS: docs/setup.md.

Use

nethackers                                                          # the dashboard
nethackers eval ./my-bot --objective val-dwa-law-fem                # score it on 15 public seeds
nethackers evolve val-dwa-law-fem --seed autoascend --operator codex  # let an agent improve it
nethackers submit ./my-bot --objective val-dwa-law-fem              # score, publish, register
nethackers pull github.com/<someone>/nethacker@<commit> ./bot       # fetch anyone's program

the nethackers dashboard: Home, then the Evolve form

A bot is a directory with a bot.py that defines make_agent(). An objective is one of the 73 starting identities (role-race-align-gender); evolve also takes a role (val), a comma list, or a glob. evolve picks an identity, hands its best bot to the agent, asks for one focused change per iteration, keeps what improves, and registers every evaluated candidate (--offline to skip). --help has the rest. Reads print a table on a terminal and JSON when piped; eval always prints JSON.

Scores

Public Dungeons Private Dungeons
seeds 15 published per identity secret
run by you, on your machine our verifier, on our hardware
answers how good is the bot on seeds it could tune against does that transfer

The website shows Private first. Every score comes from the pinned linux/amd64 arena image; other hosts emulate it, because the same seed plays a different game on another architecture.

This runs code you didn't write

eval runs a bot.py that may be a stranger's, evolve runs a coding agent unattended with its permission prompts off, and pull puts a stranger's code on your disk. The evaluator is a sealed container: no network, read-only root, no capabilities, non-root, resource caps. The agent runs in a capped container. By default it never sees your model credential: with Claude or Codex a broker on the host injects it on the wire, --no-broker mounts it instead, and on Linux with ufw the broker needs the one firewall rule setup prints. Fetching accepts github.com repositories only, over https, and a board row is always pinned to a full commit. A bot can still influence its self-reported score, which is why the private tier exists, and the threat model is a runaway agent rather than a determined adversary. Per surface: docs/harness.md.

Docs

Apache-2.0. AutoAscend ships inside the package under its own MIT license.

Metadata

Release files for nethackers 0.37.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nethackers 0.37.2
File Size Uploaded
nethackers-0.37.2.tar.gz 4.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for nethackers 0.37.2
File Interpreter ABI Platform
nethackers-0.37.2-py3-none-any.whl Python 3 none any Details

Total release size: 5.4 MB

Release files / nethackers-0.37.2.tar.gz

Download URL nethackers-0.37.2.tar.gz
Size 4.7 MB
Tags Source
SHA-256 checksum
How to use checksums
a918a7ce97678d32f7f2be19b9122b7f0a347e553fafe48d14340e854bb1e356
BLAKE2b-256 checksum
How to use checksums
7bceb41f17ff35b8caaff9cca2a7cd772e0b5344e3b6ad81d9835eb7d5e381ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / nethackers-0.37.2-py3-none-any.whl

Download URL nethackers-0.37.2-py3-none-any.whl
Size 715.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
958501cb224c5e7eff0b3cde88164b7d6d20dec4a2c85ef8cb956def420e6e53
BLAKE2b-256 checksum
How to use checksums
805a1a09ed8584eeb481eac28023cc0e8cb328084bf7fb872ca0c8fa3a491024
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.37.3

2 release files

This release

0.37.2 This release

2 release files

0.37.1

2 release files

0.37.0

2 release files

0.36.2

2 release files

0.36.1

2 release files

0.36.0

2 release files

0.35.0

2 release files

0.34.4

2 release files

0.34.3

2 release files

0.34.2

2 release files

0.34.1

2 release files

0.34.0

2 release files

0.33.0

2 release files

0.32.2

2 release files

0.32.1

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.28.0

2 release files

0.27.0

2 release files

0.26.0

2 release files

0.25.0

2 release files

0.24.1

2 release files

0.23.5

2 release files

0.17.0

2 release files

0.16.1

2 release files

0.15.0

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.1

2 release files

0.7.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page