bilawalsidhu/gods-eye-view
God's Eye View is an open-source, vanilla JavaScript + CesiumJS + Vite 3D globe that fuses live public feeds (aircraft, ships, satellites, quakes, public cameras, weather) into one explorable scene. Its AI layer is a hands-free voice agent on the OpenAI Realtime API with 30 tools: camera fly-to, whiteboard annotations, analyst queries over live layers, and scene-context and screenshot grounding. Keys stay server-side and the browser gets only a short-lived session token. An experimental ChatGPT/Codex OAuth path is also supported. The app doubles as an MCP server, so Claude Desktop, Codex or ChatGPT can open the globe from a conversation.
What it claims
A local-first 3D globe that runs without any API keys. The page lists twenty layers and map sources, and says seventeen have a keyless path. Flights, military traffic, satellites, earthquakes, public cameras, radio, launches and the weather stack all work out of the box on Esri imagery with keyless terrain. OSM is the fallback if Esri is unreachable. Keys are optional upgrades:
- Photorealistic 3D: a Cesium ion token or a Google Maps key.
- Voice: an OpenAI key.
- Higher polling allowances: AIS, TomTom, Mapillary and OpenSky OAuth keys.
The page states that some layers are not live data. Traffic is simulated along real roads from aggregate location data. CCTV camera poses and rocket launch trajectories are coarse estimates. The Falcon 9 replay is labelled "RECONSTRUCTED ESTIMATE." The project is MIT-licensed. Bundled and live datasets carry their own terms. The Nepal flood scene data is non-commercial.
How it works
- Smoothing: live feeds arrive every 15–30 s. The globe renders one interval behind real time, interpolates between fixes and uses dead reckoning to fill gaps.
- Satellites: propagated with SGP4, with orbit rings realigned via GMST so they don't drift.
- Request budgets: an OpenSky credit governor, a TomTom daily tile budget and disk-cached TLEs. The page says these do not replace provider quotas.
- Live video: HLS cameras go through a server proxy with tight limits:
- 2 concurrent sessions
- at most 12 segments and 24 MiB in memory each
- 4 MiB / 10 s cap per download
- redirects, encrypted playlists and non-MPEG-TS segments are refused
- RTMP is unsupported
- Code layout: one module per layer under
src/data/, and voice tools undersrc/voice/. A street-imagery provider is added by implementing the contract insrc/layers/streetLevel/registry.js.
flowchart LR B[Browser] -->|Google Maps / Cesium ion keys only| P1[Tile providers] B --> S[Local server, localhost] S -->|API key, default| O[OpenAI Realtime] S -->|Codex OAuth, loopback only, experimental| O S --> X[AIS / OpenSky / camera proxy] O -->|short-lived session token| B
The only keys the browser sees are Google Maps and Cesium ion. You must restrict both at the provider.
How to use it
Use Node 24.x (24.14.0 or later) or 26.x. The setup doctor warns on Node 25, which is end-of-life.
git clone https://github.com/bilawalsidhu/gods-eye-view.git
cd gods-eye-view
npm ci
npm run doctor
npm run devOpen http://localhost:4173. Add keys through the in-app POWER UP panel. They are written to the repo-root .env, which is plaintext, set to owner-only and excluded from Git. On macOS, ./scripts/dev-fresh.sh pulls keys from the Keychain instead.
For headless machines, coding agents or scripts:
OPENAI_API_KEY="…" AISSTREAM_API_KEY="…" npm run dev -- --host localhost --port 4173Pinokio users need version 8.2 or later. Do not enter credentials in Pinokio 8.0.40's Configure panel, because it logs submitted values. MCP setup for Claude Desktop, Codex and ChatGPT is in docs/MCP_SETUP.md.
To check voice end to end:
node scripts/qa-voice-auth.mjs http://127.0.0.1:4189 oauth microphone.wavCosts (mid-2026, per the page): Google's first 1,000 Photorealistic 3D Tiles sessions each month are currently free, and one root request supports about three hours of rendering. Billing must still be enabled, so set quotas and budget alerts.
Startup: a single M5/Chrome capture measured a median 1.86 s cold start. The page presents this as a comparison baseline, not a guarantee.
Limits
- Old installs: they query public OpenStreetMap Overpass servers, which now refuse them. Traffic, Mapped Installations and ALPR stay empty until you update.
- ChatGPT/Codex OAuth voice is experimental:
- No supported Realtime contract for reusing Codex tokens has been confirmed, and billing or support terms are not established.
- It needs file-based
auth.jsoncredentials. - The login button may fail on Windows.
- LAN sharing:
- It requires an explicit
--host 0.0.0.0, and LAN hostnames must be listed inGEV_ALLOWED_HOSTS. - Provider Settings is disabled when the server is shared.
- App rate limits are not billing caps.
- Pinokio LAN and Cloudflare sharing are disabled. Remote access needs a separately reviewed auth proxy.
- Coverage: terrestrial AIS goes quiet mid-ocean. Satellite AIS, SAR and premium imagery are not included.
- Status: "not a hardened production service." The page says not to use it for navigation, emergency response or other operational decisions.
- Contribution policy: no named-person search, face recognition or individual tracking. Pull requests that add these won't be merged.
Organisations named here
- Halfpixel
- OpenAI
- Cesium
- Mapillary
- Pinokio
- Anthropic
- Mozilla
- Brave
- NOAA
- ECMWF
- TomTom
- OpenStreetMap
- Bilawal Sidhu
Technologies named here
- God's Eye View
- OpenAI Realtime API
- CesiumJS
- Vite
- Pinokio
- MCP server
- Codex
- OpenAI Responses API
- Claude Desktop
- ChatGPT desktop
- hls.js
- Google Photorealistic 3D Tiles
- Cesium ion
- Mapillary
- OpenAI API
- Model Context Protocol
- Node.js
- ChatGPT
- JavaScript
- OAuth
Techniques named here
- Realtime voice agent with live scene context
- Visual grounding
- Interpolation with dead reckoning
- SGP4 satellite propagation
- Server-side credential brokering
Related in llm-apps