Skip to content

Ü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)

FieldValue
Used forReal-time bulk quotes, EOD price history, fundamentals, dividends, splits, FX, crypto, per-ticker news, company-events calendar (earnings/IPOs), analyst estimates
Env varsEODHD_API_KEY, EODHD_BASE_URL
Frontend usesMarket panel, Market dashboard, Security dashboard
Refresh modelREST 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)

FieldValue
Used forOptional & supplemental: US-equity real-time quotes, instrument search, richer analyst/dividend detail (high/low/median price targets, analyst count)
Env varFINNHUB_API_KEY (optional — unset is fine)
Frontend usesAdvanced 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)

FieldValue
Used forA few commodity futures (WTI CL, Brent BZ, natural gas NG)
Env varsNone (public endpoint)
Frontend usesMarket dashboard macro strip

OpenSky

FieldValue
Used forADS-B aircraft positions
Env varsOPENSKY_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 uses3D 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 ATLS101ATLS606 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

FieldValue
Used forAIS vessel positions
Env varsAISSTREAM_API_KEY, AIS_ENABLED; MARINETRAFFIC_API_KEY, MARINETRAFFIC_ENABLED (unused legacy — the current AIS path is AISstream.io)
Frontend uses3D 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

FieldValue
Used for3D globe tile rendering, terrain, imagery
Env varsCESIUM_ION_TOKEN (backend), VITE_CESIUM_ION_TOKEN (frontend, public)
Frontend uses3D Globe entirely

SMTP (email delivery)

FieldValue
Used forAccount verification mails, password-reset links, digests, email alerts (all off by default until SMTP is configured)
Env varsEMAIL_ENABLED, EMAIL_SMTP_HOST, EMAIL_SMTP_PORT, EMAIL_SMTP_USERNAME, EMAIL_SMTP_PASSWORD, EMAIL_FROM, EMAIL_FROM_NAME, EMAIL_SMTP_STARTTLS, EMAIL_SMTP_SSL
DefaultGmail / Workspace SMTP on port 587 with STARTTLS
Frontend usesAccount & billing flows

Sezgin Quant Core

FieldValue
Used forML signals — train / predict / backtest
Env varsSEZGIN_API_URL, SEZGIN_API_CONTEXT, SEZGIN_FETCH_FROM, SEZGIN_RUST_LOG
Frontend usesAI 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)

FieldValue
Used forAI chat, company/news analysis, AI news rewrite at ingest
Env varsAI_API_KEY or OPENAI_API_KEY (OpenAI-compatible endpoint, default model gpt-4o-mini); a local Ollama model is also supported
Frontend usesAI 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 to http://127.0.0.1:8000 in 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.

Released under the project license. Public sources only — no proprietary or restricted data.