features
every feature in the app, grouped by area, with a status that comes from one file reviewed against dexterm/app@87b598f on 2026-10-09. nothing is labelled live unless it is on main today.
- 43live now
- 4in progress
- 13coming
- 0keys handled, ever
- LIVE NOWon dexterm/app main today, on real data, keyless by default
- IN PROGRESScode exists on main but is labelled experimental, partial or stubbed; not a promise
- COMINGdesigned, spiked or built on an unmerged branch; not in the app; no date
Screener and feeds
9 live · 0 in progress · 2 coming · docs
A live Solana screener in your terminal on keyless public data, honest when a source is down.
| feature | status | what it does | see |
|---|---|---|---|
| Live screener | LIVE NOW | DexScreener + Jupiter rows refreshed every 10 s through a rate limiter: price, 5m/1h/6h/24h change, volume, liquidity, market cap, age, holders, organic score, flags, sparkline.screenshot![]() source: app/README.md › What is live › Screener |
docs |
| Filter grammar and sort menu | LIVE NOW | vol24 > 250K liq > 50K age < 30d launchpad:pump !flag:mint on the / line, errors inline with the column; a sort menu on every column.source: packages/cli/src/screener/filter.ts, sort.ts |
docs |
| Feed presets | LIVE NOW | Trench, Trending, Runners, Organic, Top traded, New, Boosted, All, stepped with [ and ]; gated presets say why. source: packages/cli/src/screener/presets.ts |
docs |
| Instant first paint | LIVE NOW | A cold start paints the last rows (marked how old) or skeleton rows in under a second; Jupiter fields fill in behind a DexScreener-only first list. source: task-1323 handoff: time-to-first-rows 17.5 s → 0.9 s cold, measured live |
docs |
| New pairs stream | LIVE NOW | PumpPortal push (creates + migrations) on one WebSocket plus Jupiter and RugCheck polls; bonding progress is estimated from the curve's reserves and says so.screenshot![]() source: app/README.md › What is live › New pairs |
docs |
| Watchlist and alerts as proposals | LIVE NOW | A local SQLite watchlist priced every 10 s; alerts are proposals until a keypress arms them.screenshot![]() source: app/README.md › What is live › Watchlist |
docs |
| Sub-second on-chain price | LIVE NOW | The open token and your watchlist are priced from pump.fun bonding-curve state over one WebSocket, computed locally; LIVE only while a push is flowing, else POLL. source: app/README.md › Two-speed feed (task-1312) |
docs |
| Snipers, bundles, dev history columns | COMING | The SNIPE and BUNDLE columns and the dev-history line show a dash and needs Helius; keyless sources cannot see wallet history.source: app/README.md › COMING list |
docs |
| Graduating and Smart-money presets | COMING | Two presets wait on a data source: Graduating on the per-curve bonding feed, Smart money on a Tier-1 key; both say so in the app. source: packages/cli/src/screener/presets.ts (gated) |
docs |
| Coin pictures in the terminal | LIVE NOW | Every row carries the coin's picture and the token screen a bigger one: real pixels in kitty, Ghostty, WezTerm, Konsole, iTerm2 and sixel terminals; half-block art everywhere else, Apple Terminal.app included; a ticker placeholder while an image loads or when there is none. source: app/README.md › Coin images · Privacy and safety of coin images |
docs |
| Trending in the space | LIVE NOW | T opens a board ranked from keyless public lists (Jupiter trending and organic score, GeckoTerminal trending pools, CoinGecko trending for macro; DexScreener paid boosts count against a coin), with narratives and a NEWS column from publishers' official RSS. No X API and no X posts in live mode: velocity falls back to volume. source: task-1330 handoff (live smoke: 118 board rows from 5 keyless venues + 4 RSS feeds); keymap T |
docs |
Token screen and chart
5 live · 1 in progress · 0 coming · docs
Everything about one coin on one screen, with nothing fabricated.
| feature | status | what it does | see |
|---|---|---|---|
| Token intel | LIVE NOW | Market stats, mint and freeze authority from the chain, holder count and top-10 share, RugCheck summary, GoPlus second opinion; the ranked top-20 holders with a free RPC key.screenshot![]() source: app/README.md › What is live › Token |
docs |
| Candles 1m to 1d, instant switch | LIVE NOW | 1m and 1h from GeckoTerminal; 5m/15m/4h/1d derived locally, so a timeframe switch is milliseconds and the chart goes ahead of background work. source: task-1314 + task-1323 handoffs: cold switch 15 s → 250 ms, measured live |
docs |
| Buy/sell flow panel | LIVE NOW | Buys vs sells for 1m, 5m, 1h, 6h, 24h with a ratio bar, USD volume and a trend arrow, from data already cached; F swaps in the raw trade tape. source: task-1323 handoff item 6; packages/cli/src/live/flow.ts |
docs |
| Position row under the chart | LIVE NOW | When you hold a PAPER position in the coin: side, size, value, average entry, price, unrealized PnL on the same tick as the header. source: task-1323 handoff item 5 |
docs |
| Open advertised links | LIVE NOW | W / X / T open the site, X and Telegram the token advertises; L lists them all. The URL shows first and only http(s) ever launches. source: task-1315 handoff; keymap W/X/T/L |
docs |
| Social panel | IN PROGRESS | s on the token screen swaps in a SOCIAL panel with spam, duplicate and prompt-injection filtering. Live it holds rule-written on-chain rows only (labelled holders, tracked wallets, large trades); X and Telegram posts show only in the demo, because no keyless post source exists. source: task-1330 handoff › Unverified / not done (no X/TG adapters; keyless scope) |
docs |
Analyst and skills
9 live · 0 in progress · 2 coming · docs
Your own Claude Code login, run locally, with every fact from a tool.
| feature | status | what it does | see |
|---|---|---|---|
| The Claude analyst | LIVE NOW | a on a coin runs a rug-check or the full dossier through a read-only MCP server; your subscription and model apply; no API key ships.screenshot![]() source: app/README.md › The Claude analyst (task-1302) |
docs |
| Knows what you are looking at | LIVE NOW | Every turn carries the screen, the hovered coin, the visible rows, your watchlist and any open ticket, firewalled; “this coin” resolves without asking. source: task-1313 (merged b7f5804): buildScreenState + CONTEXT block |
docs |
| Short, decided answers | LIVE NOW | 3 to 6 lines: call, why, levels, size, one risk. No recap of the screen, no disclaimer boilerplate; long form only when you ask. source: task-1323 handoff items 3+4: 25 lines → 5 lines on five real questions |
docs |
| Navigates for you | LIVE NOW | Five non-financial UI actions (open a coin, filter the screener, watch, switch feed, open a PAPER ticket), each re-validated against what is on screen and rate-limited. source: task-1313; packages/data/src/analyst-actions.ts |
docs |
| Plain-language filters | LIVE NOW | “coins under 5M mcap with 100k liquidity, up on the day, not rugs” becomes a real filter and the analyst states the numbers it chose. source: task-1313 part E; analyst-system.md |
docs |
| Coin-list answers you can navigate | LIVE NOW | An answer that lists coins renders as a table: arrows move, ⏎ opens the coin, o opens its PAPER ticket. source: task-1313 part F |
docs |
| One-call dossier | LIVE NOW | get_dossier fetches market, holders, security, candles, tape and creator in one parallel pass; a partial verdict names what is missing instead of refusing. source: task-1314: 6 round trips → 1; warm dossier 14.5 s on sonnet |
docs |
| Knowledge base and case files | LIVE NOW | A sourced memecoin knowledge base (mechanics, patterns, glossary) and historical case files, for comparison only; never a fact about a live token. source: packages/mcp/assets (task-1293) |
docs |
| One-line digests on the watchlist and new pairs | COMING | The single analyst line in those panels is labelled demo until you run the analyst yourself. source: app/README.md › COMING list |
docs |
| Local history recorder | LIVE NOW | On by default in live mode: keeps what the app saw and code-only outcome labels in your local database for future backtests. Nothing is uploaded; about 100 MB per 8-hour day (measured); --no-recorder turns it off. source: task-1329 handoff (measured footprint and CPU); dexterm recorder stats |
docs |
| Analysis packs, narrative board, backtests | COMING | Token and wallet dossiers as packs, narrative detection, a rug-probability model backtested on recorded history, batch scoring of the screener. source: ROADMAP.md › pillar 3 (task-1287) |
docs |
LARP detector
3 live · 1 in progress · 0 coming · docs
Vet the product behind a coin: website, domain, GitHub. Read-only, only when you ask.
| feature | status | what it does | see |
|---|---|---|---|
| larp-check skill | LIVE NOW | V on a token fetches its site (SSRF-safe, robots-aware, no JS), its domain registration via RDAP and its GitHub activity, and grades the claims: REAL_PRODUCT · EARLY_BUT_REAL · LARP · UNVERIFIABLE · AMBIGUOUS. source: task-1315 handoff (merged b7f5804 + 0882e59) |
docs |
| Verdict badge | LIVE NOW | LARP / REAL / REAL? / UNKNOWN in the screener FLAGS column and the token title strip, only for a coin you actually vetted.screenshot![]() source: task-1315: larpBadge, larpByMint |
docs |
| Mechanical signals | LIVE NOW | Site-builder and default-page patterns, wallet-connect and drainer signatures, external script hosts, team and placeholder text, link mismatch across sources, domain age and registrar privacy. source: packages/data/src/larp/evidence.ts |
docs |
| Measured classifier accuracy | IN PROGRESS | The plumbing is proven with a stub model; a live-model evaluation on representative real and hostile sites has not been measured. A verdict is a risk flag, not a certificate. source: task-1315 handoff › risks: no measured classification accuracy |
docs |
AI scan mode
4 live · 0 in progress · 0 coming · docs
An observe-only watcher that pulls up the coin that lights up and keeps analysing it.
| feature | status | what it does | see |
|---|---|---|---|
| AI scan mode | LIVE NOW | Z toggles it anywhere; six triggers score every coin from data already on hand; a lock opens the coin and starts a short read; R resumes.screenshot![]() source: task-1324 handoff (merged 242863e); live lock at default thresholds on real data |
docs |
| Zero extra requests | LIVE NOW | The scan reads memory and the SQLite cache only; a test asserts 0 HTTP calls over 50 ticks and live req/min matched on and off. source: task-1324: 44.4 vs 44.8 req/min |
docs |
| Observe-only, by structure | LIVE NOW | Empty action allow-list at the validator, the MCP server and the claude launch, plus an app-side refusal; a compromised-model test proves open_ticket changes nothing during a scan. source: packages/cli/test/scan-safety-1324.test.ts |
docs |
| Cost caps | LIVE NOW | 8 analyst turns an hour, 4 per coin, a 90 s refresh floor that also needs the data to move, 15 min same-coin cooldown. source: packages/cli/src/scan/engine.ts DEFAULT_SCAN_CONFIG |
docs |
Paper trading and safety
4 live · 0 in progress · 2 coming · docs
A simulated wallet on real quotes today; non-custodial by design when real trading ships.
| feature | status | what it does | see |
|---|---|---|---|
| PAPER trade ticket | LIVE NOW | B / S on a token: size in SOL or %, slippage, a rolling keyless Jupiter quote with impact, route and minimum received; every frame says PAPER.screenshot![]() source: task-1310 T0 (merged 582224e) |
docs |
| Confirm gate on by default | LIVE NOW | ⏎ arms, y confirms from a fresh quote, sizes above 1 SOL are typed back, any stray key cancels; a quote that stalls times out instead of hanging. source: packages/cli/src/trade.ts; task-1310 T1 fix f2f07ea (merged via 1319) |
docs |
| PAPER positions and history | LIVE NOW | Equity, cash, realized and unrealized PnL marked from live prices, the trade history, persisted in SQLite.screenshot![]() source: task-1310 T0 |
docs |
| No wallet or signing code on main | LIVE NOW | The paper module imports no wallet, keypair or signing library; a key scan of the sources is part of verification. source: task-1310 T0 handoff › key scan clean |
docs |
| Non-custodial swaps | COMING | Designed and built on a branch (signer-side caps, a positive swap-shape policy, a Phantom link bridge, devnet-first), reviewed three rounds, not merged, not live. Your wallet will sign; a keypress arms every plan. source: task-1310 T1 rounds 1–3 (branch task-1310-t1, unmerged); SPEC §6 |
docs |
| Order plans and standing mandates | COMING | “buy if it dips to 300k, sell half at 600k” as a plan you arm once; the keypress gate stays on by default and the signer caps still apply. source: ROADMAP.md › hard rules (task-1292) |
docs |
Popup chart
4 live · 1 in progress · 1 coming · docs
A docked native chart window fed only by the terminal.
| feature | status | what it does | see |
|---|---|---|---|
| Chart popup v2 | LIVE NOW | C opens TradingView Lightweight Charts (vendored, no CDN) for the open coin: candles/line/area, volume, EMA 9/21, VWAP, tape markers, drawings, six timeframes with zero fetches.screenshot![]() source: task-1325 handoff (merged 242863e) |
docs |
| Docked native window (macOS) | LIVE NOW | Opens flush right of the terminal with the same height, follows it, never steals focus, no Dock icon; global chords show/hide and close. source: task-1325: window-1325.json; docking verified via the system window list |
docs |
| Browser fallback | LIVE NOW | No Rust toolchain or no display: the same page opens in your browser and says why, in the terminal and on the page. source: popup README › browser fallback |
docs |
| Position on the chart | LIVE NOW | ENTRY line with size and PnL %, fill markers, stop/target lines when set, and the same position row the terminal shows, from the paper ledger. source: task-1325: popup row == terminal row byte for byte after a real paper buy |
docs |
| Token and feeds popups | IN PROGRESS | A token-detail page and a feeds page exist in the popup package; the feeds page is a stub and neither has a key yet. source: packages/popup/README.md: “a feeds stub” |
docs |
| Bubble maps and wallet graphs as popups | COMING | Heavy views (clusters by funding source, same-slot buys, transfer graph) in the same loopback-only HUD windows. source: ROADMAP.md › pillar 2 and front-end model |
docs |
Voice
0 live · 0 in progress · 1 coming · docs
Jarvis: push-to-talk, an instant local command path, Claude for analysis.
| feature | status | what it does | see |
|---|---|---|---|
| Jarvis voice mode | COMING | Spiked and measured; built on a branch that is not merged. Not in the app. Jarvis will clarify before it proposes and can never arm, sign or raise caps. source: ROADMAP.md › pillar 5 (task-1282); branch task-1282 unmerged |
docs |
Integrations and MCP
5 live · 1 in progress · 5 coming · docs
Yours to run, yours to extend: no accounts, no paid data, no shipped keys.
| feature | status | what it does | see |
|---|---|---|---|
| Read-only MCP server for any agent | LIVE NOW | dexterm mcp is a plain stdio server with 21 tools: the same adapters the screens use, the knowledge base, case files, the LARP tools and five navigation actions. No tool can build, sign or send. source: packages/mcp/src/server.ts |
docs |
| dexterm doctor and a user-level installer | LIVE NOW | Node, colour, the claude CLI, the RPC key, every data source, the chart window and the data dir, each with the exact fix; the installer needs no sudo and verifies any Node it fetches. source: task-1305 (merged 07e42e9); install.sh |
docs |
| Free forever: no paid data | LIVE NOW | Every feature has a keyless path on public APIs; a free key you make yourself only raises limits. Each user has their own quota; there is no server in the middle. source: app/README.md › FREE-FOREVER (task-1309) |
docs |
| Health registry: never fake data | LIVE NOW | Every source degrades visibly (unavailable: reason, needs key, rate-limited); a screen with no data says why instead of hanging.source: packages/data/src/health.ts; ROADMAP hard rules |
docs |
| The cyberspace look, calm mode, themes | LIVE NOW | Rain that follows the market, two masks so no effect can overdraw a number, a contrast gate in the tests, c for calm, four themes, an idle throttle to ~2% CPU.screenshot![]() source: app/README.md › The cyberspace look; task-1319 idle throttle |
docs |
| Phantom as a signing bridge | COMING | Keys never enter dexterm; the wallet extension signs in your browser over a loopback page and the result returns to the terminal. Built on the unmerged trading branch. source: task-1310 T1 bridge.ts (unmerged); ROADMAP pillar 7 |
docs |
| KOL lists | IN PROGRESS | K and dexterm kol manage your own handle lists and hash-locked packs in the local database (a tampered pack is refused). The tiers rank posts, and live there are no posts yet, so today lists mostly matter through tracked pack wallets. source: task-1330 handoff; keymap K, dexterm kol |
docs |
| Login with X for posts | COMING | Each user brings their own X access and limits, so X posts can feed the social panel and the trending board through the same firewall and spam rules. Official APIs only, no scraping. source: ROADMAP.md › pillar 7 (task-1289) |
docs |
| Bring your own agent | COMING | Your own agents through MCP and a local agent bus with per-agent capability tiers; agents are untrusted and can never arm, sign or raise caps. source: ROADMAP.md › pillar 4 (task-1295) |
docs |
| Workspaces, widget API, rules engine | COMING | Themes and keymaps exist today; workspaces, a widget API, a rules engine (when X then alert, ticket or ask Claude), scriptable config and shareable packs are the next lane. source: ROADMAP.md › pillar 4 (task-1288) |
docs |
| Public repo, signed releases, published scans | COMING | A public GitHub repo, releases with build provenance, checksums and an SBOM, third-party scan results on the trust page. License decision pending; no date. source: ROADMAP.md › pillar 9 (task-1301) |
docs |
screenshots are the real app on seeded sample data with made-up tickers; the header reads ◌ sample data. the analyst transcript in those shots is demo text: a real run spawns your own claude login, which a screenshot cannot show honestly.










