Claude Modsunofficial directory

Dashboards·terminal·MIT

cctop

Context, cost, rate limits and tool stats of the session, live in a side pane.

cctop dashboard docked beside a Claude Code transcript, showing context, cost and tool tiles
Images from the cctop repository, MIT license

cctop shows what Claude Code does not: how full the context is and when the next compaction hits, tokens and cost with the cache hit ratio, rate limits with a forecast of when they run out, what the current turn is waiting on, per-tool latency, subagents and MCP servers. With function hooks enabled, /cctop opens it in a pane docked inside Claude Code, beside the transcript.

The cctop dashboard running in a pane beside a Claude Code session, with the tiles and ledger updating

What it does

  • Seven views: Coach, Overview, Tools, Agents, Files, Events and Advisor. Click a name in the pane’s top bar to switch, or run /cctop-pane tools.
  • The Coach view gives one nudge at a time, such as filling the context or snoozing an advisor, with buttons that write a prompt into the prompt box without submitting it.
  • Context, cost and rate limits come from the engine itself, so the pane works with nothing else installed. The cctop binary fills in the rest: tool timings, files, agents, the Advisor.
  • Without function hooks, /cctop opens the same dashboard as a terminal split in tmux, zellij, WezTerm, Kitty or iTerm2.
  • A second skill, cctop-insights, lets the session answer questions such as “what is filling my context?” from the dashboard’s numbers.

Install

Needs Claude Code 2.1.269 or later with function hooks enabled, and the cctop binary for the full set of numbers (cargo install cctop works where Homebrew does not).

brew install tomstagl/tap/cctop
claude plugin marketplace add tomstagl/cctop
claude plugin install cctop@cctop

Restart Claude Code or run /reload-plugins, then /cctop. The pane docks when the terminal is 110 columns or wider; narrower, it draws above the prompt instead. When the pane does not appear, cctop pane status prints one line per prerequisite with the fix.

How it works

The hooks module registers /cctop-pane, draws the pane, and re-reads the session id on every turn and every poll so it follows a /clear. Numbers come from cctop query, run through the engine’s process call, and from the engine’s own session usage. It writes a small marker file so the standalone TUI and the pane agree on which session is open. Nothing leaves the machine.

The built-in /diff panel and a plugin pane share one dock, and the diff panel wins. While it shows, cctop pins a status line under the prompt saying so, and comes back when /diff hides it.

Limitations

  • Docking needs the fullscreen renderer and a terminal 110 columns wide. Otherwise the dashboard draws above the prompt, which costs the transcript rows.
  • Plugin 0.4.0 broke on Claude Code 2.1.271, which changed $.clock.now() from a number into a promise. Version 0.4.1 fixes it. If every light shows “waiting for cctop”, run claude plugin update cctop@cctop and restart.
  • Draws only in interactive terminal sessions.