zotoio/zoto-cursor-top
Live updating htop-style CLI that shows all agents across every Cursor process on this machine, with expandable parent-to-subagent hierarchy and scrolling log lines. After install, run /zoto-cursor-top-init once to build the CLI and put cursor-top on PATH.
Changelog
All notable changes to this plugin are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
-
cursor-top taillive-tails billed Cursor usage events fromPOST /teams/filtered-usage-events(-n,-f,-p,--json,--hours,--email). RequiresCURSOR_ANALYTICS_API_KEY(Adminread:e) orCURSOR_API_KEYplus a resolvable email. -
Billed COST column in the TUI /
--oncetable when an analytics key is available. In-flight conversations show the running total across unique requests (a rewritten in-flight request replaces its previous totals instead of stacking). The header prints the lookback-window spend.--no-usage-apidisables the client. Default output is unchanged when no key is configured. -
Five playful TUI themes with emoji badges, status glyphs, and funky titles:
party,kawaii,cyber,retro, andwizard. Decor applies in the interactive TUI only;--once/--jsonstay plain ASCII. -
/zoto-cursor-top-initcommand for one-time CLI setup after marketplace install (buildsdist/, runsinstall-local, symlinkscursor-toponto PATH)./zoto-cursor-topand the monitor skill gate on init when the binary is missing.
[0.2.0] - 2026-06-11
Added
- Colour theme engine with eight built-in palettes:
default,mono,high-contrast,ocean,forest,sunset,solarized, anddracula. Switch via--theme <name>or thetkey in the interactive TUI. A non-emptyNO_COLORenvironment variable forcesmonoper the no-color.org convention. - Layout density levels:
compact(agent row only),cozy(row + title), andcomfortable(row + title + log tail — unchanged default). Switch via--density <level>or theykey. Log-tail line count stays--lines-driven at every density. --oncerespects--density(omits title/log body lines at lower densities); default--onceoutput is byte-identical to pre-0.2.0.--jsonis unaffected by theme or density.- Filter / search.
--filter "<query>"and the/key narrow the agent tree by repo, model, status, and free text. Scoped tokens AND-combine with bare terms; matching nodes keep ancestor chains. Applies to the interactive TUI (pre-seeds the filter bar),--once, and--json. Default output without--filteris unchanged. - Lifecycle event strip (TUI only). Diffs consecutive snapshots and
shows the most recent finished / failed / waiting / appeared transitions
in a themed strip above the footer; rows whose status just changed stay
accent-highlighted for ~5 s.
--bellrings the terminal on finished / failed events. Event data is not emitted in--jsontoday (future additive extension). - Collector caching (interactive mode). One persistent collector per TUI
session with mtime/size-gated caches for session JSON, log tails
(
FsLike.readWindowseam), composer-model lookups, and slug maps. Fast lane every tick (process scan, transcript stats, new-transcript scan, changed-log re-tails); slow lane every 5 ticks (session re-walk, sqlite retries). Bounded fs concurrency (24 parallel ops).--once/--jsonstill use a single cold collect in a fresh process — default output unchanged. - Detail pane (interactive TUI). Press
don a selected row to open a bottom split with full metadata and a deep log tail (default 25 lines,--detail-lines). Loaded lazily for one node at a time with its own mtime/size cache; main-view tick cost is unchanged while the pane is closed. Demo / process-only nodes withoutlogSourceshowrecentLogs.Esccloses the pane before clearing a filter;↑/↓moves selection and the pane follows. - Viewport windowing (interactive TUI). Renders only the terminal-height
slice of the agent tree with
↑ N more/↓ N moreoverflow indicators and selection-follow scrolling. Row memoisation and quantised elapsed strings bound per-second clock updates to the visible window.--once/--jsonoutput unchanged (full tree, no indicators).
Fixed
- New agent chats appear on the next refresh tick instead of waiting up to
~4 s for the collector slow lane. Fast-lane ticks now re-enumerate
transcript roots and scan for new transcript files;
--with-logsno longer hides brand-new chats before their first message is written. - Table columns resize to the terminal width with a flexible AGENT column; START, STATUS, and TOKENS are padded so every row aligns vertically with the header (fixes the staggered REPO/STATUS layout on wide terminals).
- REPO column shows
owner/repo(nogithub.com/prefix) and receives a larger share of horizontal flex space (min width 20 cols, up to 48). - Interactive TUI preferences (theme, density, info strip) persist across
sessions in
~/.zoto/cursor-top.json. Explicit--theme/--densityflags override saved values for that launch.
[0.1.0] - 2026-05-16
Added
- Initial release of
zoto-cursor-top. cursor-topCLI binary - live updating htop-style TUI of every Cursor agent on the machine.- Process discovery for Cursor IDE, the
cursor-agentCLI, and Cursor Cloud Agent VMs (Linux / macOS / Windows). - Session metadata reader: start time, model, repository, status.
- Parent-to-subagent hierarchy via session metadata, with
ppidfallback. - Per-row scrolling tail of the last 3 log lines for every agent.
- Expand / collapse, follow mode, refresh interval controls, and keyboard navigation.
--demomode for offline previews and screenshotting.--jsonand--oncemodes for scripting and CI integration./zoto-cursor-topslash command,zoto-cursor-top-monitorskill, andzoto-cursor-top-troubleshooteragent for in-Cursor invocation and troubleshooting.