Gaia is a decentralized weather forecasting network built on Bittensor that leverages the Microsoft Aurora foundation model to create accurate, global weather predictions.
Current Focus: Weather forecasting using advanced AI models to predict atmospheric conditions with comprehensive scoring across multiple variables and pressure levels.
π Learn More: Read our whitepaper for the complete vision and technical details.
git clone https://github.com/Nickel5-Inc/Gaia.git
cd Gaia
python ./scripts/setup.py
source ../.gaia/bin/activate|
Generate weather forecasts
|
Coordinate the network
|
| Role | CPU | RAM | Network |
|---|---|---|---|
| Miner | 6-core | 8 GB | 80 Mbps, 1TB/month |
| Validator | 8-core | 16 GB | 80 Mbps, 1TB/month |
- π What is Gaia?
- π― Quick Start
- βοΈ Detailed Installation
- π§ Network Setup
- ποΈ Database Configuration
- π Troubleshooting
- π Documentation
- π Data Sources & Acknowledgments
Gaia is built on Fiber - special thanks to namoray and the Rayon labs team.
- Python 3.8+
- Git
- PostgreSQL (for validators)
# Clone repository
git clone https://github.com/Nickel5-Inc/Gaia.git
cd Gaia
# Run automated setup (creates virtual environment & installs dependencies)
python ./scripts/setup.py
# Activate virtual environment
source ../.gaia/bin/activatepip install "git+https://github.com/rayonlabs/fiber.git@production#egg=fiber[full]"pip install -e .btcli subnets register --subtensor.network <NETWORK> --netuid <NETUID> --wallet.name <COLDKEY> --wallet.hotkey <HOTKEY>Gaia uses a proxy server to handle connections between miners and validators.
./setup_proxy_server.sh --ip <YOUR_IP> --port <PORT> --forwarding_port <PORT_FOR_MINER_OR_VALIDATOR> --server_name <NAME>Important Notes:
- The proxy server must be running for proper communication
--portis your external facing port--forwarding_portis the internal port for miner/validator communication--server_nameis optional
fiber-post-ip --netuid <NETUID> --external_ip <YOUR_IP> --external_port <YOUR_PORT> --subtensor.network <NETWORK> --wallet.name <COLDKEY> --wallet.hotkey <HOTKEY>Important:
- Only needed once per key
- Use the EXTERNAL port from your proxy server configuration
- Re-post if you get deregistered or IP changes
If you encounter a "Peer authentication failed" error when running the validator locally:
-
Locate your
pg_hba.conffile:# Find the file location sudo -u postgres psql -c "SHOW hba_file;"
-
Edit the configuration:
sudo nano /path/to/your/pg_hba.conf
-
Change authentication method: Find this line:
local all postgres peerChange
peertomd5:local all postgres md5 -
Reload PostgreSQL:
sudo systemctl reload postgresql
-
Set environment variables in your
.envfile:DB_USER=postgres DB_PASSWORD=your_actual_postgres_password DB_HOST=/var/run/postgresql DB_NAME=validator_db
NEW: Streamlined database synchronization with one-command setup!
Primary Node (creates backups):
sudo python gaia/validator/sync/setup_auto_sync.py --primaryReplica Node (restores from backups):
sudo python gaia/validator/sync/setup_auto_sync.py --replicaAdd to your .env file:
# Required for R2 backup storage
PGBACKREST_R2_BUCKET=your-backup-bucket-name
PGBACKREST_R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
PGBACKREST_R2_ACCESS_KEY_ID=your-r2-access-key
PGBACKREST_R2_SECRET_ACCESS_KEY=your-r2-secret-key
# Set to True for primary node, False for replica
IS_SOURCE_VALIDATOR_FOR_DB_SYNC=Trueβ
One-command setup - No manual pgbackrest configuration
β
Application-controlled scheduling - No cron jobs needed
β
Automated recovery - Self-healing backup system
β
Real-time monitoring - Health checks and status reporting
Problem: Validator crashes with SyntaxError: invalid syntax related to async keyword.
Solution: The validator automatically detects and fixes this issue. For manual fix:
pip uninstall asyncio -y
python -c "import asyncio, multiprocessing; print('β
Fixed')"Problem: Logs flooded with DEBUG messages from fiber modules.
Solution: Automatically suppressed by default. To enable:
export GAIA_ENABLE_DEBUG_SPAM=true # Not recommended in productionProblem: Small tasks run slower with multiprocessing overhead.
Solution: Configure thresholds:
# Set minimum computations for multiprocessing (default: 10)
export GAIA_MP_THRESHOLD=20
# Disable multiprocessing completely
export GAIA_DISABLE_MP=trueWhen to use multiprocessing:
- β Large weather scoring runs (10+ computations)
- β Production validation with many miners
When to use sequential:
- β Small test runs (< 10 computations)
- β Development/debugging
- π Mining Guide - Complete guide for miners
- π Validating Guide - Complete guide for validators
- π Whitepaper - Technical vision and architecture
- π Weather Scoring System - Scoring methodology
- π Stats Coverage Analysis - Performance metrics
- Microsoft Aurora - Foundation model for Earth system prediction
- Fiber - Distributed computing framework
- Bittensor - Decentralized AI network
| Source | Description | License |
|---|---|---|
| ECMWF Open Data | European weather forecasts | Open Data |
| HLS Sentinel-2 | Multi-spectral satellite imagery | NASA Open Data |
| SMAP | Soil moisture measurements | NASA Open Data |
| SRTM | Global elevation data | NASA Open Data |
| Dst Index | Geomagnetic activity data | Kyoto University |
Copyright 2024 Nickel5 Inc. Licensed under MIT License.
Disclaimer: ECMWF does not accept any liability whatsoever for any error or omission in the data, their availability, or for any loss or damage arising from their use.
