All notes

Rabe: see what Claude Code runs in the background

Rabe is a Claude Code mod that shows agents, Codex jobs, shells, monitors, crons and workflows in one band and one pane.

You ask Claude Code for a larger change. It starts two subagents, a background shell with a dev server and a monitor that watches a log. Twenty minutes later you wonder: is the server still up? Which agent wrote that file? And what did all of this cost?

Claude Code shows some of it under the prompt, but not in one place. So I built Rabe (opens in a new tab), a Claude Code mod that shows it all together. Rabe is German for raven. It is still at an early stage (0.4.3), so expect rough edges.

Rabe in a live session: the band counts background work, the pane shows it.

What Rabe shows

A mod is a plugin that hooks into Claude Code itself and can draw its own interface in the session. Rabe draws two things.

The band is one line above the prompt. It counts what runs now, one chip per kind: Claude subagents, Codex jobs, background shells, monitors, cron jobs and workflows. Failures from the last 10 minutes come first, then the session cost. When nothing runs, the band draws nothing.

The /rabe command opens the pane, which docks beside the transcript. It has four tabs:

  • Items: everything grouped by kind, with a search field. A shell that an agent started shows under that agent.
  • Cost: tokens and an estimate in dollars per agent and per Codex job, plus the workers that look stuck.
  • Effects: the files that agents, Codex jobs and the main session changed, who changed them, a warning when two of them touch the same file, the git worktrees and the open ports.
  • Timeline: a bar per item over the last hours, who started what, and a summary of the previous session.
Items: everything running in the background, grouped by kind.

From the pane you can also act: stop an item, send a message to an agent, copy an agent's id or the command that resumes a session.

Effects: files changed, worktrees and open ports.
Timeline: when each item ran, and who started it.

Enter never acts on a row you did not pick

The hardest problem was not data. It was a list that changes while you look at it.

Think of a queue at a bakery counter. You point at the third person to serve them. In the moment you point, someone new walks in and stands in front. If the counter works by position, you now serve the wrong person.

The pane has the same problem. Agents and shells start while it is open. If a new row went to the top of the list, the row under your focus would change between the moment you see it and the moment you press Enter. With a stop key, that means you stop the wrong job.

So Rabe uses an append-only order while the pane is open. Rows and buttons keep their places. A new item goes into the group of its kind, after the rows already there. When it lands above the focused row, Rabe moves the focus back onto the row you had. The analogy stops fitting here: at the bakery the newcomer stands in front, in Rabe they go to the back.

The stop and remove keys add a second guard. They work only after you moved onto a row yourself, with an arrow key, Tab or a click. Until then, and after the selection changes without you, they are dim. A key press never stops something you did not pick.

Cost from a price table

Claude Code reports tokens per agent, but no dollars. So Rabe estimates them: the tokens of each model request times the list price of its model. The prices come from a CSV file in the repository, one row per model with its input, output and cache prices.

For Claude agents Rabe prices each request: uncached input, cache reads, cache writes and output. For Codex jobs it reads the same counts from the Codex session file. The pane marks every estimate with ≈, and the session cost from /cost stays the real total.

Some estimates are not possible. A model that is not in the table, or an agent that started before Rabe loaded, shows n/a. You can also point Rabe to your own CSV file. Its rows come first, so you can change a price or add a model.

Cost: tokens and estimated cost per worker, Claude and Codex.

Install

Type this at a Claude Code prompt:

/plugin install rabe --marketplace lorenzh/rabe

Then run /reload-plugins or start a new session, because a plugin does not load in the session you installed it in. Rabe is tested with Claude Code 2.1.296; other versions can show n/a where a file changed. For Codex jobs you also need the Codex plugin.

Rabe runs on your computer only. It makes no network requests. The band shows by itself while background work runs, and /rabe opens the pane.

Back to top