agent-dashboard
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in adapters/claude-code/hooks/hooks.json
- fs.rmSync — Destructive file system operation in adapters/claude-code/packages/agent-state/index.js
- process.env — Environment variable access in adapters/claude-code/packages/agent-state/index.js
- fs module — File system access in adapters/claude-code/packages/agent-state/index.js
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Real-time tmux dashboard to monitor, manage, and orchestrate AI coding agents — Claude Code, Codex, and more
agent-dashboard
A tmux-integrated TUI and mobile web companion for monitoring and controlling Claude Code agents across sessions. The TUI is built with Bubble Tea and styled with Catppuccin Frappe; the mobile companion is a PWA you run on your local network so you can manage agents from your phone.
https://github.com/user-attachments/assets/01aa0f85-cfd4-4dc3-ac46-651bcfc03f99
Both interfaces read agent state from per-agent JSON files in ~/.agent-dashboard/agents/ (written by the Claude Code adapter in adapters/claude-code/).
Features
TUI (terminal)
- Real-time agent monitoring — agents grouped by state (needs attention, running, completed) with live tmux pane capture
- Subagent tree — expand/collapse/dismiss subagent nodes under parent agents
- Conversation history — timestamped messages with role-based colouring, incremental JSONL parsing
- Diff viewer — GitHub-style split-pane diff with syntax highlighting, smart context collapsing, and sticky function headers
- File change tracking — colour-coded additions, removals, and modifications
- Plan viewer — glamour-rendered markdown plans with syntax highlighting
- Mermaid diagram viewer — captures
mermaidblocks from agent messages, browse per-session, render in browser viaD - Usage dashboard — per-agent token breakdown, 7-day cost chart, cumulative totals persisted to SQLite, live rate-limit bars (auto-discovered from Claude OAuth credentials)
- Session creation — create new agent sessions with z-plugin frecency-ranked path autocomplete and skill selection (feature, fix, chore, refactor, investigate, pr, rca)
- ASCII pet — experimental animated red panda companion in the left panel (opt-in via settings)
- Dino runner game — experimental Chrome-style endless runner in the left panel with jump, duck, speed ramp, and score counter (opt-in via settings)
- Quick reply — send free-text responses directly to agent panes
- GitHub PR workflow — open existing PR diff, create new PR, or merge via
ghCLI (falls back to browser) - Status feedback — colour-coded success/error messages in the help bar for user actions
- Help overlay — full-screen keybinding reference grouped by context
- Daily quote — fetched from API Ninjas with fallback to embedded quotes
- Pixel art banner — axolotl rendered with half-block Unicode characters
- Singleton lock — prevents multiple dashboard instances from running simultaneously
- Semantic versioning — version injected at build time via
-ldflags
Mobile remote control
A companion PWA (cmd/web/) for managing agents from your phone over your local network:
- Agent list and detail views — same state grouping as the TUI, with conversation timeline and diff viewer
- Full remote control — approve/reject permissions, reply to questions, send numbered options, stop agents, open PRs, merge, and close — all from your phone
- Session creation — create new agent sessions with z-plugin suggestions and skill selection
- Usage dashboard — token breakdown and cost tracking
- Google OAuth — optional single-user authentication so only you can access the dashboard
- Installable PWA — add to home screen for a native app feel with offline caching via service worker
| Raw state | Display group | Priority | Description |
|---|---|---|---|
permission |
BLOCKED | 1 | Waiting for tool permission |
plan |
BLOCKED | 1 | Plan review pending |
question |
WAITING | 2 | Agent asked a question |
error |
WAITING | 2 | Agent encountered an error |
running |
RUNNING | 3 | Actively executing |
idle_prompt |
REVIEW | 4 | Idle, waiting for user input |
done |
REVIEW | 4 | Session completed |
pr |
PR | 5 | Pull request created |
merged |
MERGED | 6 | Pull request merged |
Pinned states: pr and merged are sticky — once set, idle states (idle_prompt, done, question) restore back to the pinned value. Active states (running, permission) display through normally so the dashboard reflects live work.
Prerequisites
| Dependency | Required | Purpose |
|---|---|---|
| tmux | Yes | Agent pane management and live capture |
| Claude Code | Yes | The agents this dashboard monitors |
| Node.js 18+ | Yes | Claude Code adapter hooks |
| git | Yes | Diff viewer, branch detection |
GitHub CLI (gh) |
No | Detects existing PRs so g opens the diff page instead of creating a new PR |
| z (zsh plugin) | No | Frecency-ranked directory suggestions when creating sessions |
Install
Step 1: Install the binary
Download the pre-built binary from the latest GitHub Release:
curl -fsSL https://raw.githubusercontent.com/bjornjee/agent-dashboard/main/install.sh | sh
The installer downloads the binary for your platform, verifies its SHA256 checksum, and installs it to ~/.local/bin/agent-dashboard. No Go toolchain required.
Or build from source (requires Go 1.26+):
git clone https://github.com/bjornjee/agent-dashboard
cd agent-dashboard
./install.sh --build
Step 2: Register the marketplace and install the plugin
In any Claude Code session, run:
/marketplace add bjornjee/agent-dashboard
/plugin install agent-dashboard@agent-dashboard
Then restart Claude Code sessions for hooks and skills to take effect.
Uninstall
Step 1: Remove the plugin
In any Claude Code session, run:
/plugin uninstall agent-dashboard@agent-dashboard
/marketplace remove agent-dashboard
Step 2: Remove the binary and state
curl -fsSL https://raw.githubusercontent.com/bjornjee/agent-dashboard/main/uninstall.sh | sh
Or from a repo checkout: make uninstall. Pass --yes to skip the prompt for deleting ~/.agent-dashboard/ (which contains settings and usage data).
Optional: tmux keybinding
The included agent-dashboard.tmux script binds prefix + D to switch to a dedicated dashboard session:
# Add to ~/.tmux.conf
run-shell /path/to/agent-dashboard/agent-dashboard.tmux
# Reload tmux config
tmux source-file ~/.tmux.conf
Usage
Run the dashboard directly:
agent-dashboard
Or if you set up the tmux keybinding, press prefix + D to switch to a dedicated dashboard session.
Keybindings
| Key | Action |
|---|---|
j/k or arrows |
Navigate agent list |
Shift+Up/Down |
Jump to next parent agent (skip subagents) |
Enter |
Jump to agent's tmux pane |
Tab/Shift+Tab |
Cycle focus between panels |
Ctrl+U/D |
Scroll focused panel (half-page) |
r |
Reply to agent (free-text) |
y/n |
Quick approve/reject (blocked or waiting agents) |
1-9 |
Send numbered option to agent |
e |
Open editor in agent's directory |
d |
Show git diff (merge-base vs HEAD, syntax highlighted) |
g |
Open existing PR diff or create new PR |
m |
Merge PR via gh CLI and send cleanup |
a |
Create new agent session (z-plugin suggestions + skill selection) |
c |
Collapse/expand subagent tree |
x |
Dismiss subagent or close agent pane |
p |
Toggle plan view |
D |
Toggle diagrams panel (when diagrams present) |
u |
Toggle usage dashboard |
G (Shift+G) |
Toggle dino runner game (when enabled) |
h |
Show help overlay with all keybindings |
J/K |
Line scroll (plan/diff views) |
q / Ctrl+C |
Quit |
Diff Viewer Keybindings
| Key | Action |
|---|---|
j/k or arrows |
Select file |
J/K (shift) |
Scroll diff content (single line) |
Ctrl+U/D |
Scroll diff content (half page) |
g/G |
Jump to first/last file |
{/} |
Jump file list by half page |
Enter or Space |
Toggle directory expand/collapse |
/ |
Filter files by name |
e |
Expand/collapse all context |
d, q, or Esc |
Exit diff viewer |
User Settings
The dashboard supports a TOML configuration file at ~/.agent-dashboard/settings.toml (or $AGENT_DASHBOARD_DIR/settings.toml if overridden). The installer creates this from settings.example.toml. Any missing keys fall back to sensible defaults — you only need to include the settings you want to change.
Example settings.toml:
[banner]
show_mascot = true # show the axolotl pixel art (default: true)
show_quote = true # show the daily quote (default: true)
[notifications]
enabled = false # enable desktop notifications from adapter hooks (default: false)
sound = false # play alert sound on attention events (default: false)
silent_events = false # show notification for non-alerting stops (default: false)
[debug]
key_log = false # write key/mouse/focus events to debug-keys.log (default: false)
[experimental]
ascii_pet = false # show animated ASCII pet in the left panel (default: false)
dino_game = false # show Chrome-style dino runner game in the left panel (default: false)
[usage]
rate_limit_poll_seconds = 60 # how often to fetch rate limits from Anthropic API (default: 60, 0 = disable)
| Section | Key | Default | Description |
|---|---|---|---|
banner |
show_mascot |
true |
Show the axolotl pixel art in the banner |
banner |
show_quote |
true |
Show the daily quote in the banner |
notifications |
enabled |
false |
Enable desktop notifications from adapter hooks |
notifications |
sound |
false |
Play alert sound on attention events |
notifications |
silent_events |
false |
Show notification for non-alerting stops |
debug |
key_log |
false |
Write key/mouse/focus events to debug-keys.log |
experimental |
ascii_pet |
false |
Show animated ASCII pet in the left panel |
experimental |
dino_game |
false |
Show Chrome-style dino runner game in the left panel (Shift+G to toggle) |
usage |
rate_limit_poll_seconds |
60 |
How often (in seconds) to fetch rate-limit data from the Anthropic OAuth API. Set to 0 to disable. |
Environment Variables
| Variable | Description | Required |
|---|---|---|
AGENT_DASHBOARD_DIR |
Override default state directory (~/.agent-dashboard) |
No |
EDITOR |
Editor command for opening agent directories (default: code) |
No |
API_NINJAS_KEY |
API key for quote-of-the-day | No (falls back to built-in quotes) |
Development
Development requires Go 1.26+ (not needed for binary installation).
make build # Build TUI binary to bin/ (version from git tag or VERSION file)
make build-web # Build web server binary to bin/
make fmt # Auto-format Go source files
make vet # Check formatting + run go vet
make test # Run all tests (vets first)
make test-race # Run tests with race detector
make install # Build and install binary from source
make uninstall # Remove binary and state directory
make install-web # Install web server binary to ~/.local/bin/
make web # Run web server locally on port 8390
make seed # Create fake agent state for testing
make clean # Remove build artifacts and state
make help # Show all available targets
Versioning
The project uses semantic versioning. The version is resolved from the latest git tag (stripping the v prefix), falling back to the VERSION file at the repo root. It is injected into the binary at build time via Go's -ldflags -X mechanism and displayed in the dashboard banner.
Project Structure
agent-dashboard/ — top-level layout
agent-dashboard/
├── Makefile
├── VERSION
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── SECURITY.md
├── release-please-config.json
├── install.sh # installer (accepts adapter name, default: claude-code)
├── agent-dashboard.tmux # optional tmux keybinding (prefix + D)
├── settings.example.toml # default settings (copied by install.sh)
├── go.mod / go.sum
├── cmd/
│ ├── dashboard/
│ │ └── main.go # TUI entry point
│ ├── web/
│ │ └── main.go # web server entry point (Google OAuth, SSE)
│ └── populate-quotes/
│ └── main.go # bulk quote fetcher for SQLite cache
├── internal/ # core packages (see below)
├── adapters/claude-code/ # Claude Code plugin (see below)
└── schema/
└── agent-state.schema.json # JSON Schema for agent state files
internal/ — Go packages (domain-oriented)
internal/
├── config/ # agent profile + TOML settings loader
├── conversation/ # JSONL parsing, subagent discovery
├── gh/ # GitHub CLI helpers (CODEOWNERS, merge args)
├── db/ # SQLite operations (usage + quotes)
├── domain/ # shared type definitions (Agent, Message, etc.)
├── lock/ # singleton instance lock
├── skills/ # plugin skill discovery
├── state/ # agent state structs + file I/O
├── tmux/ # tmux integration helpers
├── tui/ # Bubble Tea UI
│ ├── model.go # Bubble Tea model + update loop
│ ├── view.go # render logic (panels, layout)
│ ├── keys.go # keybindings + mouse handling
│ ├── commands.go # tea.Cmd functions (tmux, state)
│ ├── messages.go # tea message types + constants
│ ├── diff.go # git diff loading
│ ├── diff_view.go # diff rendering + syntax highlighting
│ ├── banner.go # axolotl pixel art + quote display
│ ├── helpers.go # text wrapping, markdown rendering
│ ├── wrapped_input.go # soft-wrap text input helper
│ ├── dino.go # experimental dino runner game
│ ├── pet.go # animated ASCII pet (red panda)
│ ├── runner.go # exec.Command interface for testability
│ ├── styles.go # Catppuccin Frappe theme
│ ├── catppuccin-frappe.json # chroma syntax theme
│ ├── version.go # build-time version variable
│ └── *_test.go # tests
├── usage/ # token counting + pricing
├── web/ # web server, handlers, OAuth, SSE, static assets
└── zsuggest/ # z-plugin frecency suggestions
adapters/claude-code/ — Claude Code plugin
adapters/claude-code/
├── CLAUDE.md # agent instructions for the adapter
├── package.json # plugin metadata
├── hooks/hooks.json # lifecycle hook definitions
├── scripts/hooks/ # hook implementations (JS)
│ ├── agent-state-fast.js # fast agent state reporter
│ ├── agent-state-reporter.js # full agent state reporter
│ ├── block-main-commit.js # prevents commits to main branch
│ ├── commit-lint.js # validates commit message format
│ ├── desktop-notify.js # desktop notifications
│ ├── pr-detect.js # detects existing PRs
│ ├── test-gate.js # blocks merges if tests fail
│ └── warn-destructive.js # warns about destructive git ops
├── packages/ # shared JS modules
│ ├── agent-state/ # state detection + schema validation
│ ├── git-status/ # git status utility
│ └── tmux/ # tmux integration utilities
├── skills/ # workflow skills
│ ├── feature/ # feature development
│ ├── fix/ # bug fix
│ ├── chore/ # non-code changes
│ ├── refactor/ # refactoring
│ ├── pr/ # PR workflow
│ ├── investigate/ # investigation
│ └── rca/ # root cause analysis
└── agents/ # pre-configured agent definitions
├── build-error-resolver.md
├── code-reviewer.md
├── planner.md
├── security-reviewer.md
└── tdd-guide.md
Key Dependencies
| Package | Purpose |
|---|---|
| bubbletea | TUI framework |
| bubbles | Viewport, text input, spinner |
| lipgloss | ANSI styling |
| glamour | Markdown rendering |
| chroma | Syntax highlighting |
| go-gitdiff | Git diff parsing |
| toml | Settings file parsing |
| sqlx | SQL query helper |
| modernc.org/sqlite | Pure Go SQLite |
| fsnotify | File system watcher |
| oauth2 | Google OAuth for mobile web companion |
Works Best With
This dashboard pairs well with the everything-claude-code plugin for a complete agent workflow experience.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi