Validators

Validator Guide

Run a Platform validator node on Bittensor Subnet 100. No GPU required, no third-party APIs needed - just Docker and your mnemonic.

Key Features

No GPU Required

Validators run on standard CPU servers. Evaluation happens in Docker containers with challenge-specific logic.

No Third-Party APIs

No OpenAI, Anthropic, or other API keys needed. The system handles all LLM integrations.

One Command Setup

Just run docker compose up -d. Watchtower handles automatic updates.

Auto-Updates

Watchtower keeps your validator in sync automatically. Critical for consensus.

Quick Start

Get your validator running in under 5 minutes:

12345678910111213
# Clone the repository
git clone https://github.com/PlatformNetwork/platform.git
cd platform

# Configure environment
cp .env.example .env
# Edit .env: add your VALIDATOR_SECRET_KEY (BIP39 mnemonic)

# Create Docker network (one-time setup)
docker network create platform-network

# Start the validator
docker compose up -d

The validator will auto-connect to the network and sync. No GPUs, no third-party API keys, nothing else required.

Requirements

Hardware

ResourceMinimumRecommended
CPU4 vCPU8 vCPU
RAM16 GB32 GB
Storage250 GB SSD500 GB NVMe
Network100 Mbps100 Mbps

Hardware requirements may increase as more challenges are added. Monitor resource usage.

Software & Network

Docker 24.0+ and Docker Compose v2
Linux (Ubuntu 22.04+ recommended)
Port 9000/tcp open for P2P communication
Minimum 1000 TAO stake
Registered hotkey on Subnet 100

Configuration

Environment variables for your .env file:

VariableDescriptionRequired
VALIDATOR_SECRET_KEYBIP39 mnemonic or hex private keyYes
SUBTENSOR_ENDPOINTBittensor RPC (default: finney)No
NETUIDSubnet UID (default: 100)No
RUST_LOGLog level (debug/info/warn/error)No

Auto-Update (Critical)

All validators MUST use auto-update

Watchtower automatically pulls new validator images and restarts. This ensures all validators run the same version for consensus.

Why auto-update is critical:

⚠️Consensus - All validators must run identical code
⚠️State Hash - Different versions produce different state hashes
⚠️Network Forks - Version mismatch causes network splits
⚠️Weight Rejection - Outdated validators may have weights rejected

Do not disable Watchtower. The default configuration checks for updates every 5 minutes.

Monitoring

Check Validator Status

12345678910111213
# View logs
docker compose logs -f validator

# Check container status
docker compose ps

# View resource usage
docker stats validator

# Health check via RPC
curl -X POST http://localhost:8545/rpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"system_health","id":1}'

Key Log Messages

MessageMeaning
Bittensor hotkey: 5G...Successfully connected to Bittensor
Synced metagraph: N neuronsMetagraph loaded
DB in consensusSynchronized with other validators
Mechanism weights submittedWeights sent to Bittensor

Troubleshooting

Connection refused to Bittensor

Check endpoint connectivity. Try alternative endpoint: wss://subtensor.api.opentensor.ai:443

Insufficient stake

Verify hotkey has 1000+ TAO staked. Check mnemonic is correct and hotkey is registered on Subnet 100.

DB DIVERGENCE detected

State differs from majority. Wait 2 minutes for auto-sync. If persistent, restart with docker compose restart validator.

No peers connected

Verify port 9000 is open: sudo netstat -tlnp | grep 9000. Check firewall settings.

Security Best Practices

Protect Your Keys

Never share your mnemonic. Use environment variables, not command-line args. Restrict .env permissions: chmod 600 .env

Network Security

Use a firewall (ufw, iptables). Only expose required ports (9000). Consider running RPC behind a reverse proxy.

System Security

Keep system updated. Use SSH keys, disable password auth. Monitor logs for anomalies.