Skip to content

[FEATURE] Agent Hierarchy Dashboard — unified real-time visualization for multi-agent workflows (TUI + Desktop) #24537

Description

@woodrowpearson

Preflight Checklist

  • I have searched existing requests and this feature hasn't been requested yet
  • This is a single feature request (not multiple features)

Problem Statement

When Claude Code dispatches complex workloads with nested Task agents, there is some ability to view context and task but it is displayed in a sub-optimal way (i.e. it's not a great experience having the work being performed by agents in the same terminal window as the session. The conversation view interleaves tool calls from the main agent with subagent results, but you cannot see the following without obfuscating the current terminal session or at all (that I am aware of):

  • How many agents are running and what each is doing right now
  • Per-agent resource usage — which agent is consuming context, tokens, and cost
  • The agent tree — which agent spawned which, and their parent-child relationships
  • Task progress per agent — not just the top-level task list, but what each agent is working on
  • Historical replay — what happened during a complex multi-agent run

This problem/opportunity exists in both the CLI and Desktop Code mode as I believe they share the same agent/subagent engine.

Rationale

The Claude Code conversation view was designed for a human talking to one agent. It was never meant to be a control plane for 7 concurrent subagents across multiple sessions. Cramming agent trees, resource metrics, task progress, and approval prompts into an interleaved chat transcript is what creates the overload.

The answer is separation, not subtraction.

This proposal moves operational complexity out of the conversation view and into a dedicated dashboard surface (TUI overlay / Desktop sidebar):

  • Agent tree, per-agent metrics, and task progress get a purpose-built interface instead of cluttering chat scroll
  • Approval prompts surface in a dedicated activity stream instead of getting buried
  • Session switching and cost tracking live in a control plane, not inline text output
  • The conversation view goes back to what it does best: focused dialogue with the primary agent

This is a proven pattern:

  • Kubernetes moved monitoring into dashboards (k9s, Lens) — kubectl stayed focused on direct interaction
  • VS Code put debugging, git, and terminals in collapsible panels — the editor stays clean
  • tmux layered a control plane on top of shell sessions — keeping the two concerns separate

You can simplify the conversation view not by removing features from the product, but by giving them a better home. The 20+ issues this proposal consolidates aren't asking for fewer features. They're asking for the right features in the right place.

This Proposal Unifies 20+ Existing Issues

The community has filed many fragmented requests that all point at the same gap. This proposal provides the product design that makes infrastructure investments in agent observability worthwhile.

Agent Monitoring / Identification:

Per-Agent Resource Tracking:

Session Management:

Multi-Session:

UI / Visualization:

Proposed Solution

A built-in real-time dashboard with two companion proposals targeting different surfaces, sharing the same infrastructure:

┌─────────────────────────────────────────────────────┐
│                 Shared Infrastructure                │
│  Agent Registry · Enriched Hooks · Enriched         │
│  Statusline · Session Discovery · JSONL Transcripts │
└─────────────┬───────────────────────┬───────────────┘
              │                       │
    ┌─────────▼─────────┐   ┌────────▼────────────┐
    │  Proposal A: TUI   │   │  Proposal B: Desktop │
    │  (CLI terminal)    │   │  (Claude Desktop)    │
    │  React + Ink       │   │  React + Electron    │
    │  Alt screen buffer │   │  Sidebar / Split     │
    │  Vim keybindings   │   │  Canvas timeline     │
    │  ASCII tree        │   │  SVG charts          │
    └────────────────────┘   └──────────────────────┘

Proposal A: TUI Dashboard (CLI)

A full-screen overlay activated via /dashboard or Ctrl+Shift+D:

╔══════════════════════════════════════════════════════════════════════════════════╗
║ [A: feature/auth ↑87%]  [B: fix/sweep ↑34%]  [C: docs/glossary ✓]     Ctrl+D ║
╠════════════════════════════════════╦══════════════════════╦════════════════════════╣
║ ▼ Main Agent (opus-4-6)        ●  ║ Tasks (5)            ║ Session A              ║
║   ├─ Research TUI tools     2m41s ║ ✓ 1 Research TUI  2m ║ Branch: feature/auth   ║
║   │  └─ general (sonnet)    ✓     ║ ● 2 Research CC   4m ║ Model:  opus-4-6       ║
║   ├─ Research CC internals  4m05s ║ ● 3 Write design 33s ║ Context ████████░░ 87% ║
║   │  └─ general (sonnet)    ◐     ║ ○ 4 Run tests  ⊣3   ║ Tokens: 142k/38k       ║
║   ├─ Write design doc        33s  ║ ○ 5 Deploy     ⊣4   ║ Cost:   $4.82          ║
║   │  └─ (working...)        ●     ║                      ║ Runtime: 12m 34s       ║
║   ├─ Run tests           pending  ╠══════════════════════╣ Agents: 3● 1✓ 1○      ║
║   │  └─ ···                       ║▸Agent: Research CC   ║ Compacts: 2            ║
║   └─ Deploy              pending  ║ ✓ Search htop/btop   ╠════════════════════════╣
║      └─ ···                       ║ ✓ Search k9s/lazy    ║▸general (sonnet)       ║
║                                   ║ ● Search CC tools    ║ ID:   a597243          ║
║                                   ║                      ║ Status: ◐ waiting      ║
║                                   ║ Tool calls: 66       ║ Context ██████░░░ 38%  ║
║                                   ║ Files: 0w 0e         ║ Tokens: 54k/13k        ║
║                                   ║                      ║ Cost:   $0.41          ║
║                                   ║                      ║ Runtime: 4m 05s        ║
║                                   ║                      ║ ● WebSearch 3.2s ago   ║
╠════════════════════════════════════╩══════════════════════╩════════════════════════╣
║ Activity (follow)                                                          [f]/  ║
║ 12:34:07 [Main]    Edit Sources/CameraFeature/Views/CaptureView.swift            ║
║ 12:34:09 [Agent 1] WebSearch "ratatui tree widget 2026"                          ║
║ 12:34:14 [Agent 1] WebFetch github.com/nyanko3141592/tmuxcc                     ║
║ 12:34:18 [Agent 1] ✓ Complete — returned 4.2k chars to Main                     ║
╠══════════════════════════════════════════════════════════════════════════════════╣
║ j/k:navigate  Enter:expand  Tab:session  d:detail  f:follow  /:filter  q:exit  ║
╚══════════════════════════════════════════════════════════════════════════════════╝

TUI Dashboard Mockup

Layout: Session tab bar (top) → three-column body (Agent Tree 40% | Tasks 28% | Stats 32%) → Activity stream (bottom)

Key features:

  • First full-screen alternate screen buffer overlay in Claude Code
  • Vim-style navigation (j/k, Enter, Tab, / filter)
  • Unicode tree rendering with status icons (● running, ◐ waiting, ✓ complete, ✗ failed, ○ pending)
  • Master-detail: selecting an agent updates the stats and task panels
  • Inline approval prompts in the activity stream (y/n)
  • Replay mode with transport controls for completed sessions

Proposal B: Desktop Dashboard (Claude Desktop Code Mode)

A persistent sidebar panel for Claude Desktop's Code mode:

Desktop Dashboard Mockup

Desktop-exclusive features not possible in TUI:

Feature Description
Persistent sidebar Non-blocking — conversation continues while Dashboard updates
Timeline / Gantt view Canvas-rendered horizontal swimlanes with zoom/pan
Cost projection Real-time "$/min" burn rate with budget alerts
Native notifications macOS/Windows alerts for agent complete, failed, approval needed
File heatmap Directory tree with per-agent color-coded access bars
Export PNG, HTML (interactive replay), JSON, CSV, Markdown
Detachable window Float Dashboard on second monitor

Required Infrastructure (Shared by Both Proposals)

These are the prerequisites many existing issues are requesting:

Requirement Related Issues Status
Agent Registry — internal service maintaining agent relationships #14859, #16424 Not started
agent_id in hook payloads — attribute events to specific agents #7881, #14859, #16424, #10052 Not started (most requested)
SubagentStart hook — know when agents spawn #14859 Not started
Per-agent metrics — context %, tokens, cost per agent #22625, #10164 Not started
Enriched statusline — agent tree data in status JSON #10052, #14306 (closed as dup) Not started
Session discovery — cross-session visibility #17188, #16311 Not started

Comparison: TUI vs Desktop

Aspect TUI (Proposal A) Desktop (Proposal B)
Platform Claude Code CLI (terminal) Claude Desktop Code mode
Framework React + Ink + custom renderer React + Electron
Activation /dashboard, Ctrl+Shift+D Cmd+Shift+D, sidebar toggle
Layout Full-screen overlay Sidebar, split pane, detached window
View modes Tree only Tree, Timeline, Cost, Heatmap
Navigation Keyboard only (vim-style) Mouse + keyboard
Data viz ASCII bars, text tables SVG charts, Canvas timeline
Replay Transport controls in overlay Interactive timeline scrubber

Existing Community Tools (Gap Analysis)

Community tools demonstrate strong demand but hit fundamental limitations:

Tool Approach Limitation
TmuxCC Polls tmux panes No true tree, no per-agent stats
claude-dashboard k9s-style session list Flat list, no hierarchy
ATM Hook-driven daemon No nested tree, no task panel
claude-code-hooks-observability Web dashboard Web-only, no tree, no replay
Claude HUD Statusline plugin Single session, no tree

All of these would be unnecessary if the dashboard were built-in.

Alternative Solutions

  1. Status quo + external tools — community builds on hooks. Limited by missing agent_id in payloads. Fragmented, no standard.
  2. Enriched statusline only — expose data but let users build their own UI. Lower effort but doesn't solve the problem for most users.
  3. Built-in dashboard (this proposal) — first-party experience that works out of the box. Higher effort but solves the problem completely.

Priority

High - Important for my workflow

Feature Category

CLI commands and flags

Use Case Example

Scenario: User asks Claude to plan and implement a feature across 5 files.

Claude spawns 3 parallel agents: Explore (codebase research), Plan (architecture design), and Bash (running tests). Each agent makes dozens of tool calls over 10+ minutes.

Today: User sees interleaved tool call summaries in the chat. No way to tell which agent is doing what, which is stuck, or how much context each has consumed. If an agent needs approval, it's buried in scroll.

With Dashboard: User presses Ctrl+Shift+D and sees the full agent tree with live status, per-agent context/cost, a task checklist, and an activity stream. They approve a pending action inline, see one agent is at 87% context (about to compact), and switch to check another session running on a different branch — all without leaving the terminal.

Full Technical Design

Complete technical design documents, ADRs, and mockups:

Repository: https://github.com/woodrowpearson/claude-code-agent-dashboard-proposal

Document Description
TUI Technical Design Component architecture, data model, API requirements, keybindings, replay mode
Desktop Technical Design Desktop layout, view modes, exclusive features, component design
ADR-001: TUI Dashboard Decision record with alternatives considered
ADR-002: Desktop Dashboard Decision record for Desktop edition

Additional Context

  • Claude Code uses React + Ink with Anthropic's custom differential renderer. The TUI proposal builds on this existing stack.
  • Alternate screen buffers are documented as a "future consideration" by the team — this would be the first such implementation.
  • Both proposals can be phased: Phase 1 (infrastructure + TUI), Phase 2 (Desktop). Or developed in parallel since they share the data layer.
  • The infrastructure requirements (Agent Registry, enriched hooks) benefit the entire ecosystem of community tools, not just this dashboard.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions