Open sourceMITruns on localhost

The open-source, AI-native terminal for traders.

Ask a question. Get a live workspace of charts, tables and option chains, and an answer that points at them. Runs on your machine, with your keys, on data sources anyone can add.

  • MIT licensed
  • Node 22+
  • No accounts, no backend, no telemetry
  • Any route · 24 recipes · 9 presets
An Open Terminal workspace named Mag 7 Valuation: the seven largest tech stocks rebased over two years as seven coloured lines, quarterly EPS with surprises, current multiples and Street price targets, under a ticker strip of index levels.
A workspace the agent built: the Mag 7 over two years, EPS, multiples, Street targetsreal screenshot · 1440 × 900

Cursor made the code editor conversational without taking the editor away. Open Terminal does the same for the trading terminal.

The prompt builds and rewrites the workspace, and the workspace stays a real terminal: every widget is a query you can open, edit and re-run by hand.

01 Try asking

One question in, a working terminal out.

Six prompts we ran end to end on a fresh install with Claude Opus 5.5 on 2026-10-19. Every screenshot is the workspace that prompt built, with its reply beside it, and every figure in every reply was checked against the data.

Compare the neoclouds
The Neocloud comparison workspace: CoreWeave, Nebius, IREN and Applied Digital rebased over six months, a valuation and leverage table, analyst targets, a side-by-side fundamentals pivot, news and today's close, with the reply on the right citing each widget.
25 of 25 figures verified · 6 widgets · 8 steps · 54 sClaude Opus 5.5 · 2026-10-19
TSLA reports soon. How did it react to the last few reports and what's expected this time?
The TSLA earnings setup workspace: two years of daily candles with earnings markers and the implied-move range, past earnings reactions, the implied move from the at-the-money straddle, analyst expectations, the next report and 30-day volatility, with the reply on the right.
21 of 21 figures verified · 7 widgets · 9 steps · 55 sClaude Opus 5.5 · 2026-10-19
Correlation of the Mag 7 over 6 months
The Mag 7 correlation workspace: a seven by seven heatmap of daily-return correlations computed with pandas, the pairs ranked, the average correlation per name beside its six-month return, and the seven rebased, with the reply on the right.
13 of 13 figures verified · 4 widgets · 5 steps · 31 sClaude Opus 5.5 · 2026-10-19
TSLA puts for next Friday, what's IV like and where is the open interest?
The TSLA puts workspace: the put chain for the October 23 expiration centred on the at-the-money strike, open interest and volume by strike, the implied move, 30-day volatility, daily candles with earnings markers and news, with the reply on the right.
30 of 30 figures verified · 6 widgets · 8 steps · 46 sClaude Opus 5.5 · 2026-10-19
Backtest a 50/200 SMA cross on SPY since 2020
The SPY SMA cross backtest workspace: the strategy's equity curve against buy and hold since 2020, a stats table with total return and CAGR, the four trades, and SPY with its 50 and 200-day averages, all computed with pandas, with the reply on the right.
15 of 15 figures verified · 4 widgets · 5 steps · 51 sClaude Opus 5.5 · 2026-10-19
RSI and MACD on AMD
The AMD RSI and MACD workspace: daily candles with 50 and 200-day averages over RSI and MACD panes, RSI and MACD histogram cards, the AMD quote and news, with the reply on the right.
11 of 11 figures verified · 5 widgets · 5 steps · 26 sClaude Opus 5.5 · 2026-10-19

02 Why

A real terminal that answers back.

  • ask

    Ask, don't click.

    “Is NVDA's drop today news or just the market?” becomes four live widgets and a two-sentence diagnosis. A follow-up rewrites the workspace. You never assemble the answer from eight tabs again.

  • verify

    Every number is traceable.

    The agent cannot type a price. It can only run queries, and the reply links each claim to the widget that shows it. Figures in the reply are checked against the data it saw.

  • local

    Open and local.

    MIT licensed. One process on localhost plus your browser. No accounts, no hosted backend, no telemetry. Keys never leave the machine.

  • routes

    Any route, not a fixed catalog.

    Connectors publish their routes as descriptors (OpenBB generates 800+ from its own OpenAPI document); the agent searches them, runs them, and derives new data from them with pandas. Twenty-four recipes cover the common questions.

  • models

    Model-agnostic.

    Anthropic or OpenAI through the Vercel AI SDK. The default is Claude Opus 5.5; change one line of config to swap it.

  • keys

    Works before you add a key.

    Prices, charts, search, options and fundamentals come from Yahoo on first run. Add a free Finnhub key for news, or point it at a local OpenBB Platform for dozens of providers.

03 How it works

Four tools. Every figure checked.

The agent has four tools: find_route searches the catalog of every connector's routes, query runs a recipe or a route, transform runs pandas over data it already has, set_workspace replaces the widgets.

  1. You type a prompt.

    A question, a ticker, a follow-up. Every prompt rewrites the workspace it is asked in, and every workspace is kept.

  2. Queries go to the registry.

    A recipe names its routes in order (OpenBB first, Yahoo as the fallback); a route is one endpoint of one connector, its params validated against the connector's descriptor. Results come back as typed columns and rows, annotated with units and cached per route.

  3. The agent reads a preview.

    The columns with their units, the first rows, and per-symbol stats. Numbers in the reply must come from here, and the server verifies them.

  4. It builds the workspace and answers.

    Four to six widgets, each rendered by a preset, then a short reply that begins with the answer and links to the widgets it drew on. Widgets keep polling; ask a follow-up and the workspace is rewritten.

