Kosmoskopos is Greek for "world-watcher" (kosmos, world + skopos, watcher/scout).

Inspiration

When a disaster strikes, the data already exists (seismographs, storm trackers, fire satellites, city open-data feeds) but it is scattered across a dozen dashboards nobody watches together. I wanted one place to see every active crisis on Earth at once, ask plain-language questions about it, and zoom from the whole planet down to the nearest cooling centre, built entirely from free, public data so it could actually be deployed and used, not locked behind enterprise APIs.

What it does

Kosmoskopos is a real-time humanitarian crisis map on a photorealistic 3D globe. It fuses live public feeds (GDACS global disaster alerts, NOAA hurricanes, NASA FIRMS wildfires, USGS earthquakes, and Toronto's 585 heat-relief "cool spaces") into one situational-awareness view. You can talk to it: a free-AI "Duty Officer" reads what is on your screen and answers in a concise situation report. And with one toggle, the AI runs 100% in your own browser via WebGPU: private, offline-capable, and free.

How I built it

  • Photorealistic globe: CesiumJS plus Google Photorealistic 3D Tiles streamed through Cesium ion (no cloud billing).
  • Live crisis layers: same-origin Node proxies fetch each public feed (GDACS, NHC, NASA FIRMS, USGS, City of Toronto CKAN) and render them as interactive markers colored by severity.
  • Resilient free-AI analyst: a server-side chain (Google Gemini, then Groq, then a local model, then a deterministic rule-based SITREP) so it never errors even when free quotas run dry.
  • Private in-browser AI: WebLLM compiles a small language model to WebGPU shaders and runs it entirely in the visitor's browser.
  • Keys stay server-side; per-IP rate limits protect the free tiers; everything is free-tier or local, so nothing can be billed.

Challenges I ran into

Making it genuinely free AND reliable: free AI tiers rate-limit, so I built a four-tier fallback (cloud, then local, then rule-based) that always answers. Getting a photorealistic globe with zero billing meant routing Google's 3D tiles through Cesium ion's free tier. And a subtle WebGL compositing bug (MSAA plus preserveDrawingBuffer) rendered the globe black until I tracked it down.

What I learned

How much of the planet you can make sense of from public data alone; how to design an AI feature that degrades gracefully across free tiers instead of failing; and that in-browser WebGPU inference is now good enough to give every visitor a private, free AI.

What's next for Kosmoskopos

More layers (air quality, transit, flood forecasting), historical replay, and alerting so Kosmoskopos can warn, not just show.

Built With

Share this project:

Updates