A Claude Code status line that turns your terminal into a rolling ticker tape of whatever you're talking about — stocks, crypto, and Polymarket prediction markets, resolved live. No watchlist, no dictionary: mention a company and its ticker appears.
Listed on claudelines.com — audited, free to install.
████░░░░░░ 42% | 🌿 main | /tlm <n> opens a market
NVDA 210.96 ▲4.03% | CRWV 88.88 ▼0.91% | BTC 118,204 ▲1.2% | TSM 305.40 ▲0.6% ← rolls
1. Will Nvidia hit $5T market cap in 2026? 64% | 2. Anthropic IPO by 2027? 12% ← rolls
Say "CoreWeave" in the conversation and CRWV joins the tape a refresh later. Move on to another topic and it self-clears. Both bands scroll like a broadcast ticker whenever they're wider than your terminal.
- No dictionary. Capitalized names and
$CASHTAGSfrom your last ~16 messages (yours and Claude's) are resolved to real tickers live against Yahoo Finance's search index; crypto is routed to CoinGecko for canonical prices. Resolutions are cached a day, so steady state costs zero network and renders in ~50 ms. - Stocks batch in one request (Yahoo spark endpoint), crypto in one request (CoinGecko), markets from Polymarket's keyless Gamma API, volume-ranked and cached 5 minutes.
- A dim
·after a quote means that market is closed (last data >20 min old) — the price is the last close, not live.
The second band is interactive through the /tlm slash command (installed by --init):
/tlm— numbered list of the markets currently scrolling, full questions (the band shows the same numbers)/tlm 3— opens market #3 directly: outcomes, prices, volume, end date, link — right in the chat- If the official Polymarket CLI isn't installed, it offers to install it (Homebrew) in the background; if it is, the market is tradeable from your terminal
Terminals with OSC-8 support (iTerm2, Kitty, WezTerm) can also Cmd+click any market in the band. Outside Claude Code, node tickerline.js markets prints the same list statically, and tlm.zsh ships a shell picker.
node tickerline.js --init # writes ~/.claude/tickerline.json + offers the /tlm commandThen add to ~/.claude/settings.json (the init prints this snippet with your absolute path):
{
"statusLine": {
"type": "command",
"command": "node \"/path/to/tickerline.js\"",
"refreshInterval": 1
}
}refreshInterval: 1 is what makes the bands actually roll. No config file is required — defaults work out of the box.
Try it without installing:
./demo.sh "what's your read on the nvidia and coreweave earnings"The registry ships only the script — grab the /tlm command file separately:
curl -o ~/.claude/commands/tlm.md https://raw.githubusercontent.com/avalidurl/tickerline/main/tlm.md(Or let your agent author its own from the script's contract — it's a plain prompt file.)
~/.claude/tickerline.json (or run --init):
{
"modules": ["context", "git", "cost"],
"ttl": 60,
"ascii": false,
"contextAware": true,
"maxTopicTickers": 30,
"scrollSpeed": 2,
"polymarket": true,
"maxPolyMarkets": 12,
"hint": true
}- modules — row-1 side info, any order:
context(context-window bar),git(branch, pure-fs — no shell),cost(session cost) - ttl — price cache seconds; scrollSpeed — columns/sec the tape advances
- maxTopicTickers / maxPolyMarkets — band size bounds
- hint — the
/tlm <n> opens a marketpointer on row 1 (shown only if/tlmis installed)
Env overrides: TICKERLINE_MODULES, TICKERLINE_TTL, TICKERLINE_CONTEXT_AWARE, TICKERLINE_ASCII, TICKERLINE_POLYMARKET, TICKERLINE_CONFIG. See why a ticker appeared: TICKERLINE_DEBUG=1.
Context awareness works by sending capitalized words from your recent messages as search queries to Yahoo Finance, and matched entity names to Polymarket's public search — over HTTPS, keyless, with no other identifiers. That is the entire feature; if you don't want conversation-derived text leaving your machine, set "contextAware": false (and "polymarket": false), and the bar still renders its modules.
- Hosts are pinned (
query1.finance.yahoo.com,api.coingecko.com,gamma-api.polymarket.com); all input is validated before it reaches a URL. - The transcript is read locally, tail-only, and only if the path ends in
.jsonl. - No shell execution, no keys, no settings modification. Cache files live in
~/.claude/and are pruned automatically; writes are atomic so concurrent sessions never corrupt them.
Node 14+ (Claude Code ships with a newer runtime). macOS, Linux, or Windows — use "ascii": true on terminals without Unicode.