Inspiration
On 9 October 2024, Hurricane Milton made landfall in Florida. That same morning, an X1.8 solar flare launched a radiation storm toward Earth. When cell towers go down, responders and families rely on satellites for emergency comms, damage imagery and flood maps, and those satellites were facing a storm of their own.
Most small satellites, the kind companies and universities launch, can't do much about it. Their processors are small, they see a ground station for only a few minutes per pass, and their one defense is to shut down and wait for instructions. I wanted the satellites that can think to protect the ones that can't.
What it does
Lifeline is a cooperative, in-flight protection system for satellite fleets:
- In-flight analysis: a few compute-capable hub satellites gather radiation and memory-error reports from the fleet over crosslinks. They combine those reports with every satellite's planned orbit to forecast who will be exposed next.
- Protection before impact: each satellite gets its own protective schedule (checkpoint, pause, resume). Critical services are handed to shielded peers, emergency comms first.
- Early warning: an ML screener flags dangerous flares at their X-ray peak, and Grok vision verifies each warning against real solar and coronagraph images. Confirmed warnings let hubs move critical services hours before the protons arrive.
- Grok Sun watch: Grok vision reads real NASA SDO images of the Sun and briefs operators on flare risk a day ahead.
- Grok Voice copilot: operators can ask out loud what's happening, which services are at risk, or why a satellite decided what it did.
- Grok debrief: a plain-language morning-after report for emergency coordinators.
Impact (simulated fleet, real NOAA radiation from 5 storms, 5 seeds each)
| What people get | Ground-controlled | Fixed threshold | Lifeline |
|---|---|---|---|
| Emergency comms outage, all 5 storms | 188 h | 92 h | 2.1 h |
| Emergency comms available during Milton's storm | 20% | 44% | 100% |
| Hurricane imagery on time, Milton week | 39/60 | 41/60 | 60/60 |
How I built it
- Simulator (Python): a five-satellite fleet (two shielded hubs, three simple satellites on polar, sun-synchronous and mid-inclination orbits). A tilted-dipole model of Earth's magnetic shielding is driven by real GOES-18 proton data from NOAA NCEI. Crosslink messages have realistic latency and packet loss.
- ML early warning: I built a labeled dataset of every GOES-18 flare from 2022 to 2026, matched to NOAA's official solar proton event list. I compared 11 models on a time-based held-out split and picked a regularized logistic regression, tuned for high recall. On held-out data it reached ROC-AUC 0.987 and caught 11 of 11 held-out storms.
- Cascade verification: every warning goes to Grok vision (Responses API) with a 2×2 panel of AIA 131 and 193 Å eruption images plus LASCO C2 coronagraph frames. Grok's confirm threshold was calibrated on training-period warnings only. This cut false alarms from 200 to 124 while keeping 10 of 11 storms.
- Grok everywhere: the Grok API powers the in-flight analyst's choices, the Sun watch and the debrief. Grok Voice runs over the realtime WebSocket with ephemeral tokens and client-side tools. Grok Imagine generated the solar storm visuals in my demo video.
- App: FastAPI backend and a vanilla JS dashboard, deployed on Vercel.
Challenges I ran into
- Honest ML is hard: my first probabilities were miscalibrated by class weighting, and a small look-ahead bug let warnings fire minutes too early. I fixed both, and I keep Hurricane Milton and January 2026 strictly out of training.
- Grok confirmed everything at first: the first verifier prompt approved every warning. I rewrote it to state the base rate, ask for a calibrated probability, and set the threshold on training data only.
- Protection can backfire: my first "readiness" mode slowed satellites down so much that they missed deadlines. Readiness now means faster checkpoints at full speed, and only on satellites that will actually be exposed.
- Data wrangling: NetCDF flare catalogs stored longitudes from 0 to 360°, and I had to match flares to NOAA's proton event list by hand-parsed rules.
Accomplishments that I'm proud of
- In my Milton replay, emergency comms stayed up 100% of the time, against 44% for the best conventional approach.
- A complete ML-plus-Grok cascade evaluated honestly on held-out storms, not tuned to the demo.
- Every number in the app is labeled clearly: real events and real radiation, simulated satellites and outcomes.
- Built : simulator, ML pipeline, Grok integrations, dashboard, deployment and demo video.
What I learned
- How Earth's magnetic field shields orbits differently, and why polar satellites take the hardest hits.
- A cheap, high-recall screener plus an expensive, smart verifier beats either alone.
- Calibration and base rates matter as much for LLM judges as for classical models.
What's next for Lifeline
- Run the analyst on real flight-class hardware and test it with a university CubeSat team.
- Add coronagraph-based CME arrival forecasts for geomagnetic storms, not just radiation storms.
- Support larger constellations, multiple operators, and standard crosslink protocols.
Built With
- cursor
- fastapi
- grok-4.7
- grok-api
- grok-imagine
- grok-vision
- grok-voice
- javascript
- nasa-sdo
- noaa-goes-18
- playwright
- python
- scikit-learn
- vercel
Log in or sign up for Devpost to join the conversation.