Documentation
How to use the hosted God's Eye View demo, how it is built and run, and what it can and can't do yet. God's Eye View itself is the open-source work of Bilawal Sidhu; this deployment is unofficial.
1. Getting in
- Open godseyeviewapp.getskills.site in a recent desktop browser (Chrome, Edge, Safari or Firefox). The globe needs WebGL and a reasonable GPU. Phones work but are cramped.
- Enter the access PIN. Ask whoever shared this page with you; it is not published, because every visit spends real data-provider quota.
- The PIN keeps you signed in on that browser for 7 days. Too many wrong tries locks a network out for 15 minutes.
- A "Choose your first view" panel appears. Pick Live contacts for planes and ships, Environmental for quakes and fires, or press Esc to explore freely.
2. User manual
The screen
| Area | What it does |
|---|---|
| Top left: Data layers, Scenes | Switch live layers on and off; load saved scenes. |
| Top centre: icons | Map tools, share link, detection and orientation, globe reset. |
| Right: Display, CCTV, Street level, Context | Panels for visual options, public cameras, street-level photos and the contacts or briefing context. |
| Bottom: Location | Search box and quick jumps (Austin, San Francisco, New York, Tokyo, London). |
| Bottom: Visual presets | The seven sensor styles. |
| Bottom centre: mic | Voice control. It is not enabled on this demo. |
Data layers
| Layer | Source | Status here |
|---|---|---|
| Flights | OpenSky / ADS-B, aircraft types from adsbdb | Live |
| Military | adsb.lol military feed | Live |
| AIS vessels | AISStream | Live |
| Satellites | CelesTrak element sets | Live |
| Earthquakes | USGS realtime feed | Live |
| Fires | NASA FIRMS | Live |
| Traffic | TomTom flow tiles | Live (daily cap) |
| CCTV | City and transport-agency camera APIs | Live |
| Street level | Mapillary, KartaView, Panoramax | Live |
| Weather, transit, cyclones, radio and more | Various public feeds | Available upstream; not individually verified here |
Keyboard
| Key | Action |
|---|---|
| 1–7 | Switch among the seven visual styles: normal, CRT, night vision, FLIR thermal, anime, noir and snow |
| H | Show or hide the heads-up display |
| D | Cycle detection overlays |
| C | Cockpit, when an aircraft is selected and tracked; otherwise toggles cameras |
| O | Toggle orbit |
| V | Clean view (hide the interface) |
| F | Toggle the layers panel |
| ` | Frame-rate readout |
| Esc | Leave cockpit or close the current panel |
Cockpit mode
Open the Context panel in Contacts mode, or pick Live contacts at start. Click an aircraft to select and track it, then press C or use the cockpit control. The camera rides the contact with terrain underneath, a heads-up display of speed and altitude, and nearby flights labelled by callsign and flight level. Esc returns to the globe.
Public cameras
Turn on Cameras over a covered city (Austin is the richest). Each camera sits where it stands, and its live frame projects into the 3D scene. The CCTV panel steps through cameras (Prev, Next, Nearest) and switches coverage volumes on, showing what each camera can and can't see.
Share links
The share icon copies a link that restores the camera, style, map and layers. Links on this demo use the demo address, so recipients need the PIN too. The format is a URL fragment, for example:
https://godseyeviewapp.getskills.site/#v=2&lat=30.2672&lon=-97.7431&alt=6000&heading=0&pitch=-50&roll=0&style=nvg&l=…
3. A day in the life
Dana runs logistics for a regional freight company and wants to know why a container ship hasn't docked in Long Beach.
- 08:10
Dana opens the demo, enters the PIN and picks Live contacts. She types33.75,-118.22into Location and the globe flies to the port. - 08:12
She turns on AIS vessels. Dozens of ships appear, most of them anchored offshore in a queue. She clicks her ship: name, speed 0.1 knots, heading and its wake trail. - 08:15
In the CCTV panel, Nearest finds a public camera on the waterfront. The live frame shows a crane idle and the berth empty. - 08:18
She switches on Traffic: the terminal access roads are red. She copies a share link with all three layers on and sends it to her team with the PIN. - 08:25
Before closing, she checks Earthquakes and Fires along the inland route the cargo takes next. Nothing within 50 km.
4. Technical architecture
God's Eye View is vanilla JavaScript with CesiumJS for the globe and Vite as its server. In this project the "server" is Vite's own server plus middleware that proxies each data provider. That's why it needs a running Node process rather than static hosting.
Request path
- Browser → Vercel.
godseyeviewapp.getskills.siteis a tiny Vercel project whose only job is a rewrite to the demo host's tunnel address, under an internal prefix/__godseyeviewapp/. - Vercel → Tailscale Funnel. An encrypted tunnel delivers the request to the host machine. No router ports are open.
- Funnel → PIN gate. A small, dependency-free Node proxy on the host's loopback interface. It strips the prefix, checks a signed session cookie (or shows the PIN page), refuses blocked routes and forwards the rest. The same gate can multiplex further demos by prefix; requests without a prefix go to the first, longest-running demo.
- Gate → God's Eye View. The app on loopback serves the client and answers
/api/*by calling providers with keys held in its ignored.env. - Browser → tile servers. The globe's 3D tiles and imagery load straight from Cesium ion, Esri or OpenStreetMap.
Security model
- Who can spend keys: only PIN holders. Upstream, the app refuses data routes for any proxied request; on this demo the gate presents verified visitors as local, deliberately, so the full feature set works. The owner chose this trade-off.
- Key management is closed three ways: the gate returns 404 for
/api/setup*and/mcp, the app runs in sharing mode (its Provider Settings and MCP surfaces disabled), and the app rejects credential writes from non-local hostnames. - Unknown hostnames are refused by the app's Host allowlist.
- Public tokens: the Cesium ion and Mapillary tokens are public by design (read-only, browser-side), as upstream documents.
- Spend limits: per-peer throttles on cost-bearing routes, a TomTom daily tile budget, PIN attempt limits, and caps set on the provider dashboards.
- No visitor data is stored beyond the session cookie. The demo itself has no accounts.
Operations
The app and the gate run as macOS launchd agents with keep-alive, so they restart after a crash or reboot. Hot reload is switched off for the public lane (a configuration wrapper, not a code change), because Vercel rewrites can't carry WebSockets. The fork is unmodified upstream code; everything specific to this deployment lives in a separate delivery repository.
5. API reference
These are the app's own same-origin routes, as observed on this deployment. Behind the demo they need the session cookie. They are internal, unversioned, and may change upstream.
Data routes
| Route | Returns | Provider |
|---|---|---|
GET /api/flights?lamin&lomin&lamax&lomax | OpenSky-style state vectors in a bounding box | OpenSky / ADS-B |
GET /api/adsbdb/type/{icao24} | Aircraft type and operator | adsbdb |
GET /api/military | Military aircraft tracks | adsb.lol |
GET /api/vessels | Live AIS vessel positions | AISStream |
GET /api/celestrak/{group} | Orbital elements (stations, gps-ops, galileo, glo-ops, geo, visual) | CelesTrak |
GET /api/firms | Active fire detections | NASA FIRMS |
GET /api/tomtom/status, /api/tomtom/flow/… | Budget status; traffic flow tiles | TomTom |
GET /api/cctv/sources, /health, /frame/{id} | Camera catalogue, health, latest frame | City camera APIs |
GET /api/mapillary/status, /tiles/… | Street-level coverage tiles | Mapillary |
GET /api/terrain/heights?points=lon,lat;… | Ground heights for placing objects | Terrain service (90 req/min per peer) |
Earthquakes load directly from the USGS public feed in the browser.
Configuration
Settings for this deployment (values for keys are never published):
| Setting | Where | Purpose |
|---|---|---|
CESIUM_ION_TOKEN, AISSTREAM_API_KEY, FIRMS_MAP_KEY, TOMTOM_API_KEY, MAPILLARY_CLIENT_TOKEN | app .env | Provider credentials |
PINOKIO_SHARE_LOCAL=1 | app service | Sharing mode: disables Provider Settings and MCP |
TOMTOM_DAILY_TILE_BUDGET=4000 | app service | Traffic tile cap per day |
GEV_ALLOWED_HOSTS | app service | Hostnames the app answers |
GATE_ROUTES, GATE_PIN, GATE_SECRET, GATE_DAYS | gate .env | Demo routing, PIN and session signing |
6. Known limits
- Partial Shared terrain budget. Every visitor reaches the app through one gate, so they share one 90-per-minute terrain-lookup bucket. Dense camera views can trigger brief retries.
- Partial Single host. The demo is up while its host machine is awake and online. A 24×7 cloud twin is on the roadmap.
- Roadmap Voice control needs an OpenAI or Gemini key; the mic is inactive here.
- Roadmap Direct Google 3D tiles and place search need a billed Google Maps key. Google's 3D tiles still appear through Cesium ion.
- Live data is live. Coverage depends on what providers report right now: few planes over oceans, cameras only in covered cities, satellites only for loaded groups.
7. Credits & licences
Software. God's Eye View © 2026 Bilawal Sidhu, MIT License, github.com/bilawalsidhu/gods-eye-view. The MIT grant covers the source code only. This is an unofficial, non-commercial demo of an unmodified fork. It is not endorsed by or affiliated with the author or Halfpixel.
Data and assets remain under their owners' terms:
- OpenSky Network, adsb.lol, adsbdb, AISStream, CelesTrak, USGS (public domain), NASA FIRMS (citation requested), TomTom, Mapillary, KartaView, Panoramax, public camera operators: live, under each provider's terms.
- Google Photorealistic 3D Tiles via Cesium ion (Community plan, non-commercial); Esri World Imagery; OpenStreetMap contributors (ODbL).
- Bundled datasets: TeleGeography Submarine Cable Map (CC BY-NC-SA 3.0), datacenters and dams from OpenStreetMap / Open Infrastructure Map (ODbL), Bhote Koshi event imagery (Vantor / GeoPera, CC BY-NC 4.0), and 3D models under their own licences. See upstream
DATA_SOURCES.md.
Because several of these are non-commercial, this demo must not be used for commercial purposes.