Most retail market dashboards either hide key data behind paywalls or rely on a single fragile provider. This project instead stitches together many free, publicly documented (or widely used reverse‑engineered) endpoints into a keyboard‑first, widgetized terminal that runs locally and survives provider hiccups via automatic fallback chains.
What Sets It Apart
- Resilient multi‑provider architecture: each data type (quotes, candles, screener, options, news, crypto, macro) has a primary source plus fallbacks so temporary rate limits or outages don’t blank the UI. That makes it better for continuous local use than single‑source scrapers.
- Feature parity with paid terminals for exploration (near‑real‑time quotes, professional charts with indicators, full‑market screener, heatmap, options chains, earnings history) while remaining zero‑config and self‑hosted — no API keys, signups, or subscriptions required to run locally.
- Local persistence and safety‑first defaults: portfolio data is stored in SQLite and the server binds to localhost by default; production exposure requires deliberate configuration (API_HOST/WEB_ORIGIN/API_KEY).
- Optional, context‑aware AI assistant: an AI widget can be enabled via an Anthropic key (Claude) to answer questions grounded in the terminal’s current data; the assistant is optional and rate‑limited by default.
Who It's For and Trade‑offs
Great fit if you want a cheap, keyboard‑centric market workspace for research, screener exploration, charting, and lightweight portfolio tracking without relying on paid feeds. It’s useful for developers who want to extend providers or add widgets: provider modules are small and swappable.
Look elsewhere if you need execution‑grade, low‑latency licensed feeds for live trading or commercial redistribution of market data. The project fetches public endpoints (often delayed/indicative), has a few known dependency advisories tracked upstream, and is designed as a self‑hosted research/dashboard tool rather than a production trading backend.
If you plan to expose the service beyond localhost, follow the security defaults carefully (set a strong API_KEY, configure WEB_ORIGIN, terminate TLS externally) and accept the maintenance burden of keeping provider modules and dependencies patched.