A Bloomberg Terminal‑style workspace for the rest of us — built entirely on free, public market data.
Dark. Dense. Keyboard‑driven. Zero paid API keys, zero subscriptions.
⭐ If this is useful to you, consider starring the repo — it genuinely helps other people find it.
Real trading terminals cost $2,000+ a month. Most retail dashboards either lock the good stuff behind a paywall or run on a single flaky data source that breaks the moment you actually need it.
OpenTerminal takes a different approach: it stitches together several free, publicly documented (or reverse‑engineered but widely used) market data endpoints — the same ones that power major finance sites' own front ends — into one fast, keyboard‑first, widget‑based dashboard that runs entirely on your machine. Every data endpoint has an automatic fallback chain, so a single provider hiccup never takes the whole app down.
No signup. No credit card. No rate‑limited demo tier. Clone it, npm install, and you have a live terminal in under a minute.
- 🖥️ Widget-based workspace — drag, resize, add, and remove panels (
react-grid-layout); your layout is saved locally and restored on reload - ⌘K global command palette — instantly search stocks, ETFs, and crypto and jump straight to them
- 📈 Professional charting (via
lightweight-charts) — candlesticks, bars, line, area, volume, 8 timeframes (1D → MAX), and SMA / EMA / VWAP / Bollinger Bands / RSI / MACD indicators, each with a live hover legend showing OHLC, volume, and every active indicator's value under your cursor - 💹 Quote panel — last / bid / ask / OHLC, volume, market cap, P/E, EPS, dividend yield, 52‑week range, beta, shares outstanding
- 📰 News feed — aggregated and de‑duplicated from multiple RSS sources, per‑symbol or global
- 🔎 Full‑market screener — filter by sector, market cap, % change, and volume across the entire US equity market, sortable on every column
- 🗺️ Live sector heatmap — treemap sized by market cap, colored by daily % change, refreshing every few seconds
- ⛓️ Options chain — calls and puts side‑by‑side with strike, bid/ask, volume, open interest, and ITM highlighting
- 🪙 Crypto board — top assets with 7‑day sparklines, BTC/ETH dominance, and full OHLCV charting for any listed coin
- 🏦 Macro dashboard — live US Treasury yield curve, VIX, and major index/commodity proxies
- 💼 Portfolio tracker — log buy/sell transactions, track average cost, realized & unrealized P&L (persisted in SQLite)
- 🤖 AI assistant (optional) — ask questions about the symbol you're looking at, powered by Claude, fully context‑aware of the terminal's current data
- ⚡ Near real‑time updates — quotes and indexes refresh every second with a subtle flash on change, so you always know what just moved
- ⌨️ Keyboard shortcuts everywhere —
⌘Kto search,⌥1–⌥9to add any widget
Candlesticks, bars, line, or area — 8 timeframes, six technical indicators, and a live legend under your cursor showing OHLC, volume, and every active indicator's value for the candle you're pointing at.
The whole US equity market as a treemap — sized by market cap, colored by daily % change, refreshing every few seconds so nothing you're watching ever goes stale.
Top assets with 7‑day sparklines and BTC/ETH dominance — click through to full OHLCV candlestick charting for any listed coin, same charting engine as stocks.
Headlines aggregated and de‑duplicated across multiple sources, filterable per‑symbol or global, so you're never digging through five tabs to catch up.
No paid API, no keys, and no single point of failure — every endpoint has a fallback chain, and results are cached with a stale‑while‑revalidate strategy so a temporary outage never blanks out the UI.
| Data | Primary source | Fallback |
|---|---|---|
| Quotes (stocks/ETFs) | Nasdaq public quote API | Yahoo Finance → Stooq |
| Fundamentals (P/E, EPS, beta, div yield) | TradingView scanner API | — |
| Historical candles | Nasdaq chart API | Yahoo Finance → Stooq |
| Symbol search | TradingView symbol search | Yahoo Finance |
| Full‑market screener / heatmap | TradingView scanner API (live, whole US market) | — |
| Options chain | Nasdaq option‑chain API | Yahoo Finance |
| News | Yahoo Finance RSS | Google News RSS |
| Crypto quotes & board | CoinGecko | Binance public API |
| Crypto candles | Binance public API (klines) | — |
| Macro (Treasury yields, VIX) | FRED (Federal Reserve) | — |
⚠️ These are public endpoints, not officially licensed data feeds — treat prices as delayed/indicative, not execution‑grade. Seeserver/src/providers/— each provider is a small, isolated module, so swapping or adding a data source is a 30‑minute job.
git clone https://github.com/ErTasselli/openterminal.git
cd openterminal
npm install
npm run dev- Web UI → http://localhost:3000
- API health → http://localhost:4000/api/status
That's it — no .env file required to get a fully working terminal.
export ANTHROPIC_API_KEY=sk-ant-...
npm run devWithout a key, everything else still works — the AI widget just shows a friendly "unavailable" message instead of failing.
docker compose up --buildPortfolio data persists in the terminal-data volume (SQLite, WAL mode).
| Layer | Stack |
|---|---|
| Frontend | Next.js 15 · React 19 · TypeScript · Tailwind CSS 4 · Zustand · TanStack Query |
| Charts | lightweight-charts (candles/indicators) · D3 (heatmap treemap) · Recharts (yield curve) |
| Backend | Node.js · Express · TypeScript |
| Database | SQLite (better-sqlite3, WAL mode) |
| AI | Anthropic Claude (optional) |
├── server/ # Express + TypeScript API
│ └── src/
│ ├── providers/ # nasdaq, tradingview, yahoo, stooq, fred, coingecko, binance, news
│ ├── routes/ # market, portfolio, ai
│ ├── cache.ts # TTL cache with stale-while-revalidate fallback
│ └── db.ts # SQLite (better-sqlite3, WAL)
└── web/ # Next.js 15 + React 19 + Tailwind 4
├── components/ # TopBar, Sidebar, Workspace, CommandPalette
├── components/widgets/ # Chart, Quote, Watchlist, News, Screener, Heatmap, Crypto, Options, Macro, Portfolio, AI
├── lib/ # API client, technical indicators
└── store/ # Zustand store (workspace layout, persisted)
Run tests with npm test (Vitest, no network calls). CI runs on every push — see .github/workflows/ci.yml.
- Multiple workspaces / tabs
- Economic calendar (Fed / ECB / CPI / NFP)
- Chart drawing tools & multi‑asset comparison overlay
- Black‑Scholes Greeks on the options chain
- Price alerts with desktop notifications
- PostgreSQL as an alternative to SQLite
Have an idea? Open an issue — contributions are very welcome.
Pull requests are welcome, especially:
- New or more resilient data providers (
server/src/providers/) - New widgets (
web/components/widgets/) - Bug fixes and UI polish
Please open an issue first for anything non‑trivial so we can align on approach before you invest the time.
For personal and educational use only. Market data comes from public endpoints and may be delayed, incomplete, or occasionally wrong — do not use this for real investment decisions. Respect the terms of service of the underlying data providers.
star the repo ⭐ — it's the best way to support the project.



