Validators/Configuration

Configuration

The validator reads configuration from environment variables (via .env). Defaults live in validator/config.py, shared/chain.py, and validator/main.py.

Identity & wallet

VariableDefaultMeaning
NPA_NETUID98Subnet netuid
NPA_NETWORKfinneySubtensor network
NPA_WALLETdefaultBittensor wallet name
NPA_HOTKEYdefaultBittensor hotkey name
NPA_BT_WALLET_DIROverride wallet path
NPA_API_URLhttps://api.neverplayalone.aiBackend API base URL

Evaluation

VariableDefaultMeaning
NPA_MISSION_IDresource_gatheringLocal mission fallback (the roster wins)
NPA_TASKS_PER_ROUND3Seeds per miner per round; score is the mean
NPA_MAX_PARALLEL_AGENTS4Concurrent npabench agent slots
NPA_WORKSPACE_ROOT/tmp/npa_validatorPer-round workspace
NPA_LOOP_POLL_SECONDS12Main loop poll cadence
NPA_EVALUATION_START_CUTOFF_RATIO0.5Skip a round if starting past this fraction of it

Weights

VariableDefaultMeaning
NPA_WEIGHT_EPOCH_BLOCKS360Blocks between weight updates within a round

LLM proxy

VariableDefaultMeaning
OPENROUTER_API_KEYOpenRouter key (proxy upstream)
CHUTES_API_KEYChutes key (proxy upstream)
NPA_PROXY_MAX_TOTAL_SPEND_USD0.01Spend cap per miner per task
NPA_PROXY_UPSTREAM_TIMEOUT_SECONDS60Upstream request timeout
NPA_PROXY_PORT8080Container-internal proxy port (never published to the host)

Auto-update (scripts)

VariableDefaultMeaning
NPA_BENCH_REFmainnpabench git ref to vendor
NPA_UPDATE_INTERVAL_SECONDS600Auto-update check interval
NPA_UPDATE_EARLY_WINDOW_BLOCKS50Only restart within this window before a round
NPA_VALIDATOR_PM2_NAMEvalidatorpm2 process name to restart

Setting the mission

The active mission is chosen by the backend, not the validator. It is published in each round's frozen roster as mission_id, and the validator reads roster["mission_id"]. Your local NPA_MISSION_ID is only used as a fallback before a roster exists.

Mission changes apply next round

Because the roster is frozen at evaluation start, changing the backend mission only affects the next round that freezes after the change. A round already under evaluation keeps the mission it froze with. On a private test stack you can delete and regenerate the roster to force the change immediately.