ccboard
A free, open-source TUI/Web dashboard for Claude Code session monitoring, cost tracking & config management
The only actively-maintained, free and open-source Rust TUI combining Claude Code monitoring, Claude Code config management, hooks, agents, and MCP servers in a single 5.8MB binary. 89x faster startup with SQLite cache, 281 tests, 0 clippy warnings.
Features
9 Interactive Tabs (TUI + Web)
| Tab | Key | Description | Highlights |
|---|---|---|---|
| Dashboard | 1 |
Overview stats, model usage, 7-day activity | API usage estimation, plan-based budgets, MCP server count |
| Sessions | 2 |
Browse all sessions with 3-pane layout | Live Claude processes (CPU/RAM/Tokens), search, detail view |
| Config | 3 |
Cascading configuration editor | 4-column diff (default/global/project/local), edit with e |
| Hooks | 4 |
Event-based hook management | Bash syntax highlighting, test mode, badge indicators |
| Agents | 5 |
Agents, commands, and skills browser | Frontmatter YAML parsing, invocation stats |
| Costs | 6 |
Token analytics (4 sub-views) | Overview, By Model, Daily chart, Billing Blocks (5h windows) |
| History | 7 |
Full-text search across sessions | Temporal patterns, CSV/JSON export |
| MCP | 8 |
MCP server management | Status detection (running/stopped), env vars masking |
| Analytics | 9 |
Advanced analytics (4 sub-views) | Budget tracking, 30-day forecast, heatmap, insights |
Platform Capabilities
| Capability | Details |
|---|---|
| Performance | 89x faster startup (20s β 224ms) via SQLite cache, >99% hit rate, handles 10K+ sessions |
| Live Updates | File watcher (500ms debounce), auto-refresh, Server-Sent Events (Web) |
| UX | Command palette (:), vim keybindings (hjkl), breadcrumbs, scrollbar indicators |
| File Operations | Edit with $EDITOR (e), reveal in file manager (o), cross-platform |
| Zero Config | Works out of the box with ~/.claude, single 5.8MB binary, macOS/Linux/Windows |
Missing a feature? Request it here | Found a bug? Report it
Installation
Recommended: Homebrew (macOS/Linux)
Why Homebrew? Simple one-command install, automatic updates via brew upgrade, no manual Rust setup required.
Alternative: cargo install (requires Rust 1.85+)
Why cargo? ccboard's target audience (Claude Code users) often has Rust installed. Ensures compatibility and always installs latest crates.io version.
Alternative: Install Script (macOS/Linux/Windows)
One-liner install (no Rust required):
|
This script:
- Auto-detects your OS and architecture
- Downloads the latest pre-compiled binary
- Installs to
~/.local/bin(customizable withINSTALL_DIR) - Checks if binary is in PATH
Windows users: Use Git Bash, WSL, or download manually from releases.
Alternative: Pre-built binaries (manual)
Download from GitHub Releases:
| Platform | Status | Download |
|---|---|---|
| macOS (x86_64/ARM64) | β Fully tested | ccboard-macos-*.tar.gz |
| Linux (x86_64/ARM64) | β οΈ Community-tested | ccboard-linux-*.tar.gz |
| Windows (x86_64) | π§ͺ Experimental | ccboard-windows-*.exe.zip |
Manual installation (macOS/Linux):
# Extract
# Move to PATH
Manual installation (Windows):
- Download
ccboard-windows-x86_64.exe.zip - Extract
ccboard-windows-x86_64.exe - Rename to
ccboard.exe - Move to a directory in your PATH (e.g.,
C:\Users\YourName\.local\bin\)
Platform support:
- β macOS: Manually tested on every release
- β οΈ Linux: CI-tested, community validation welcome
- π§ͺ Windows: Best-effort support (feedback appreciated)
Quick Start
# TUI dashboard (default)
# Web interface
# Both simultaneously
# Stats only (scriptable)
Navigate tabs with 1-9, search with /, refresh with r, quit with q. Press ? for all keybindings.
Screenshots
TUI (Terminal)
Dashboard - Key Metrics & Model Usage

Sessions - Project Tree & Search

Sessions - Detail View

Sessions - Live Process Monitoring

Configuration - 4-Column Merge View

Hooks Management

Agents, Commands & Skills

Cost Analytics

History Search

MCP Servers

Analytics

Web Interface
Dashboard

Sessions - Browse & Live Monitoring

Configuration

Hooks

