{"id":44130164,"url":"https://github.com/seunggabi/claude-dashboard","last_synced_at":"2026-02-15T10:01:26.696Z","repository":{"id":337297050,"uuid":"1153017485","full_name":"seunggabi/claude-dashboard","owner":"seunggabi","description":"k9s-style TUI for managing Claude Code sessions via tmux","archived":false,"fork":false,"pushed_at":"2026-02-12T08:29:31.000Z","size":104,"stargazers_count":15,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-14T15:18:45.223Z","etag":null,"topics":["bubbletea","claude","claude-code","claude-dashboard","cli","go","k9s","session-manager","terminal","tmux","tui"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seunggabi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["seunggabi"]}},"created_at":"2026-02-08T19:21:25.000Z","updated_at":"2026-02-13T23:10:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/seunggabi/claude-dashboard","commit_stats":null,"previous_names":["seunggabi/claude-dashboard"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/seunggabi/claude-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seunggabi%2Fclaude-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seunggabi%2Fclaude-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seunggabi%2Fclaude-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seunggabi%2Fclaude-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seunggabi","download_url":"https://codeload.github.com/seunggabi/claude-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seunggabi%2Fclaude-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29475317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T06:58:05.414Z","status":"ssl_error","status_checked_at":"2026-02-15T06:58:05.085Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bubbletea","claude","claude-code","claude-dashboard","cli","go","k9s","session-manager","terminal","tmux","tui"],"created_at":"2026-02-08T22:07:19.886Z","updated_at":"2026-02-15T10:01:26.691Z","avatar_url":"https://github.com/seunggabi.png","language":"Go","funding_links":["https://github.com/sponsors/seunggabi"],"categories":[],"sub_categories":[],"readme":"# claude-dashboard\n\n**k9s-style TUI for managing Claude Code sessions with real-time monitoring, conversation history, and process-based session detection.**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n[![GitHub Stars](https://img.shields.io/github/stars/seunggabi/claude-dashboard?style=social)](https://github.com/seunggabi/claude-dashboard/stargazers)\n[![Go](https://img.shields.io/badge/Go-1.25-00ADD8?logo=go)](https://go.dev)\n[![Latest Release](https://img.shields.io/github/v/release/seunggabi/claude-dashboard?color=blue)](https://github.com/seunggabi/claude-dashboard/releases)\n[![tmux](https://img.shields.io/badge/tmux-required-1BB91F)](https://github.com/tmux/tmux)\n\n---\n\n## Demo\n\n\u003c!-- Record with: vhs demo/demo.tape --\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"demo/demo.gif\" alt=\"claude-dashboard demo\" width=\"720\"\u003e\u003c/p\u003e\n\n## Quick Start\n\n### Homebrew\n\n```bash\nbrew install seunggabi/tap/claude-dashboard\n# Setup is automatic on first run, or run manually:\nclaude-dashboard setup\n```\n\n### Manual Installation\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/seunggabi/claude-dashboard/main/install.sh | bash\n# Setup is automatic on first run, or run manually:\nclaude-dashboard setup\n```\n\n**Setup includes:**\n- ✅ Installs helper scripts to `~/.local/bin/`\n- ✅ Configures `~/.tmux.conf` for F12 mouse toggle\n- ✅ Adds status bar with version info\n- ✅ Enables mouse mode by default\n\nThis deploys the binary to `~/.local/bin`. For a custom binary name:\n\n```bash\n~/.local/bin/claude-dashboard\n```\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/seunggabi/claude-dashboard/main/install.sh | bash -s -- --name \u003cyour-binary-name\u003e\n```\n\n### Install via Go\n\n```bash\ngo install github.com/seunggabi/claude-dashboard/cmd/claude-dashboard@latest\n```\n\n### Build from Source\n\n```bash\ngit clone https://github.com/seunggabi/claude-dashboard.git\ncd claude-dashboard\nmake install\n```\n\nFirst run:\n\n```bash\nclaude-dashboard   # Launch the TUI dashboard\n```\n\n\n### Alias (Optional)\n\n`cdn` as a shortcut for `claude-dashboard new`:\n\n```bash\nsource \u003c(curl -fsSL https://raw.githubusercontent.com/seunggabi/claude-dashboard/main/alias.sh)\n```\n\n## Why claude-dashboard\n\n### The Problem\n\nRunning multiple Claude Code sessions across different projects quickly becomes unmanageable:\n\n- **Lost sessions** - Terminal closed? Session gone. What was Claude doing?\n- **No overview** - Which session is active? How long has it been running? What are resource usage patterns?\n- **Context switching** - Constantly hunting through terminal tabs, tmux windows, and scattered `.jsonl` logs.\n- **Session discovery** - Sessions hidden in tmux, terminal tabs, or started by other tools.\n\n### The Solution\n\nclaude-dashboard gives you a **single pane of glass** for all your Claude Code sessions:\n\n- **Unified session detection** - Finds Claude sessions in tmux, terminal tabs, and anywhere in the process tree\n- **Conversation history** - View Claude's past interactions directly from the dashboard\n- **Real-time monitoring** - CPU, memory, status, and uptime at a glance\n- **Session persistence** - Sessions keep running in tmux; detach anytime and come back\n- **Single binary** - One `brew install` and you're done\n\n### Session Persistence\n\nEvery Claude Code session runs inside tmux. Close your terminal, shut your laptop - sessions keep running. Come back anytime and re-attach exactly where you left off.\n\n### Real-time Monitoring\n\n| Column | Description |\n|--------|-------------|\n| Name | Session identifier |\n| Project | Project directory name |\n| Status | `● active` / `○ idle` / `◎ waiting` / `⊘ terminal` |\n| Uptime | Time since session creation |\n| CPU | CPU usage (process tree) |\n| Memory | Memory usage (process tree) |\n| Path | Working directory |\n\n### k9s-style Keybindings\n\nIf you've used [k9s](https://k9scli.io/), you'll feel right at home. Vim-style navigation, single-key actions, instant feedback.\n\n## Keybindings\n\n### Dashboard\n\n| Key       | Action                                    |\n|-----------|-------------------------------------------|\n| `↑` / `k` | Move cursor up                            |\n| `↓` / `j` | Move cursor down                          |\n| `enter`   | Attach to session                         |\n| `n`       | Create new session                        |\n| `K`       | Kill session (with confirmation)          |\n| `ctrl+k`  | Kill all idle sessions (with confirmation)|\n| `l`       | View session logs                         |\n| `d`       | Session detail view                       |\n| `/`       | Filter / search sessions                  |\n| `r`       | Manual refresh                            |\n| `?`       | Help overlay                              |\n| `esc`     | Go back / cancel                          |\n| `q`       | Quit                                      |\n\n### Logs Viewer\n\n| Key             | Action            |\n|-----------------|-------------------|\n| `↑` / `k`       | Scroll up         |\n| `↓` / `j`       | Scroll down       |\n| `PgUp` / `PgDn` | Page up / down    |\n| `esc`           | Back to dashboard |\n| `q`             | Quit              |\n\n## Features\n\n### Session Dashboard\n\nView all Claude Code sessions in a table with real-time status, resource usage, and uptime. Auto-refreshes every 2 seconds. Includes sessions from:\n- Managed `cd-*` prefix sessions\n- Existing tmux sessions with \"claude\" in the name\n- Claude processes detected anywhere in the process tree via BFS scan\n- Claude running in terminal tabs (read-only, shown as `⊘ terminal`)\n\n### Conversation Log Viewer\n\nPress `l` to view Claude's conversation history from captured `.jsonl` files in `~/.claude/projects/`. Features:\n- Scrollable viewport for reading past interactions\n- Works for both tmux and terminal sessions\n- Automatically parses conversation structure\n- No attachment needed - read-only access to conversation state\n\n### Attach / Detach\n\nPress `enter` to attach to any session (tmux sessions only; terminal sessions are read-only). Use `Ctrl+B d` (tmux detach) to return to the dashboard. Sessions continue running in the background.\n\n### Tips\n\n**Copy/Paste in Attached Sessions**\n\nMouse mode is enabled by default for smooth scrolling. To copy text:\n\n- **macOS**: Hold `Option (⌥)` key while dragging to select text, then `Cmd+C` to copy\n- **Linux**: Hold `Shift` key while dragging to select text, then `Ctrl+Shift+C` to copy\n\n**Scrolling through history**:\n- Press `Ctrl+B [` to enter copy mode\n- Use arrow keys, `PgUp`/`PgDn`, or vi keys (`j`/`k`) to scroll\n- Press `q` or `Esc` to exit copy mode\n\n**Copy text while Claude is actively outputting**:\n- **Method 1 (Recommended)**: Press `Ctrl+B [` to freeze the screen in copy mode, then select and copy text\n- **Method 2**: Press `Ctrl+S` to pause output, copy text, then `Ctrl+Q` to resume\n\n**Toggle Mouse Mode**:\n- Press `F12` to toggle mouse mode on/off (super easy!)\n- Toggle displays message: `Mouse: ON` or `Mouse: OFF`\n- **ON** (default): Mouse wheel scrolling enabled, use `Option`/`Shift` + drag to copy text\n- **OFF**: Easy text selection by dragging (no modifier key needed), scroll with `Ctrl+B [`\n\n**Setup**:\nSetup is **automatic on first run**, or you can run it manually:\n```bash\nclaude-dashboard setup\n```\n\nThis will:\n- Install helper scripts (`claude-dashboard-mouse-toggle`, `claude-dashboard-status-bar`) to `~/.local/bin/`\n- Add F12 key binding to `~/.tmux.conf`\n- Configure status bar with version check and mouse status\n- Enable mouse mode by default\n- Reload tmux configuration if tmux is running\n\n### Create Session (TUI)\n\nPress `n` to create a new session interactively. Enter a name and project directory - claude-dashboard creates a tmux session running `claude` in that directory.\n\n### Create Session (CLI)\n\nUse the `new` command from your shell:\n\n```bash\n# Auto-generate name from current directory (~/project/foo → cd-project-foo)\nclaude-dashboard new\n\n# Explicit session name\nclaude-dashboard new my-project\n\n# Specify working directory\nclaude-dashboard new --path ~/my/project\n\n# Pass arguments to claude\nclaude-dashboard new --args \"--model opus\"\n```\n\nIf a session with the same name already exists, it automatically attaches to it instead of creating a new one.\n\nCombine options freely: `claude-dashboard new my-project --path ~/code/foo --args \"--model sonnet\"`\n\n### Kill Session\n\nPress `K` to terminate a session. Always shows a confirmation prompt before killing (safety first).\n\n### Filter / Search\n\nPress `/` to filter sessions by name, project, status, or path. Press `esc` to clear the filter.\n\n### Session Detail\n\nPress `d` for a detailed view showing PID, CPU, memory, path, start time, attached status, and session type.\n\n## Session Naming\n\n| Type | Pattern | Example | Detection Method |\n|------|---------|---------|------------------|\n| Managed sessions | `cd-\u003cname\u003e` prefix | `cd-my-project` | Dashboard creates these |\n| Named tmux sessions | Contains \"claude\" | `claude-api-work` | tmux session list |\n| Process-based detection | No naming requirement | Any Claude process | BFS process tree scan |\n| Terminal sessions | No naming requirement | Claude in terminal tab | Terminal process detection |\n\nSession creation:\n- **TUI**: Press `n` in the dashboard to create a new `cd-*` prefixed session\n- **CLI**: Use `claude-dashboard new [name]` to create from the command line\n- **Existing**: Any tmux session with \"claude\" in the name is detected automatically\n- **Process-based**: Claude running anywhere in the process tree is found via BFS scan\n- **Terminal**: Claude running in a regular terminal tab is detected (read-only, shown as `⊘ terminal`)\n\n## Status Detection\n\nStatus varies by session type:\n\n### tmux Sessions\n\nStatus determined by analyzing tmux pane content:\n\n| Status | Indicator | Detection |\n|--------|-----------|-----------|\n| `● active` | Green | Output is streaming |\n| `○ idle` | Gray | Prompt visible, no activity |\n| `◎ waiting` | Amber | Input prompt or Y/n question |\n| `? unknown` | - | Unable to determine |\n\n### Terminal Sessions\n\nTerminal sessions (outside tmux) are shown with status:\n\n| Status | Indicator | Detection |\n|--------|-----------|-----------|\n| `⊘ terminal` | Blue | Claude process detected in terminal |\n\nTerminal sessions are read-only: you can view conversation history via `l` but cannot attach. Use tmux sessions for interactive work.\n\n## Configuration\n\n`~/.claude-dashboard/config.yaml`:\n\n```yaml\nrefresh_interval: 2s       # Auto-refresh interval\nsession_prefix: \"cd-\"      # Prefix for managed sessions\ndefault_dir: \"\"            # Default project directory for new sessions\nlog_history: 1000          # Number of log lines to capture\n```\n\n## Requirements\n\n- **tmux** (session backend)\n- **Go 1.25+** (only for building from source)\n\n### Install tmux\n\n```bash\n# macOS\nbrew install tmux\n\n# Ubuntu/Debian\nsudo apt install tmux\n```\n\n## Usage\n\n### TUI Dashboard\n\n```bash\n# Launch the interactive TUI dashboard\nclaude-dashboard\n```\n\n### Create Sessions from CLI\n\n```bash\n# Create with auto-generated name from current path (~/project/foo → cd-project-foo)\nclaude-dashboard new\n\n# Create with explicit name\nclaude-dashboard new my-project\n\n# Create in a specific directory\nclaude-dashboard new my-project --path ~/code/foo\n\n# Pass arguments to claude (e.g., --model opus)\nclaude-dashboard new my-project --args \"--model opus\"\n\n# Combine options\nclaude-dashboard new my-project --path ~/code/foo --args \"--model sonnet\"\n```\n\n### Attach to Sessions\n\n```bash\n# Attach to a session directly (skip TUI)\nclaude-dashboard attach cd-my-project\n```\n\n### General\n\n```bash\n# Run setup (installs helper scripts and configures tmux)\nclaude-dashboard setup\n\n# Show version\nclaude-dashboard --version\n\n# Show help\nclaude-dashboard --help\n```\n\n## Project Structure\n\n```\nclaude-dashboard/\n├── cmd/claude-dashboard/main.go      # CLI entry point\n├── internal/\n│   ├── app/                          # Bubble Tea application\n│   │   ├── app.go                    # Main model, Update, View\n│   │   └── keys.go                   # Keybinding definitions\n│   ├── session/                      # Session management\n│   │   ├── session.go                # Session data model\n│   │   ├── detector.go               # Discover sessions from tmux/terminal/processes\n│   │   └── manager.go                # CRUD operations\n│   ├── tmux/                         # tmux integration\n│   │   ├── client.go                 # Command wrapper\n│   │   └── parser.go                 # Output parser\n│   ├── conversation/                 # Conversation history\n│   │   └── reader.go                 # Parse .jsonl files from ~/.claude/projects/\n│   ├── ui/                           # View components\n│   │   ├── dashboard.go              # Session table\n│   │   ├── logs.go                   # Log viewer (viewport)\n│   │   ├── detail.go                 # Detail view\n│   │   ├── create.go                 # New session form\n│   │   ├── help.go                   # Help overlay\n│   │   └── statusbar.go             # Status bar\n│   ├── monitor/                      # Resource monitoring\n│   │   ├── process.go                # CPU/memory via ps, process tree BFS\n│   │   └── ticker.go                 # Periodic refresh\n│   ├── config/config.go              # YAML configuration\n│   └── styles/styles.go              # Lipgloss styles\n├── LICENSE                           # MIT\n├── Makefile                          # build, install, clean\n└── .goreleaser.yml                   # Release automation\n```\n\n## Tech Stack\n\n- [Bubble Tea](https://github.com/charmbracelet/bubbletea) - Elm architecture TUI framework\n- [Bubbles](https://github.com/charmbracelet/bubbles) - TUI components (table, viewport, textinput)\n- [Lipgloss](https://github.com/charmbracelet/lipgloss) - Style definitions\n- [tmux](https://github.com/tmux/tmux) - Terminal multiplexer for session persistence\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request.\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=seunggabi/claude-dashboard\u0026type=Date)](https://star-history.com/#seunggabi/claude-dashboard\u0026Date)\n\n## License\n\n[MIT](LICENSE)\n\n\u003c!-- GitHub Topics: claude, claude-code, tui, tmux, session-manager, terminal, go, bubbletea, k9s, cli --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseunggabi%2Fclaude-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseunggabi%2Fclaude-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseunggabi%2Fclaude-dashboard/lists"}