Forecast droughts and tropical cyclones, simulate cloud-seeding interventions, and find the one that works best before the disaster arrives.
🥇 1st Place, Sustainability Track · TreeHacks 2026 (Stanford)
Live demo · Devpost · Demo video
Precipitation change 126 hours after seeding, for each of the four methods, over a Middle East drought. Electric ionization (green border) had the largest effect.
Morro is a simulator for the people who would decide on local weather interventions: drought agencies, meteorological bodies, and environmental regulators. Starting from the current state of the atmosphere, it:
- Forecasts 10 days ahead with two AI weather models, Google DeepMind's GraphCast and NVIDIA Earth2Studio. Both start from ERA5 reanalysis states (40+ variables across pressure levels on a 1° grid).
- Detects the threat. Random Forest classifiers trained on ERA5 estimate drought and heat-dome severity with the Composite Drought Severity Index, and detect tropical-depression formation from pressure fields.
- Simulates four seeding methods (electric ionization, glaciogenic/silver iodide, hygroscopic/giant CCN, and laser-induced condensation) and ranks them by how much they help.
In the Middle East drought scenario above, electric-ionization seeding increased precipitation by 16%.
flowchart LR
A[ERA5 atmospheric state] --> B[Control forecast<br/>GraphCast / Earth2Studio]
B --> C[Detect drought or cyclone<br/>Random Forest]
C --> D[Apply seeding mask<br/>to initial state]
D --> E[Seeded forecast]
B --> F[Compare control vs. seeded]
E --> F
F --> G[Dashboard]
Each intervention is a physics-calibrated perturbation mask: an additive change to the model's initial atmospheric state, scaled to the dose and to current conditions using thermodynamic relationships. The weather models are autoregressive. Each takes two starting snapshots (now and 6 hours earlier) and predicts forward in 6-hour steps on a 40K+ node global mesh, so the perturbation carries through the full 10-day rollout. Comparing the seeded rollout with the control rollout shows the intervention's effect, region by region.
| Path | Contents |
|---|---|
treehacks/ |
The Morro pipeline: seeding masks (geoengineering_masks.py), GraphCast integration (graphcast_geoengineering.py), Earth2Studio pipeline (climate_intervention.py), drought detection and analysis |
climate-intervention-dashboard/ |
Next.js dashboard comparing control and seeded forecasts, deployed on Vercel |
run_graphcast_10day.py, run_graphcast_small.py |
Run GraphCast forecasts from ERA5 sample data |
drought_detector.py, drought_map.py, extreme_drought_map.py |
Drought classification and maps built from forecast output |
graphcast/, setup.py |
Google DeepMind's GraphCast package, included unmodified |
# Python pipeline
pip install -e . # installs DeepMind's graphcast package and its JAX dependencies
pip install scikit-learn joblib cartopy shapely google-cloud-storage earth2studio
python run_graphcast_10day.py # 10-day forecast; downloads weights and ERA5 sample data from Google Cloud
python drought_detector.py predictions_10day_real.nc # classify drought severity
cd treehacks && python graphcast_geoengineering.py --help # run seeding interventions over a lat/lon box# Dashboard
cd climate-intervention-dashboard
pnpm install && pnpm devPython · JAX · GraphCast · NVIDIA Earth2Studio · xarray · scikit-learn · Next.js · Tailwind · Vercel
Built at TreeHacks 2026 by Thaarak Sriram, Tej Kosaraju, and Kieran P.
Built on GraphCast by Google DeepMind. Their graphcast/ package is included unmodified under the Apache 2.0 license, and this repository uses the same license. GraphCast model weights and ERA5 data come with their own terms of use; see DeepMind's repository for details.
