Appearance
Data providers
Atlas pulls from five upstream services, all routed through the backend (backend/services/) so API keys stay server-side. The frontend never calls these providers directly — that's enforced by the project's secrets handling rules.
Finnhub
| Used for | Live equity quotes, instrument search, intraday OHLC |
| Wired in | backend/services/finnhub.py |
| Routes | market.py, search.py, websocket.py |
| Env var | FINNHUB_API_KEY |
| Frontend surfaces | Market panel, Watchlist, Advanced search, Market dashboards |
Finnhub powers the live side of equity data. Quote updates flow over the WebSocket channel during market hours.
EODHD
| Used for | EOD prices, fundamentals, dividends, splits, analyst estimates |
| Wired in | backend/services/eodhd.py |
| Routes | market.py, graphs.py |
| Env vars | EODHD_API_KEY, EODHD_BASE_URL |
| Frontend surfaces | Market panel (fundamentals view), the entire Security dashboard |
EODHD is the heavy lift — every fundamental and disclosure surface in Atlas is downstream of it.
OpenSky
| Used for | ADS-B aircraft positions |
| Routes | aircraft.py |
| Env vars | OPENSKY_USERNAME, OPENSKY_PASSWORD (optional — anonymous access works at lower rate limits) |
| Frontend surfaces | 3D Globe ADS-B layer, Timeline & events, aircraft detail cards |
OpenSky is the source of truth for ADS-B in Atlas. Coverage is dense over Europe / North America, sparse over oceans and remote interiors.
MarineTraffic
| Used for | AIS vessel positions |
| Routes | vessels.py |
| Env var | MARINETRAFFIC_API_KEY (optional — gates the AIS layer) |
| Frontend surfaces | 3D Globe AIS layer, Timeline & events, vessel detail cards |
Coverage is dense in coastal waters, sparser mid-ocean. Vessels can disable transponders — last-update timestamps drifting past 24h usually mean the transponder went dark, not the vessel stopped.
Cesium Ion
| Used for | 3D globe tile rendering, terrain, imagery |
| Routes | None (frontend Cesium client) |
| Env vars | CESIUM_ION_TOKEN (backend), VITE_CESIUM_ION_TOKEN (frontend, public) |
| Frontend surfaces | 3D Globe entirely |
Cesium Ion is the only provider where a token is exposed to the client — the VITE_* prefix bundles it into the build. Use a Cesium Ion access token scoped to globe rendering only, never a full-permissions token.
Frontend-only env
For completeness, the frontend reads two more env vars at build time:
VITE_API_URL— base URL of the backend (defaults tohttp://127.0.0.1:8000in dev).VITE_CESIUM_ION_TOKEN— bundled into the client; treat as public.
Re-reading credentials
All backend service modules use a _key() helper that re-reads os.environ on every call rather than capturing at import time. This supports test-time monkeypatching and zero-downtime credential rotation — restart the backend after rotating, but in-flight requests don't fail.