Stepsone real run, 2026-10-19

TSLA reports soon. How did it react to the last few reports and what's expected this time?

  1. queryrecipe volatility symbols=TSLA · 1 row5.8 s
  2. queryrecipe quote symbols=TSLA · 1 row6.0 s
  3. queryrecipe eps_history symbols=TSLA limit=8 · 8 rows6.3 s
  4. queryrecipe earnings from=2026-10-12 to=2026-12-18 · 1 row6.6 s
  5. queryrecipe estimates symbols=TSLA · 1 row7.5 s
  6. queryrecipe options expiration=2026-10-23 strikes=10 · 40 rows21.0 s
  7. transformpandas over price, eps · 7 rows21.1 s
  8. transformpandas over the chain · 1 row32.1 s
  9. set_workspace7 widgets48.1 s
reply · 21 of 21 figures verified against the data · 55.0 s

Connectors 3 in the box

  • openbbno key for the keyless providersEvery GET route of your local OpenBB Platform API, generated from its OpenAPI document (834 on OpenBB 5.0.0).
  • yahoono keySearch, quotes, charts, option chains and fundamentals.
  • finnhubfree keyQuotes, company news and the earnings calendar.

A connector is one file: descriptors() plus call().

Recipes 24

  • search
  • quote
  • ohlcv
  • news
  • earnings
  • profile
  • metrics
  • financials
  • estimates
  • eps_history
  • dividends
  • insiders
  • institutions
  • short_interest
  • options
  • volatility
  • calendar
  • ipos
  • movers
  • holdings
  • macro
  • yield_curve
  • index
  • screener

Saved queries, as data. Promote any widget to your own.

Presets 9

  • price
  • compare
  • curve
  • indicator
  • table
  • stat
  • facts
  • chain
  • heatmap

Any data whose shape fits renders: candles, rebased lines, yield curves, option chains, heatmaps.

04 Extend

Add a data source in one file.

The whole plugin surface is one function. Register the connector in ~/.openterminal/config.yml and its routes are in the catalog on the next prompt. Tests run against recorded fixtures, never the network.

  • Models. Any Anthropic or OpenAI model id. The agent prompt is plain text.
  • Recipes and annotations. YAML files. A new question that one route answers is a recipe, not code.
  • Presets. A pure function from view options to panes and layers.

Read the connector guide ↗

connectors/shape/src/index.ts
import { z } from 'zod'
import { defineConnector, inferFrame, parseDescriptors } from '@openterminal/core'
import descriptors from './descriptors.json' with { type: 'json' }

export default defineConnector({
  name: 'shape',
  config: z.object({ apiKey: z.string().min(1) }),
  descriptors: () => parseDescriptors(descriptors),
  call: async (route, params, ctx) => {
    const url = `https://api.shape.dev/${route}?symbol=${params.symbol}`
    const rows = (await ctx.http.get(url, {
      headers: { 'X-Token': ctx.config.apiKey },
      signal: ctx.signal,
    })) as Record<string, unknown>[]
    return inferFrame(rows, { connector: 'shape' }, {
      descriptor: descriptors.find((d) => d.route === route),
    })
  },
})
05 Compare

How it compares.

Open Terminal Bloomberg ChatGPT / Perplexity OpenBB Instinct
Ask a question, get live views yes no no partly yes
Every number traceable to data yes yes no yes unclear
Open source yes (MIT) no no partly no
Runs locally, your keys yes no no partly no
Add a data source yourself yes no no yes no
Price free ~$25k/yr $20/mo free + paid waitlist

From the project README. Research and monitoring only: Open Terminal places no orders.

06 Install

Run it on your machine.

Clone it and start it. It works with no keys: quotes, charts, search, option chains and fundamentals come from Yahoo through the built-in yahoo connector. npx openterminal becomes the one-line start once the package is on npm; until then, run it from a clone.

  1. Clone and start

    shell · Node 22 and pnpm
    git clone https://github.com/spovalova/openterminal.git
    cd openterminal
    pnpm install
    pnpm dev

    The server starts on :4242 and the app on http://localhost:5173. Open it and type a ticker or a question.

  2. Add an LLM key

    Set ANTHROPIC_API_KEY (or OPENAI_API_KEY) in your environment, or write it to ~/.openterminal/config.yml. Without one you can still build workspaces by hand in the widget editor.

    ~/.openterminal/config.yml
    llm:
      provider: anthropic           # or openai
      model: claude-opus-5-5
      apiKey: sk-ant-...
  3. Add news optional

    Paste a free Finnhub key on the Data page in the app. Finnhub also answers quotes and the earnings calendar, so tables survive a Yahoo outage.

  4. Add everything else optional

    Run OpenBB Platform on your machine (Python 3.10 to 3.12). When its API answers at 127.0.0.1:6900, its 800+ routes join the catalog and every recipe routes to it first.

    shell
    pip install "openbb[routers]" openbb-yfinance
    openbb-api
  • NeedsNode 22+ and pnpm
  • RunsOne local process and your browser
  • Your data~/.openterminal: config, workspaces, recipes, the frame cache
  • LicenseMIT
  • Full guideQuick start in the README ↗

Your terminal. Your keys. Your machine.

Free and open source under the MIT license. Download it from GitHub, ask it a question, and open any widget to see the query behind it.