Dashboards·terminal · desktop·MIT
mission-control
Main agent, subagents and every tool call in a pane, plus a map of the files they touch.

mission-control follows a Claude Code turn while it happens. /mission opens a pane next to the chat with two views: Who, a live tree of the main agent, its subagents and every tool call they make, and Code, a map of the files they read and edit with the imports between them.

What it does
- Who view (
w). One row for the main agent, labeled with the start of your prompt, one per subagent with its running time and tool count, and one per tool call: the Bash description, the file, the search pattern or the MCP action. Running calls are yellow and failed ones red. Consecutive calls of the same kind under one parent fold into a single line, so a busy subagent stays readable. - Code view (
c). Each file Claude touches becomes a card, with arrows for the relative imports between them and columns by import depth. A card glows blue while it is read, orange while it is edited, and turns green with a tick once it changed this turn, plus one line on what changed. Files that were only read and link to nothing sit as small chips along the bottom. - A band above the prompt while Claude works and for 30 seconds after: running and total agents, tool calls, failures and files changed.
- A subagent still running in the background when your next turn starts carries over into the new tree with its open calls.
Install
Needs Claude Code 2.1.287 or later. The Code view also needs macOS, Google Chrome in /Applications and a terminal that shows images, such as Ghostty, kitty or iTerm2. The Who view and the band need nothing else.
claude plugin marketplace add hamzafer/claude-code-mods
claude plugin install mission-control@claude-code-mods
The marketplace is named claude-code-mods, like the ones in arasovic/claude-code-mods (session-meter) and karanb192/claude-code-mods (cache-tax): if claude plugin marketplace list already shows that name, the add clashes with it, so remove the other one first with claude plugin marketplace remove claude-code-mods.
Restart Claude Code, then run /mission, or /mission code to open straight on the map. w and c switch views and q closes the pane.
How it works
The mod watches and never blocks or changes a call. turn.start starts a fresh tree, agent.spawn adds each subagent, and tool.call adds each call and marks it done or failed when it returns. Claude Code’s own bookkeeping tools, such as ToolSearch and the Task tools, are left out.
For every source, config or docs file a call touches, the mod reads the file to find its relative imports: import and require in JavaScript and TypeScript, relative imports in Python. After a turn that edited files, it sends the edits, cut to a few hundred characters each, to Haiku with a 400-token cap and asks for one plain line per file. That request runs in the background once the turn has ended, and it counts toward your usage like any other.
To draw the map, it writes an SVG to $TMPDIR/mission-control/ and screenshots it with headless Chrome, using a throwaway profile in that folder, never your own browser profile. It only draws while the Code view is open, at most about once a second. The tree and the file list stay in memory and survive a hot reload of the plugin.
Limitations
- The Code view looks for Chrome at its macOS path. Without it, the pane shows a message instead of the map. On a surface other than the terminal, the pane says the map draws in the terminal.
- The map keeps the 14 most recently touched files, and the tree keeps up to 300 rows, dropping the oldest tool calls first.
- Only relative imports draw arrows, so a file that imports packages alone stands unlinked.
More mods
The whole directory →agent-flow
Every subagent of the session in a live tree beside the transcript. Zero tokens.
agent-profiler
Model wait, tools and subagents as shares of session time, live, with OTLP export.
todos
The repo's TODOs and FIXMEs above the prompt at session start, newest first.
budget-guard
Warns at 80% of a cost or plan-window limit you set, then refuses tool calls past it.
