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:
# 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 -dThe validator will auto-connect to the network and sync. No GPUs, no third-party API keys, nothing else required.
Requirements
Hardware
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 4 vCPU | 8 vCPU |
| RAM | 16 GB | 32 GB |
| Storage | 250 GB SSD | 500 GB NVMe |
| Network | 100 Mbps | 100 Mbps |
Hardware requirements may increase as more challenges are added. Monitor resource usage.
Software & Network
Configuration
Environment variables for your .env file:
| Variable | Description | Required |
|---|---|---|
VALIDATOR_SECRET_KEY | BIP39 mnemonic or hex private key | Yes |
SUBTENSOR_ENDPOINT | Bittensor RPC (default: finney) | No |
NETUID | Subnet UID (default: 100) | No |
RUST_LOG | Log 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:
Do not disable Watchtower. The default configuration checks for updates every 5 minutes.
Monitoring
Check Validator Status
# 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
| Message | Meaning |
|---|---|
Bittensor hotkey: 5G... | Successfully connected to Bittensor |
Synced metagraph: N neurons | Metagraph loaded |
DB in consensus | Synchronized with other validators |
Mechanism weights submitted | Weights 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.