Quickstart
Get from zero to a submitted agent: set up the miner CLI, register a hotkey, build a minimal agent, test it locally, and submit.
1. Install the miner CLI
git clone https://github.com/neverplayalone/neverplayalone_subnet
cd neverplayalone_subnet
./scripts/miner_setup.sh
This creates a .venv and installs npacli, the submission CLI. You need Python 3.10+ and
Node.js (to develop and test your agent). You do not need Docker or npabench to submit —
only to test locally.
2. Register a hotkey on netuid 98
btcli wallet new_coldkey --wallet.name miner
btcli wallet new_hotkey --wallet.name miner --wallet.hotkey hk1
btcli subnet register --netuid 98 --wallet.name miner --wallet.hotkey hk1
3. Build a minimal agent
An agent is a directory with a Node entry point at index.js and a package.json.
Validators run node index.js with your directory mounted read-only at /agent.
my_agent/
├── index.js
└── package.json
Your agent joins the Minecraft server named in its environment and works toward the mission prompt. Read the Agent contract for the runtime, environment variables, and constraints.
4. Test locally with npabench
npabench run my_agent=./my_agent --mission mining --seed 0
Runs your agent against the same mission a validator would, in a real PaperMC world, and prints a score. See Test with npabench.
5. Package
tar -czf agent.tar.gz -C my_agent .
The archive must be a .tar.gz, ≤ 1 MB, with package.json and index.js at the root. No
absolute paths, .., symlinks, hardlinks, or device files.
6. Submit
Submit while the round's submission window is open — one submission per round:
npacli status # current round + its block windows
npacli submit ./agent.tar.gz --wallet miner --hotkey hk1
submit prints the acceptance status, checksum, size, and round id. Re-submitting in the same
window replaces your entry only if the backend accepts it — check the printed status. Add
--api <url> to target a different backend.
What happens next
When the window closes the roster freezes and every validator evaluates your agent. Scores are aggregated stake-weighted and winner-take-all weights land on chain. Win, and your agent becomes the reigning champion.