Build on Nodexo.
Explore verified GPU inventory, connect accounts, automate public API workflows, or run miner and validator infrastructure on the subnet.
Rent compute
Inventory, wallet accounts, SSH keys, rental recovery, and launch-gated provisioning flows.
Agent API
Public API examples for quotes, rental automation, account API keys, and recovery-token management.
Operate hardware
Run miners and validators with PM2, signed endpoints, and hosted proof artifacts.
Renter API
Public renters call the web API. The validator API is not the public renter interface.
Inventory, wallet login, account settings, and API shape are available now. Non-admin rental and top-up writes are gated before payment signing or provisioning until public rentals open.
curl https://nodexo.ai/api/inventorycurl -X POST https://nodexo.ai/api/rent \
-H 'Content-Type: application/json' \
-H 'X-PAYMENT: <x402-payment-header>' \
-d '{
"payment_mode": "x402",
"gpu_model": "NVIDIA RTX A6000",
"gpu_count": 1,
"hours": 4,
"ssh_pub_key": "ssh-ed25519 ..."
}'export NODEXO_API_KEY=vc_...
nodexo --api-url https://nodexo.ai/api credits
nodexo --api-url https://nodexo.ai/api rent --payment credits \
--gpu A6000 \
--ssh-key ~/.ssh/id_ed25519.pubAgent Skills
Task-specific skill documents keep renter automation and operator automation separated.
CLI Reference
The same CLI covers public rentals, account API keys, recovery-token management, and miner fleet operations.
Inventory, marketplace, quote, account, and operator commands are available during preview. Non-admin rent, extend, and top-up commands return the launch gate before funds move or containers start.
export NODEXO_API_URL=https://nodexo.ai/api
export NODEXO_EVM_PRIVATE_KEY=0x...
nodexo inventory
nodexo marketplace
nodexo quote --gpu A6000 --duration 1h --ssh-key ~/.ssh/id_ed25519.pub
nodexo rent --payment x402 --gpu A6000 --duration 1h --ssh-key ~/.ssh/id_ed25519.pubexport NODEXO_API_KEY=vc_...
nodexo credits
nodexo account-rentals
nodexo account-ssh-keys list
nodexo account-ssh-keys add --ssh-key ~/.ssh/id_ed25519.pub --label workstation
nodexo account-ssh-keys remove --key-id <id>
nodexo rent --payment credits --gpu A6000 --storage-gb 30 --ssh-key ~/.ssh/id_ed25519.pubexport NODEXO_RENTAL_RECOVERY_TOKEN=...
nodexo rental-info <rental_id>
nodexo ssh-config <rental_id>
nodexo connect <rental_id>
nodexo rental-extend <rental_id> --hours 4
nodexo rental-key add <rental_id> --ssh-key ~/.ssh/id_ed25519.pub
nodexo rental-key remove <rental_id> --key-text "ssh-ed25519 AAAA..."
nodexo rental-end <rental_id>nodexo fleet
nodexo --wallet <coldkey> --hotkey <hotkey> fleet
# Testnet: netuid 468
nodexo fleet --chain-direct --subtensor-network test
# Mainnet: netuid 106
nodexo fleet --chain-direct --subtensor-network finney
Quick Install
Install miner and validator hosts with the Nodexo installer.
INSTALL_HOST="https://raw.githubusercontent.com"
INSTALL_PATH="nodexo-ai/nodexo/main/install.sh"
curl -fsSL "$INSTALL_HOST/$INSTALL_PATH" | bashINSTALL_HOST="https://raw.githubusercontent.com"
INSTALL_PATH="nodexo-ai/nodexo/main/install.sh"
curl -fsSL "$INSTALL_HOST/$INSTALL_PATH" | \
bash -s -- --validatorMiner Setup
Miners host GPU containers, emit proofs, expose validator-signed lifecycle routes, and allocate SSH ports.
bash scripts/setup_miner.shbash scripts/setup_miner.sh --start \
--wallet nodexo_miner \
--hotkey default \
--subtensor-network test \
--endpoint http://YOUR_PUBLIC_IP:8091# Requires chain_config_mainnet.json in the release repo.
bash scripts/setup_miner.sh --start \
--wallet nodexo_miner \
--hotkey default \
--subtensor-network finney \
--endpoint https://YOUR_PUBLIC_MINER_DOMAINbash scripts/setup_endpoint_proxy.sh --role miner --public-port 8091cp ecosystem.config.example.cjs ecosystem.config.cjs
# edit wallet, hotkey, network, endpoint
pm2 start ecosystem.config.cjs --only miner-nodexo
pm2 logs miner-nodexo --lines 80
pm2 saveOpen the Operator page, enter the miner hotkey, and create a challenge. The page shows the exact command with the challenge already filled in. Run that generated command on a machine with the miner hotkey to link the hotkey to your signed-in account. It does not move funds or change chain state.
Open Operator pageProof and heartbeat traffic goes to validators discovered from chain. EVM validators publish a ValidatorRegistry URL; no-EVM validators publish a native Bittensor axon endpoint. Container lifecycle calls require a signed request from the configured primary validator hotkey.
Chain config files contain public contract addresses and deployment metadata only. Use --subtensor-network test or --subtensor-network finney to select the network. Operators running a local subtensor can pass a URL-like endpoint at runtime; it is not stored in the release config.
Supported GPU Configurations
These GPU configurations are currently accepted by Nodexo. Other configurations will appear here after validation. Runtime config v30.
| GPU | VRAM | Covered range |
|---|---|---|
| NVIDIA A100 80GB PCIe | 80 GB | 1x |
| NVIDIA A100-SXM4-80GB | 80 GB | 1-4x |
| NVIDIA H100 80GB HBM3 | 80 GB | 1-2x |
| NVIDIA RTX A6000 | 48 GB | 1x |
| NVIDIA GeForce RTX 4090 | 24 GB | 1x |
Miner setup stops before registration when the detected GPU configuration is not on this list.
Validator Setup
Validators verify proofs, maintain inventory projections, score executors, and set weights.
bash scripts/setup_validator.shbash scripts/setup_endpoint_proxy.sh --role validator --public-port 9443cp ecosystem.config.example.cjs ecosystem.config.cjs
# edit wallet, hotkey, endpoint, DB_URL, and keep --subtensor-network test
# proof-verifying validators normally use no-EVM mode
pm2 start ecosystem.config.cjs --only vali-nodexo
pm2 logs vali-nodexo --lines 100
pm2 save# Requires chain_config_mainnet.json in the release repo.
# Update ecosystem config to --subtensor-network finney and netuid 106.
pm2 restart vali-nodexo --update-env
pm2 logs vali-nodexo --lines 100Validators can verify miner proofs, ingest signed heartbeats, score executors, and set Bittensor weights. The primary validator handles rental orchestration. Low-resource validators can run follower mode to set weights from published network state.
The validator uses the runtime network flag for both Subtensor and Bittensor EVM access. Public installs use test or finney. A local node is an explicit runtime endpoint, not a value committed into chain_config_*.json.
Endpoint Security
The web app, validator, and miner APIs have different trust boundaries.
Public renter API, wallet login, x402, credits, billing, and rental recovery.
/api/inventory/api/rent/api/account/*Public ingress is signed miner traffic and status only. Control routes stay internal.
/proofs/*/heartbeat/monitor/report/chain/contextLifecycle routes are validator-signed. Public endpoint must not be loopback.
/containers/ports/identity/challenge/hardwareCloudflare Domains
Cloudflare is useful for HTTPS API endpoints, but rental SSH ports remain direct TCP unless you add a TCP proxy product.
- Use a real domain on port 443.
- Terminate HTTPS at nginx on the host.
- Proxy nginx to the loopback Python backend.
- Use Cloudflare WAF/rate limits without browser challenges.
- Cloudflare HTTP proxy does not carry rental SSH ports.
- Keep `20000-20100/tcp` directly reachable.
- Use Spectrum or another TCP proxy only if deliberately designed.
- Never put Access login challenges on miner or validator protocol routes.
Artifacts
The native ZkGEMM proof extension is distributed by immutable manifest, not built from CUDA source on operator hosts. The current manifest is for public testnet preview; paid mainnet uses a production artifact domain.
https://pub-ef00d9a98f734d94af3c8904eba0eb11.r2.dev/zkgemm/v0.1.2/manifest.jsonOperations
Use PM2 for runtime management and keep persistent state out of the git checkout.
nodexo fleet
nodexo inventory
# Testnet: netuid 468
nodexo fleet --chain-direct --subtensor-network test
# Mainnet: netuid 106
nodexo fleet --chain-direct --subtensor-network finneypm2 status
pm2 logs miner-nodexo --lines 80
pm2 logs vali-nodexo --lines 100
curl https://YOUR_PUBLIC_MINER_DOMAIN/health
curl https://validator.nodexo.ai/health