Agent Dashboard for Claude Code & Codex
A real-time monitoring dashboard that tracks Claude Code and Codex sessions, agent activity, tool usage, and subagent orchestration via their native hook systems, making local AI coding workloads fully visible.
The README describes data flow (hooks→HTTP→SQLite→WebSocket), SSH remote pull, Web Push, and outbound webhooks, and claims Codex config previews are redacted and updates never auto-pull, but nearly all safety claims are prose only; the actual permission scope, key handling, and confirmation logic are not evidenced in the sampled files, so thin scores.
package. and CI provide runnable scripts and test entry points, giving some evidence of self-consistency; however README badges contain implausible versions (e.g., React Router 8.3, Vite 7.3), and the Node>=22.22 engines requirement is unexplained — assertions and checkable facts diverge.
The README covers audience (individual to team deployment) and deployment shapes (local, Docker, K8s/Helm, desktop) adequately (2), but capability boundaries and trigger precision are mostly feature prose with no explicit 'does not do' list or failure conditions.
The MIT license file is complete and earns full marks; doc structure, install scripts, naming (ccam, agent-dashboard), and the version-driven release convention are visible (2); but the FAQ section is only a heading in this sample, known limitations are scattered (Cursor session ambiguity, dropped universal DMG), and no independent maintenance-response evidence exists.
As a Claude Code/Codex monitor the positioning is clear with concrete differentiators (subagent hierarchy, task attribution, dynamic workflows), scoring 2; but cost/benefit is unquantified (resource overhead, DB scaling only implied), and the large volume of feature claims is unverified by execution.
Key claims (idempotent import, reparent counts, WAL mode) cannot be traced to implementations in the sampled files; only wiki tests and a Helm connection test partially corroborate; fact/inference separation is generally clean but traceability is weak.
- Publisher is not verified by a curated registry; base trust on repository evidence, not author identity.
- README badges include implausible versions (e.g., React Router 8.3, Vite 7.3); verify dependencies against package. and the lockfile before installing.
- The dashboard reads all transcripts under ~/.claude and ~/.codex and can pull data from remote machines over SSH — mind its filesystem and network access scope when deploying.
- Web Push, webhooks (14 third-party integrations), and in-app config file editing (with backups) are outbound/write operations; confirm each endpoint before enabling.
- This is a static review with no code executed; all feature and safety claims should be validated in a controlled environment.
What does this agent do, and when should you use it?
This repository (hoangsonww/Claude-Code-Agent-Monitor) is a self-hosted, real-time monitoring platform for observing Claude Code and OpenAI Codex agent activity. It ingests events through both tools' native hook systems, persists them in SQLite (better-sqlite3, WAL mode), and pushes updates over WebSockets (RFC 6455) to a dark-themed React 19 + Vite + TailwindCSS dashboard. The UI has nine pages: Dashboard (with a composite health score), a Kanban status board (agent and session views), Sessions, Activity Feed, Analytics, D3.js-powered Workflows, Agent Config, Run Agent, and Settings. Beyond the web UI it ships Electron desktop apps for macOS (DMG) and Windows (NSIS/portable), a VS Code extension, a CLI statusline, VAPID-based Web Push notifications, and a local MCP server in mcp/ exposing 97 typed tools over stdio, HTTP+SSE, or an interactive REPL. It is MIT-licensed, with built-in UI localization for English, Chinese, Vietnamese, Korean, and Spanish.
Flow: Claude Code / Codex sessions fire hooks on tool use and turn stop; a Node.js hook handler HTTP-POSTs events to the Express + SQLite dashboard server, which broadcasts them to the React client via WebSocket. The dashboard auto-discovers and persists sessions and agents, parses JSONL transcripts from ~/.claude/ and ~/.codex/sessions to extract tokens, costs, compactions, API errors, and turn durations, and on SubagentStop scans subagents/agent-*.l to attribute subagent tool calls by tool_use_id. It produces live Kanban statuses, per-model cost estimates with configurable pricing rules (including time-limited intro rates), D3.js orchestration DAGs and Sankey diagrams, rules-based alerts (event pattern / inactivity / stuck agent / token threshold), and fan-out to 14 webhook providers (Slack, Discord, Teams, Telegram, PagerDuty, etc.). The Run Agent page spawns claude subprocesses directly from the dashboard (streaming chat-style or one-shot) with claude --resume support, and SSH remote data sources mirror ~/.claude/projects and ~/.codex/sessions from other machines. The local MCP server exposes 97 typed tools for introspecting and managing the dashboard itself.
- An independent developer running multiple parallel Claude Code sessions who needs a board showing which agents are working and which are blocked on permission prompts
- A team lead who needs per-model token and cost accounting with configurable pricing rules and time-limited promo rates
- An engineer using Codex CLI who wants to browse rollout history and safely edit config.toml, hooks, and skills with timestamped backups
- A DevOps operator who wants rules-based alerts (e.g., more than 5 errors in 2 minutes) delivered to Slack or PagerDuty
- A remote worker consolidating agent activity across machines via SSH-synced transcripts
- An automation user who wants to query dashboard data programmatically from Claude Code workflows via the bundled MCP server
What are this agent's strengths and limitations?
- Direct integration via both tools' native hook systems, with WebSocket push instead of polling
- Unusual depth: subagent tool-call attribution by tool_use_id, compaction-aware token accounting, date-effective intro pricing, per-session/per-subagent cost breakdowns
- Complete delivery surface: web UI, macOS/Windows Electron apps, VS Code extension, CLI statusline, and a local MCP server with 97 tools over three transports
- Mature alerting and integrations: 14 webhook providers, optional HMAC signing, and a cooldown-deduplicated rules engine
- Tightly bound to Claude Code and Codex — hook ingestion and transcript parsing target vendor-specific paths (~/.claude, ~/.codex); adapting to other agent CLIs requires development work
- Heavy runtime stack: Node.js >= 22.22, Python >= 3.6, local SQLite, and hook configuration to install and maintain
- Sessions that Cursor (or other tools) write into the same ~/.claude paths are counted identically and not distinguished by source app
- Remote sync relies on SSH authentication on the host; multi-machine setups require manual path and connection configuration
How do you install or deploy this agent?
The repo provides npm scripts and npm run setup (the README notes setup performs a startup import including subagent historical backfill); Node.js >= 22.22 and Python >= 3.6 are required. Desktop distributions include macOS DMGs (arm64 + x64) and Windows NSIS installers/portable builds, plus Docker/Podman (OCI) images, Kubernetes/Helm/Kustomize manifests, and Terraform configs. The truncated README does not show the exact from-scratch command sequence (e.g., the initial git clone / npm install steps); consult the repository's Quick Start section for the full procedure.
How do you use this agent?
1) Run the setup script and install the native hooks for Claude Code / Codex when prompted (Settings shows hook installation status). 2) Open the web UI or launch the desktop app; the sidebar exposes Dashboard, Kanban Board, Sessions, Activity Feed, Analytics, Workflows, Agent Config, Run Agent, and Settings. 3) Use claude / codex normally — session and agent cards appear automatically on SessionStart and related events; Cmd/Ctrl+K opens the global command palette. 4) Configure alert rules and webhook channels under Settings → Alerts & Notifications, add SSH machines under Settings → Remote Data Sources, and tune model prices under Settings → Model Pricing. 5) Use CLI commands like ccam remote-sources or the mcp/ MCP server (stdio, HTTP+SSE, or REPL) for automation.
How does this agent compare with similar options?
The README names no direct competitors, but positionally it fills the gap left by Claude Code and Codex, which only emit local JSONL transcripts with no visualization layer. If you run a single session, the native CLI statusline may suffice; this repository suits those needing a board, historical analytics, cost accounting, and team alerting.