Agents, Commands & Skills

Cost Analytics

History

MCP Servers

Analytics

Why ccboard Exists
Problem: Claude Code has no built-in visualization/analysis tools beyond basic CLI commands (/history, /stats). Users are left scripting with jq, grep, or manually opening JSON files.
Solution: ccboard is the only tool dedicated to Claude Code monitoring and management:
- Zero direct competitors for Claude Code dashboard (verified 2026-02-04)
- Not competing with LangSmith/W&B (they trace LangChain API calls, not local Claude sessions)
- Fills the gap between CLI commands and full observability
Unique Position
- All-local: Reads
~/.claudefiles, no SaaS/API required - Unified Dashboard: 9 tabs (config, hooks, agents, MCP, analytics) vs basic CLI
- Performance: SQLite cache (89x speedup), handles 10K+ sessions
- Dual Interface: TUI + Web in single 5.8MB binary
Risk: Anthropic could integrate dashboard into Claude Code CLI. But currently, nothing exists.
Competitive Landscape
ccboard vs ccusage vs agtrace vs claudelytics β Claude Code monitoring tools compared (verified 2026-02-06):
| Feature | ccboard | agtrace | claudelytics | ccusage |
|---|---|---|---|---|
| Status | β Active | β Active | π΄ Stale 6m | β Active |
| Stars | 0 | 23 | 62 | 10,361 |
| Language | Rust | Rust | Rust | TypeScript |
| Type | TUI+Web | TUI | TUI | CLI |
| TUI Dashboard | β 9 tabs | β Single view | β 8 tabs | β |
| Config Viewer (3-level merge) | β | β | β | β |
| Hooks Viewer + Test | β | β | β | β |
| Agents/Commands/Skills Browser | β | β | β | β |
| MCP Server Status Detection | β | β | β | β |
| SQLite Cache (89x speedup) | β | β Pointer-based | β | β |
| Export CSV/JSON | β | β | β | β JSON |
| Live File Watcher | β | β Poll 1s | β | β |
| Advanced Analytics (Forecast, Budget) | β 4 views | β | β οΈ Burn rate | β |
| Single Binary (no runtime) | β 5.8MB | β Rust | β Rust | β npm |
| MCP Server Mode | β³ Soon | β 6 tools | β | β |
| Billing Blocks (5h) | β³ Soon | β | β | β |
| Conversation Viewer | β³ Soon | β | β | β |
| Multi-provider | β | β 3 providers | β | β |
Unique to ccboard:
- Only multi-concern dashboard (config + hooks + agents + MCP + analytics)
- Config 3-level merge viewer (global/project/local)
- Hooks syntax highlighting + test mode
- Agents/Commands/Skills browser with invocation stats
- MCP server status detection (vs agtrace = MCP server mode)
- SQLite metadata cache (89x faster startup)
- Advanced Analytics: 30-day forecasting, budget alerts, session duration stats, usage patterns
- Dual TUI + Web single binary
References:
- agtrace (23β): Observability-focused, MCP self-reflection (6 tools), multi-provider
- claudelytics (62β, STALE 6m): Feature-rich TUI (8 tabs, billing blocks, conversation viewer)
- ccusage (10Kβ): CLI cost tracker (reference for pricing, no dashboard)
Complementary tools:
- xlaude (171 β): Git worktree manager for Claude sessions
- Complementarity: xlaude focuses on workspace isolation (PTY sessions, branch management), ccboard on analytics/monitoring
- Performance comparison: ccboard lazy loading 15x faster (4.8s vs 72s for 3000 sessions)
- Use cases: Use xlaude for session isolation, ccboard for historical analysis and cost tracking
- Learnings applied: Environment variables (QW1), message filtering (QW2), performance validation (QW3)
Configuration
API Usage Estimation
ccboard displays estimated API costs in the Dashboard with plan-based budget tracking. Configure your subscription plan to see accurate percentages and budget limits.
Add to ~/.claude/settings.json (global) or .claude/settings.json (per-project):
Available plans:
| Plan | Subscription Cost | Config Value |
|---|---|---|
| Claude Pro | $20/month | "pro" |
| Claude Max 5x | $50/month | "max5x" |
| Claude Max 20x | $200/month | "max20x" |
| API (Pay-as-you-go) | No fixed cost | "api" |
Important: Max plans have rate limits (requests/day), not fixed spending limits. The costs shown are subscription prices used as reference points for budget estimation.
Dashboard display:
ββ π° API Usage (Est.) - Claude Max 20x ββ
β Today: $ 2.45 / $200.00 ( 1.2%)β
β This week: $ 8.12 / $200.00 ( 4.1%)β
β This month: $78.40 / $200.00 ( 39.2%)β
ββββββββββββββββββββββββββββββββββββββββββββ
Color coding:
- π’ Green: < 60% of monthly budget
- π‘ Yellow: 60-80% of monthly budget
- π΄ Red: > 80% of monthly budget
Note: This is a local estimation calculated from your billing blocks, not real-time API data. For actual limits, use :usage in Claude Code or the Anthropic dashboard.
Budget Alerts & Tracking
Configure custom monthly budgets with automatic alerts in the Analytics tab (Tab 9 β Overview). Get visual warnings when approaching your spending limit.
Add to ~/.claude/settings.json (global) or .claude/settings.json (per-project):
Configuration:
| Field | Type | Description | Default |
|---|---|---|---|
monthlyBudgetUsd |
number | Your monthly spending limit in USD | Required |
alertThresholdPct |
number | Alert threshold percentage (0-100) | 80.0 |
Analytics Overview display:
ββ Budget Status ββββββββββββββββββββββββββββββ
β Monthly Est: $42.50 β
β Budget: $50.00 ββββββββββββββββ 85% β
β Remaining: $7.50 (15%) β
β β
β β οΈ WARNING: Approaching budget limit (85%) β
β π‘ TIP: Projected overage: $5.20 if trendβ¦ β
ββββββββββββββββββββββββββββββββββββββββββββββββ
Visual indicators:
- π’ Green bar: < 60% of budget (safe zone)
- π‘ Yellow bar: 60-80% of budget (caution)
- π΄ Red bar + β οΈ: β₯ 80% of budget (warning)
Alert types:
- Budget Warning: Current cost approaching threshold
- Projected Overage: Forecast predicts budget exceeded if trend continues
- Usage Spike: Daily tokens > 2x average (anomaly detection)
4-level priority (higher overrides lower):
~/.claude/settings.json(global)~/.claude/settings.local.json(global, not committed to git).claude/settings.json(project, committed).claude/settings.local.json(project, developer-specific)
Example workflows:
- Solo developer: Set global budget in
~/.claude/settings.json - Team project: Set team budget in
.claude/settings.json(committed), override personally in.claude/settings.local.json - Multiple projects: Different budgets per project in each
.claude/settings.json
Usage
TUI Mode (Default)
Web Mode
ccboard has 2 web workflows depending on your use case:
Option 1: Production (Single Command) β Recommended
For: Running the full stack (API + Frontend) in production or for general use.
# Step 1: Compile frontend once (run in ccboard repo root)
# Step 2: Start server (serves API + static frontend)
Output:
β Loading sessions and statistics...
β Ready in 2.34s (1,247 sessions loaded)
π Backend API + Frontend: http://127.0.0.1:3333
API endpoints: http://127.0.0.1:3333/api/*
Features:
- β Single process, single port
- β
Serves backend API (
/api/*) + frontend static files - β Real-time data updates via Server-Sent Events (SSE)
- β No hot reload (need
trunk build+ F5 after code changes)
When to use: Daily use, demos, production, or when you just want the web interface running.
Option 2: Development (Hot Reload) π§
For: Developing the frontend with automatic recompilation and browser refresh.
# Terminal 1: Start backend API
# Terminal 2: Start frontend dev server (run in ccboard repo root)
Output Terminal 1:
π Backend API only: http://127.0.0.1:8080/api/*
π‘ Run 'trunk build' to compile frontend
Output Terminal 2:
π¦ Starting build...
β
Success! App is being served at: http://127.0.0.1:3333
Features:
- β Real-time data updates via SSE
- β Hot reload: Frontend code changes auto-recompile and refresh browser
- β Separate logs for backend and frontend
- β Two terminals required
When to use: When developing the Leptos frontend (editing crates/ccboard-web/src/**/*.rs).
Note: trunk serve automatically proxies /api/* requests to http://localhost:8080 via Trunk.toml config.
Dual Mode (TUI + Web)
Run both TUI and web server simultaneously:
- Web server runs in background
- TUI runs in foreground
- Shared DataStore (same data, live updates)
- Press
qin TUI to exit both
Web Pages
Available Pages (100% TUI parity) β :
/- Dashboard with KPIs and forecast/sessions- Sessions browser with live CPU/RAM monitoring π₯/analytics- Analytics with budget tracking/config- 4-column configuration viewer/hooks- Hooks with syntax highlighting/mcp- MCP servers with status/agents- Agents/Commands/Skills browser/costs- 4 tabs (Overview, By Model, Daily, Billing Blocks)/history- History search and filters
Stats Only
# Print stats summary and exit
Output example:
ccboard - Claude Code Statistics
================================
Total Tokens: 12.5M
Input: 8.2M
Output: 3.1M
Cache Read: 890K
Cache Write: 310K
Sessions: 2,340
Messages: 18,450
Cache Hit Ratio: 28.7%
Models:
claude-sonnet-4.5: 9.8M tokens (in: 6.5M, out: 2.3M)
claude-opus-4: 1.2M tokens (in: 800K, out: 400K)
Keybindings & Shortcuts
Keybindings
Global Navigation
| Key | Action |
|---|---|
q |
Quit application |
Tab / Shift+Tab |
Navigate tabs forward/backward |
1-9 |
Jump to specific tab |
: |
Open command palette |
r |
Refresh data |
Esc |
Close popup / Go back |
List Navigation
| Key | Action |
|---|---|
j / β |
Move down |
k / β |
Move up |
h / β |
Move left / Collapse |
l / β |
Move right / Expand |
PgUp / PgDn |
Page up/down (10 items) |
Enter |
Show detail / Select |
File Operations
| Key | Action |
|---|---|
e |
Edit file in $EDITOR |
o |
Reveal file in file manager |
Tab-Specific
Sessions
/- Search sessionsEnter- Show session detail
Config
m- Show MCP detail modale- Edit config file (based on column focus)
History
/- Full-text search across sessions
Costs
Tab/β/β- Switch cost views (Overview/By Model/Daily)
Environment Variables
ccboard supports environment variables for automation and CI/CD workflows:
| Variable | Description | Example |
|---|---|---|
CCBOARD_CLAUDE_HOME |
Override Claude home directory | CCBOARD_CLAUDE_HOME=/custom/path ccboard stats |
CCBOARD_NON_INTERACTIVE |
Disable interactive prompts (CI/CD mode) | CCBOARD_NON_INTERACTIVE=1 ccboard stats |
CCBOARD_FORMAT |
Force output format: json or table |
CCBOARD_FORMAT=json ccboard recent 10 |
CCBOARD_NO_COLOR |
Disable ANSI colors (log-friendly) | CCBOARD_NO_COLOR=1 ccboard search "bug" |
Use cases:
# CI/CD: JSON output without colors
CCBOARD_NON_INTERACTIVE=1 CCBOARD_NO_COLOR=1 CCBOARD_FORMAT=json
# Testing: Isolated configuration
CCBOARD_CLAUDE_HOME=/tmp/test-claude
# Automation: Pipe JSON to other tools
CCBOARD_FORMAT=json |
# Log-friendly: No colors for file redirects
CCBOARD_NO_COLOR=1
Command Palette
Press : to open the command palette with fuzzy matching:
:dashboard β Jump to Dashboard tab
:sessions β Jump to Sessions tab
:config β Jump to Config tab
:mcp β Jump to MCP tab
:quit β Exit application
File Editing
ccboard integrates with your configured editor:
- Navigate to any file (agent, session, hook, config)
- Press
eto edit - Editor opens in terminal (terminal state preserved)
- Changes detected automatically via file watcher
Editor priority: $VISUAL > $EDITOR > fallback (nano/notepad.exe)
Troubleshooting
"Stats not loading" or "No sessions found"
Run Claude Code at least once to generate ~/.claude directory:
Then relaunch ccboard.
"WASM compilation failed" (Web mode)
Ensure trunk is installed:
Then rebuild:
"Connection refused" (Web mode)
Check if backend port is in use:
|
Change port if needed:
Linux: "File manager not opening"
Install xdg-utils:
Windows: Terminal rendering issues
Use Windows Terminal (not cmd.exe) for proper Unicode support:
- Download: Windows Terminal
- Braille spinners
β β β Ήrender correctly in Windows Terminal
Development
Stack
ccboard/ # Binary CLI entry point
βββ ccboard-core/ # Data layer (parsers, models, store, watcher)
βββ ccboard-tui/ # Ratatui frontend (9 tabs)
βββ ccboard-web/ # Axum API backend + Leptos WASM frontend
Dependency flow: ccboard β ccboard-tui + ccboard-web β ccboard-core
Core principles: Single binary with dual frontends sharing a thread-safe DataStore. Graceful degradation (partial data if files corrupted/missing). SQLite metadata cache (89x speedup) with lazy content loading. Arc for sessions (50x memory reduction), parking_lot::RwLock for stats/settings.
For detailed architecture documentation, see ARCHITECTURE.md.
Prerequisites
- Rust 1.85+ (
rustup install stable) - Claude Code with
~/.claudedirectory
Build & Run
# Clone repository
# Build all crates
# Run TUI (default)
# Run web interface
# Run with debug logging
RUST_LOG=ccboard=debug
Testing
# Run all tests (281 tests)
# Run tests for specific crate
# Run with logging
RUST_LOG=debug
Quality Checks
# Format code (REQUIRED before commit)
# Clippy (MUST pass with zero warnings)
# Pre-commit checklist
&& &&
Watch Mode
# Auto-rebuild TUI on changes
# Auto-rebuild web
Error Handling Standards
ccboard follows strict Rust error handling practices:
- anyhow::Result in binaries (
ccboard,ccboard-tui,ccboard-web) - thiserror for custom errors in
ccboard-core - Always use
.context("description")with?operator - No unwrap() in production code (tests only)
- Graceful degradation: Return
Option<T>+ populateLoadReport
Contributing
Contributions welcome! See CONTRIBUTING.md for guidelines.
Development workflow:
- Fork the repository
- Create a feature branch (
git checkout -b feat/amazing-feature) - Make changes with tests
- Run quality checks (
cargo fmt && cargo clippy && cargo test) - Commit with descriptive message
- Push and open a Pull Request
Roadmap & Documentation
Current Status: π PRODUCTION-READY (v0.5.0)
Completed β
- β Infrastructure: Stats parser, Settings merge, Session metadata, DataStore, SQLite cache (89x speedup)
- β TUI Dashboard: 9 interactive tabs (Dashboard, Sessions, Config, Hooks, Agents, Costs, History, MCP, Analytics)
- β Web Frontend: Full Leptos/WASM UI with 100% TUI parity (9 pages)
- β Live Monitoring: CPU/RAM/Tokens tracking for active Claude processes
- β Cost Analytics: 4 views (Overview, By Model, Daily, Billing Blocks) + budget alerts
- β Advanced Analytics: 30-day forecasting, usage patterns, actionable insights
Total: 281 tests passing, 0 clippy warnings
Coming Soon π§
Conversation Viewer
- Full JSONL content display with syntax highlighting
- Message navigation, search within conversations
- Export selected messages
Plan-Aware Dashboard
- PLAN.md parsing and visualization
- Task completion tracking
- Progress indicators
MCP Server Mode
- Expose ccboard data as MCP tools for Claude Code
For detailed roadmap, see ROADMAP.md and PLAN.md.
Documentation
| Document | Description |
|---|---|
| ARCHITECTURE.md | Technical architecture, data flow, concurrency model |
| CHANGELOG.md | Version history with detailed change descriptions |
| SECURITY.md | Security policy, vulnerability reporting, best practices |
| CROSS_PLATFORM.md | Platform-specific considerations and validation |
| CONTRIBUTING.md | Development guidelines and contribution workflow |
| API Documentation | REST API and SSE endpoints for Web UI |
| Architecture Decision Records | Key architectural decisions and their rationale |
| PLAN.md | Development phases and post-mortems |
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Acknowledgments
This project was developed following Test-Driven Development (TDD) principles with guidance from Agent Academy.
Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com
Author
Florian Bruniaux - Independent Developer π florian.bruniaux.com | πΌ LinkedIn | π GitHub
Links
Project
- Repository: https://github.com/FlorianBruniaux/ccboard
- Issues: https://github.com/FlorianBruniaux/ccboard/issues
- Releases: https://github.com/FlorianBruniaux/ccboard/releases
- Crates.io: https://crates.io/crates/ccboard
- Documentation: PLAN.md | CHANGELOG.md
Related Projects
- RTK (Rust Token Killer) - CLI proxy for 60-90% token reduction on dev operations
- Claude Code Ultimate Guide - Comprehensive guide to Claude Code CLI
- ccbridge - Claude Code bridge for team collaboration
- Cowork Guide - Technical coworking patterns and practices
Made with β€οΈ for the Claude Code community