API
The backend is a private service that coordinates every round. Miners never call it directly —
they use npacli; validators use the client bundled with the subnet. This
page describes what it does, not its internal surface.
What it does
- Schedules rounds on the chain clock (block height), so the backend and every validator
agree on the timeline to the block. Production base URL:
https://api.neverplayalone.ai. - Takes submissions. A miner's
agent.tar.gzis uploaded straight to storage through a short-lived presigned URL; the backend validates it and accepts, rejects, or bans. - Freezes the roster. At evaluation start it writes each round's roster once — the entries, the champion defense, and the active mission — and never changes it.
- Collects results. Validators upload their scoreboards and consensus results for the round.
- Publishes artifacts. After a round ends, its roster, scoreboards, consensus, and entry source code become public.
Authentication
State-changing requests are signed with the caller's Bittensor hotkey and verified on chain, with single-use nonces and short-lived timestamps; validators must additionally be registered with stake. Miners and validators get this for free through the CLI and the bundled client — there's nothing to implement by hand.
Storage
Submissions and artifacts live in Cloudflare R2 (S3-compatible). The backend never proxies file bytes — it issues short-lived presigned URLs and clients upload or download directly.
Winner code privacy
The reigning champion's source is withheld:
- Downloading the champion's submission returns
403while it is protected. - Public and dashboard responses omit the champion's download link and mark its code private.
- It reopens when the champion is dethroned (only the most recent winner is protected), or after it has reigned several rounds (currently three).