GitHub - jamalrfordii-arch/Vanguard-Map: 3D multi-domain tactical intelligence map — live ships, flights, satellites, cables & space weather in the browser. Time scrubbing, scenario replay, physics-based anomaly detection.

2 min read Original article ↗

A real-time 3D map of the world's moving things: live ship traffic (AIS), aircraft, satellites, submarine cables, ports, chokepoints, and space weather — rendered as a 1.5M-point terrain cloud with day/night, ocean simulation, and cinematic camera work. Built with Three.js and plain ES modules. No build step, no framework.

Live demo — no signup needed: click VIEW DEMO on the opening screen for synthetic traffic, or paste a free aisstream.io key for live global ship data.

demo

Try it

git clone https://github.com/jamalrfordii-arch/Vanguard-Map.git
cd Vanguard-Map
npx serve .        # or: python -m http.server 3000

Open http://localhost:3000 in a Chromium browser with hardware acceleration.

Live ship data (free): the app prompts for an aisstream.io API key on first load — free signup, the key stays in your browser's localStorage.

High-res terrain tiles (optional): get a free token at cesium.com/ion → Access Tokens, then in DevTools: localStorage.setItem('vg1_cesium_token', 'YOUR_TOKEN'). Without it the map uses the point-cloud terrain at all zoom levels.

Flights & AI copilot (optional): require the local proxy — node flight-proxy.js in a second terminal. Without it those layers stay quiet; everything else works.

Time control & scenarios

The map runs on a simulated clock and pluggable data sources — DevTools console:

simClock.setTime('2026-05-10T12:00:00Z')   // scrub the world to any moment
simClock.setRate(60)                        // 1 real second = 1 sim minute
vg1Scenario.load('./scenarios/hormuz-demo.json')  // inject scripted synthetic vessels
vg1Scenario.record(); vg1Scenario.save()    // capture live AIS to NDJSON
vg1Scenario.replay('./captures/x.ndjson')   // replay a capture
vg1Invariants.stats()                       // physics-violation ledger (spoof/teleport detection)

Synthetic vessels use reserved 999… MMSIs and are scripted in scenarios/*.json.

Tests

node tests/invariants.test.mjs

Architecture

One manager per domain (aisManager, flightManager, satelliteManager, …), communicating only via vg1:* DOM events — no cross-imports. All position reports pass a physics invariant gate (invariants.js) before they can move an entity. See CLAUDE.md for the full module map and contribution rules.

Feedback

Open a GitHub Issue — bug reports, feature ideas, and "this ran at N fps on my machine" reports are all useful.