A desktop charting terminal with a local HTTP API. Claude, your scripts, or any MCP-speaking agent can open windows, draw annotations, and stream bars — the same as a keyboard.
What it does
The terminal is built on a single state store. The same bus that the UI reads from is exposed over HTTP — so anything you can do with a mouse, an agent can do with a POST.
Float a scratchpad over a heatmap over a 2×2 grid. Tabs and layouts are first-class — an agent can add, split, or close them without touching glass.
Candles, trades, and depth arrive on a WebGPU canvas at 60 fps. Exchange connectors run in-process — no browser, no tab throttle, no delay.
Every trendline, rectangle, and note is a JSON object. POST to create, PATCH to style, DELETE to remove — and they render before the round-trip settles.
EMA, VWAP, BB, RSI, MACD — and whatever you ship next. Indicators are WASM modules; compile one, drop it in ~/.mylittlechart/indicators/.
Read-only, Trusted, and Full-access keys with per-endpoint scopes. Your risk-sensitive agents get a lot less rope than your view-only ones.
A built-in request log, replay buffer, and a “why did the agent do that?” trace view. Nothing changes the chart without leaving a receipt.
Agent API
The terminal ships with an MCP server on
localhost:17420. Connect it
once; Claude can read your watchlist, drop
annotations, and scrub timeframes — with every call
written to the request log.
# Draw a support line, styled, on the live BTC chart curl -X POST http://localhost:17420/v1/windows/1/tabs/0/charts/0/drawings \ -H "Authorization: Bearer $MLC_KEY" \ -d '{ "kind": "hline", "price": 77100, "label": "Support", "style": { "color": "gold", "dashed": true } }' ← 201 Created · id=drw_8x2qf · rendered in 11ms
How it fits together
The same state the terminal renders from is the state the agent API serves. The UI is just one of several consumers.
Download
Open a terminal. Run this. The app opens itself. Auto-updates while the beta is open — just sign in with GitHub so we know where to push them.