Übersetzung in Arbeit
Diese Seite wird automatisch aus dem englischen Original gespiegelt, bis eine deutsche Übersetzung vorliegt. Der Inhalt ist auf Englisch — die Navigation und Oberfläche sind bereits übersetzt.
Data providers
Atlas pulls from several upstream services — EODHD (the required market backbone), plus optional Finnhub, Yahoo, OpenSky, AISstream, Cesium Ion, an OpenAI-compatible AI provider, and SMTP — 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. Only EODHD is required for market data; the rest are optional and config-gated.
EODHD (primary)
| Field | Value |
|---|---|
| Used for | Real-time bulk quotes, EOD price history, fundamentals, dividends, splits, FX, crypto, per-ticker news, company-events calendar (earnings/IPOs), analyst estimates |
| Env vars | EODHD_API_KEY, EODHD_BASE_URL |
| Frontend uses | Market panel, Market dashboard, Security dashboard |
| Refresh model | REST polling, 30s while visible |
EODHD is the heavy lift and the one required market key — real-time quotes, fundamentals, disclosures, FX conversion (~13 major currencies via EODHD FOREX; exotic currencies are summed at par), and the in-app company-events calendar all route through it. The app runs fully on EODHD alone. Non-realtime exchanges (LSE, HKEX, etc.) fall back to the most recent daily bar (MARKET_SNAPSHOT_EOD_FALLBACK_LIMIT). Note: the in-app calendar covers company events only (earnings, IPOs, splits, analyst-estimate trends); macro/economic releases (CPI, FOMC, ECB, NFP) are not in-app — they appear only in the weekly Telegram digest and an admin preview.
Finnhub (supplemental)
| Field | Value |
|---|---|
| Used for | Optional & supplemental: US-equity real-time quotes, instrument search, richer analyst/dividend detail (high/low/median price targets, analyst count) |
| Env var | FINNHUB_API_KEY (optional — unset is fine) |
| Frontend uses | Advanced search, command bar |
Finnhub is entirely optional — leave FINNHUB_API_KEY unset and the app runs on EODHD alone. When set, it adds US-equity real-time quotes and richer analyst detail (on the EODHD-only path, price targets are a single mean; high/low/median/analyst-count appear only with Finnhub).
Yahoo (fallback)
| Field | Value |
|---|---|
| Used for | A few commodity futures (WTI CL, Brent BZ, natural gas NG) |
| Env vars | None (public endpoint) |
| Frontend uses | Market dashboard macro strip |
OpenSky
| Field | Value |
|---|---|
| Used for | ADS-B aircraft positions |
| Env vars | OPENSKY_USERNAME, OPENSKY_PASSWORD (optional — anonymous works at lower limits); OPENSKY_CLIENT_ID / OPENSKY_CLIENT_SECRET (OAuth path); AIRCRAFT_FIXTURE_FALLBACK (set to False in prod) |
| Frontend uses | 3D Globe aircraft layer |
OpenSky is the source of truth for ADS-B in Atlas, but anonymous access is heavily throttled, so unauthenticated deployments see only a few aircraft (set OAuth2 credentials for higher limits). Coverage is dense over Europe / North America, sparse over oceans and remote interiors. AIRCRAFT_FIXTURE_FALLBACK defaults to true: when the aircraft table is empty the API serves 6 unlabeled demo planes with ATLS101–ATLS606 callsigns. Set it to False in production so live deployments never ship fixtures. (A fresh DB is also seeded with a few sample aircraft/vessels/news so the globe isn't empty on first boot.)
AISstream.io
| Field | Value |
|---|---|
| Used for | AIS vessel positions |
| Env vars | AISSTREAM_API_KEY, AIS_ENABLED; MARINETRAFFIC_API_KEY, MARINETRAFFIC_ENABLED (unused legacy — the current AIS path is AISstream.io) |
| Frontend uses | 3D Globe vessel layer |
AIS ingest is off by default — set AIS_ENABLED and provide AISSTREAM_API_KEY to turn it on. The MARINETRAFFIC_* variables are legacy and not read by the current AIS path. 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
| Field | Value |
|---|---|
| Used for | 3D globe tile rendering, terrain, imagery |
| Env vars | CESIUM_ION_TOKEN (backend), VITE_CESIUM_ION_TOKEN (frontend, public) |
| Frontend uses | 3D Globe entirely |
SMTP (email delivery)
| Field | Value |
|---|---|
| Used for | Account verification mails, password-reset links, digests, email alerts (all off by default until SMTP is configured) |
| Env vars | EMAIL_ENABLED, EMAIL_SMTP_HOST, EMAIL_SMTP_PORT, EMAIL_SMTP_USERNAME, EMAIL_SMTP_PASSWORD, EMAIL_FROM, EMAIL_FROM_NAME, EMAIL_SMTP_STARTTLS, EMAIL_SMTP_SSL |
| Default | Gmail / Workspace SMTP on port 587 with STARTTLS |
| Frontend uses | Account & billing flows |
Sezgin Quant Core
| Field | Value |
|---|---|
| Used for | ML signals — train / predict / backtest |
| Env vars | SEZGIN_API_URL, SEZGIN_API_CONTEXT, SEZGIN_FETCH_FROM, SEZGIN_RUST_LOG |
| Frontend uses | AI Brain |
Beta / experimental. The Rust ML service (RandomForest, 17 features, walk-forward CV, backtest engine) is real code, but as currently deployed it is effectively non-functional: the data volume ships empty and the forecast path runs with no_update=True, so endpoints return HTTP 500 (need >=254 bars). Treat AI Brain as a preview, not a reliable live tool.
AI provider (chat, analysis, news)
| Field | Value |
|---|---|
| Used for | AI chat, company/news analysis, AI news rewrite at ingest |
| Env vars | AI_API_KEY or OPENAI_API_KEY (OpenAI-compatible endpoint, default model gpt-4o-mini); a local Ollama model is also supported |
| Frontend uses | AI chat, Security dashboard analysis, news analytics |
AI features call an OpenAI-compatible API (or a local Ollama model). Anthropic/Claude is not integrated — ANTHROPIC_API_KEY is not read anywhere. With no key configured, AI chat degrades to a scripted assistant (curated intents + canned replies) with no LLM, and Pro-only news analytics returns 503. A monthly USD budget guard (default $50) caps spend.
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.