Project Orion is a real-time planetary command map built on CesiumJS. It combines NASA GIBS satellite imagery, NOAA/NWS radar, orbital tracking, aircraft, CameraNet, environmental monitoring, saved locations, live device location, and historical timeline playback in a dark glass command interface.
Current version: v1.1.2
Orion has two runtime modes:
- Static GitHub Pages mode serves the frontend and prebuilt
pages-data/JSON snapshots. Static mode must not call provider tile services that require backend proxying. - Local Python mode serves the same frontend through
orion_server.pyand can proxy same-origin imagery, CameraNet media, and provider workflows that require local request handling.
Important files:
index.html Main application shell
app.js Cesium app, timeline, layers, controls, telemetry
orion-config.js Layer definitions, defaults, provider metadata
orion-provider-registry.js Provider capability/state registry
orion-telemetry-health.js Provider health, retry, and backoff state
orion_server.py Local API and proxy server
camera_providers.py CameraNet provider adapters
build_pages_data.py GitHub Pages JSON snapshot builder
docs/ Audit, issues, data sources, architecture, plan
- Imagery: NASA GIBS / NASA ESDIS WMTS.
- Radar: NOAA/NWS
radar_base_reflectivityArcGIS map service. - Satellites: CelesTrak GP/TLE data.
- Earthquakes: USGS GeoJSON summary feeds.
- Wildfires: NASA EONET event metadata.
- Weather fields: Open-Meteo current conditions sampled on a cached global grid and rendered client-side for precipitation, wind, temperature, humidity, and pressure.
- Cameras: public DOT/511/open-data providers through CameraNet adapters.
- Power infrastructure: OpenInfraMap global OpenStreetMap-derived vector tiles, with the official U.S. transmission-line ArcGIS service as a regional fallback.
- Aircraft: public ADS-B point feeds through the local backend and generated Pages catalog.
See docs/DATA_SOURCES.md for the source matrix and attribution notes.
Heavy live and environment layers are off on first load:
- Aircraft, satellites, debris, CameraNet, wildfires, radar, volumetric weather, lightning, and earthquakes.
- User layer choices persist in local storage after deliberate toggles.
- A visible in-app Data Sources and Attribution block appears in the telemetry panel.
Use Python directly:
python3 -m pip install -r requirements.txt
python3 orion_server.py 4174Then open:
http://127.0.0.1:4174/
On Windows, the included launcher is still supported:
powershell -ExecutionPolicy Bypass -File .\start-orion.ps1The bundled integrations require no user-supplied setup secrets. Optional local settings are:
ORION_ALLOWED_ORIGINSfor production backend CORS.ORION_SYNTHETIC_INTEL=1only when intentionally building demo fallback intel data.
The hosted site runs at:
https://arxhsz.github.io/Project-Orion/
The Pages workflow deploys on pushes to main:
- Check out the repository.
- Run
python build_pages_data.py. - Upload the static site and generated
pages-data/artifact. - Deploy to GitHub Pages.
Supported:
- Static NASA GIBS imagery.
- Local and static NOAA/NWS current radar map service.
- Current Open-Meteo precipitation, wind, temperature, humidity, and pressure overlays.
- CelesTrak satellite OMM snapshots with legacy TLE fallback.
- USGS earthquakes.
- NASA EONET wildfire event metadata.
- CameraNet discovery, verified public embeds, and browser-playable HLS/MJPEG live video.
- Global high-voltage power lines, cables, substations, plants, generators, and local grid assets where source detail supports them.
- Local backend mode for richer same-origin provider access.
Known limits:
- Open-Meteo weather-field overlays are current global grids rather than provider-native raster tiles or historical animations.
- Timelapse exports WebM plus metadata in-browser; MP4 requires a future backend ffmpeg pipeline.
- Some CameraNet live streams are provider-limited, blocked, or expire; failures are shown as unavailable and never replaced with still images.
- No free official source provides normalized live camera media for all 50 states. Orion reports actual provider coverage and omits metadata-only/fabricated camera markers.
- NOAA radar current service is not historical/time-enabled in this implementation.
Performance budgets are centralized in orion-performance-budget.js and provider metadata in orion-config.js. Large live collections remain off by default, and provider refreshes use health/backoff state to reduce repeated failures.
JavaScript syntax:
npm run check:jsNode tests:
npm testPython syntax:
python3 -m py_compile orion_server.py camera_providers.py build_pages_data.pyBuild Pages snapshots:
python3 build_pages_data.pyLocal smoke check:
python3 orion_server.py 4174
curl -I http://127.0.0.1:4174/
curl http://127.0.0.1:4174/live/weather/radar- If the app is opened from
file://, launch it from localhost instead. - If an aircraft feed is unavailable, check the provider status and retry after the displayed backoff period.
- If a provider is unavailable, check the telemetry panel provider status and docs/DATA_SOURCES.md.