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.3

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.3
File Size Uploaded
nethackers-0.37.3.tar.gz 4.7 MB Details

Built distribution (wheel)

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

Total release size: 5.4 MB

Release files / nethackers-0.37.3.tar.gz

Download URL nethackers-0.37.3.tar.gz
Size 4.7 MB
Tags Source
SHA-256 checksum
How to use checksums
f90847320e25ab8f0a0ef98d6f2703c1d914ea5d4344e12ce4f63e1a76c3ec46
BLAKE2b-256 checksum
How to use checksums
61589a6ac6ad298d4053bd0c9778484ab9d1d6b9907b89ce73dbe9b5cfde5443
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.3-py3-none-any.whl

Download URL nethackers-0.37.3-py3-none-any.whl
Size 715.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9638c00b8fec257b23ae476f4d3a93d6f34586d26f77b66577ac5532c7eded79
BLAKE2b-256 checksum
How to use checksums
1ecf6576681ee7dd456bc58dad1c14cee2a3aa7a2e9102c4c4907f38acb86776
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

This release

0.37.3 This release

2 release files

0.37.2

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