Dashboard & Monitoring
red-run provides real-time visibility into teammate execution through Claude Code agent teams and the state dashboard.
Agent Teams (Primary)
red-run uses Claude Code agent teams for teammate coordination and visibility. Each teammate runs in its own tmux pane, giving the operator a live view of all parallel work.
Operator controls:
- Watch — see each teammate's output in its own tmux pane (reasoning, commands, results)
- Interrupt — press Escape in a teammate's pane to stop its current turn
- Redirect — type directly to any teammate to give new instructions or ask questions
- Monitor task list — press Ctrl+T to toggle the shared task list showing all assigned work
For split-pane mode, start Claude Code inside a tmux session. Without tmux, teammates run in-process mode — cycle through them with Shift+Down.
Setup
Add to .claude/settings.json (project-level):
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}
Legacy Terminal Dashboard
The terminal-based agent dashboard (JSONL transcript viewer for legacy subagent runs) has been removed from this repo. If you need it for /red-run-legacy subagent monitoring, it's available in the agentsee repo.
Transcript Capture
Every teammate's full JSONL transcript is automatically saved to engagement/evidence/logs/ when the teammate finishes. This is the accountability layer — tmux panes show you what teammates are doing in real time, and transcripts give you a permanent record of every tool call, command, and decision each teammate made.
A TeammateIdle hook (tools/hooks/save-agent-log.sh) handles this automatically:
- Claude Code fires the
TeammateIdleevent when a teammate finishes its current task - The hook reads the transcript path and teammate name from the event JSON
- Copies the transcript to
engagement/evidence/logs/{timestamp}-{teammate-name}.jsonl
No engagement directory = hook exits silently. The retrospective skill parses these logs for post-engagement analysis.
Configuration
Hook Setup
The TeammateIdle hook is configured in .claude/settings.json:
{
"hooks": {
"TeammateIdle": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash tools/hooks/save-agent-log.sh"
}
]
}
]
}
}
The hook always exits 0 to never block Claude Code, regardless of whether logging succeeds.