agent-deck

module
v0.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 22, 2025 License: MIT

README ΒΆ

Agent Deck Logo

Agent Deck

Terminal session manager for AI agents

Go Version License Platform

Features β€’ Installation β€’ Usage β€’ Documentation β€’ Contributing


Agent Deck Demo

Why Agent Deck?

Running multiple AI coding agents across projects gets messy fast. Agent Deck gives you a unified dashboard to manage all your sessionsβ€”Claude Code, Gemini CLI, Aider, Codex, or any terminal tool.

  • πŸ”Œ Universal β€” Works with any terminal program, not locked to one AI
  • ⚑ Fast β€” Instant session creation, no forced program startup
  • πŸ“ Organized β€” Project-based hierarchy with collapsible groups
  • πŸ” Searchable β€” Find any session instantly with fuzzy search
  • 🎯 Smart Status β€” Knows when your agent is busy vs. waiting for input
  • πŸͺ¨ Rock Solid β€” Built on tmux, battle-tested for 20+ years

Features

πŸš€ Claude Code Deep Integration

Agent Deck offers first-class Claude Code integration with powerful session forking:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Parent Session                    β”‚   Forked Sessions      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ "Build auth"    │──── Fork ────►│   β”‚ "Try JWT"       β”‚  β”‚
β”‚  β”‚ claude session  β”‚               β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”‚                 │──── Fork ────►│   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                 β”‚               β”‚   β”‚ "Try OAuth"     β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Fork a conversation to explore multiple approaches in parallel:

  • Press f to quick-fork any Claude session
  • Press F to fork with custom name/group
  • Each fork inherits full conversation context from parent
  • Forks get their own session IDβ€”can be forked again!

Use cases:

  • πŸ”€ Branching explorations β€” Try different implementation approaches from the same context
  • πŸ§ͺ Experiment safely β€” Fork before risky changes, keep original intact
  • πŸ‘₯ Parallel work β€” Multiple Claude instances working from same knowledge base
  • πŸ“š Learning β€” Fork to ask "what if" questions without derailing main session

Automatic session detection:

  • Detects Claude session ID from .jsonl files
  • Tracks sessions across restarts
  • Handles multiple Claude sessions in same project
  • Works with custom Claude profiles (CLAUDE_CONFIG_DIR)
Intelligent Status Detection

Agent Deck automatically detects what your AI agent is doing:

Status Symbol Meaning
Running ● green Agent is actively working
Waiting ◐ yellow Prompt detected, needs your input
Idle β—‹ gray Session ready, nothing happening
Error βœ• red Session has an error

Works out-of-the-box with Claude Code, Gemini CLI, Aider, and Codexβ€”detecting busy indicators, permission prompts, and input requests.

Supported Tools
Icon Tool Status Detection
πŸ€– Claude Code Busy indicators, permission dialogs, prompts
✨ Gemini CLI Activity detection, prompts
πŸ”§ Aider Y/N prompts, input detection
πŸ’» Codex Prompts, continuation requests
🐚 Any Shell Standard shell prompts

Installation

Works on: macOS β€’ Linux β€’ Windows (WSL)

curl -fsSL https://raw.githubusercontent.com/asheshgoplani/agent-deck/main/install.sh | bash

That's it! The installer automatically handles tmux if needed.

Then run: agent-deck

Windows: Install WSL first, then run the command above.

Other install methods

Homebrew

brew install asheshgoplani/tap/agent-deck

Go

go install github.com/asheshgoplani/agent-deck/cmd/agent-deck@latest

From Source

git clone https://github.com/asheshgoplani/agent-deck.git && cd agent-deck && make install

Usage

Launch the TUI
agent-deck
CLI Commands
# Add a session
agent-deck add .                              # Current directory
agent-deck add ~/projects/myapp               # Specific path
agent-deck add . -t "My App" -g work          # With title and group
agent-deck add . -c claude                    # With command (claude, gemini, aider, codex)

# List sessions
agent-deck list                               # Table format
agent-deck list --json                        # JSON for scripting

# Remove a session
agent-deck remove <id|title>                  # By ID or title
Keyboard Shortcuts
Navigation
Key Action
j / ↓ Move down
k / ↑ Move up
h / ← Collapse group
l / β†’ / Tab Expand group
Enter Attach to session
Session Management
Key Action
n New session
g New group
R Rename session/group
m Move session to group
d Delete
K / J Reorder up/down
Claude Code Integration
Key Action
f Quick fork Claude session (inherits conversation context)
F Fork with custom name/group

Fork requires an active Claude Code session with a valid session ID.

Search & Import
Key Action
/ Search sessions
i Import existing tmux sessions
r Refresh
While Attached
Key Action
Ctrl+Q Detach (session keeps running)

Documentation

Project Organization

Sessions are organized in a hierarchical folder structure:

β–Ό Projects (5)
  β”œβ”€ frontend          ●
  β”œβ”€ backend           ◐
  └─ β–Ό devops (2)
       β”œβ”€ deploy       β—‹
       └─ monitor      β—‹
β–Ό Personal (2)
  └─ blog              β—‹
  • Groups can be nested to any depth
  • Sessions inherit their parent group
  • Empty groups persist until deleted
  • Order is preserved and customizable
Session Preview

The preview pane shows:

  • Live terminal output (last lines)
  • Session metadata (path, tool, group)
  • Current status
Import Existing Sessions

Press i to discover tmux sessions not created by Agent Deck. It will:

  1. Find all tmux sessions
  2. Auto-detect the tool from session name
  3. Auto-group by project directory
  4. Add to Agent Deck for unified management
Configuration

Data is stored in ~/.agent-deck/:

~/.agent-deck/
β”œβ”€β”€ sessions.json     # Sessions, groups, state
β”œβ”€β”€ config.toml       # User configuration (optional)
└── hooks/            # Hook scripts (optional)

For optimal experience with mouse copy, scroll, and clipboard integration, use this config in ~/.tmux.conf:

macOS
# ============================================
# Minimal tmux Configuration for macOS
# Mouse copy, scroll, and clipboard - just works
# ============================================

# ----- Terminal -----
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",*256col*:Tc"

# ----- Performance -----
set -sg escape-time 0
set -g history-limit 50000

# ----- Mouse (enables scroll + drag-to-copy) -----
set -g mouse on

# ----- Clipboard -----
set -s set-clipboard external

# Mouse drag automatically copies to system clipboard
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"

# Double-click selects word, triple-click selects line (auto-copies)
bind-key -T copy-mode-vi DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel "pbcopy"
Linux (X11 with xclip)
# ============================================
# Minimal tmux Configuration for Linux
# Mouse copy, scroll, and clipboard - just works
# ============================================

# ----- Terminal -----
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",*256col*:Tc"

# ----- Performance -----
set -sg escape-time 0
set -g history-limit 50000

# ----- Mouse (enables scroll + drag-to-copy) -----
set -g mouse on

# ----- Clipboard -----
set -s set-clipboard external

# Mouse drag automatically copies to system clipboard
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

# Double-click selects word, triple-click selects line (auto-copies)
bind-key -T copy-mode-vi DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
bind-key -T copy-mode DoubleClick1Pane select-pane \; send-keys -X select-word \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
bind-key -T copy-mode-vi TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
bind-key -T copy-mode TripleClick1Pane select-pane \; send-keys -X select-line \; run-shell -d 0.3 \; send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

For Wayland, replace xclip -in -selection clipboard with wl-copy.

After adding, reload:

tmux source-file ~/.tmux.conf

What this config does:

Feature How it works
Drag to copy Click and drag β†’ auto-copies to clipboard
Double-click Selects word β†’ auto-copies
Triple-click Selects line β†’ auto-copies
Mouse scroll Just scroll with mouse wheel
Paste Cmd+V (macOS) or Ctrl+Shift+V (Linux)

Why these settings:

Setting Purpose
escape-time 0 No delay on ESC key (fixes sluggishness)
history-limit 50000 AI agents produce lots of output (default is 2000)
set-clipboard external Secure clipboard (apps inside tmux can't hijack it)
MouseDragEnd1Pane Auto-copy on mouse release

Tip: Hold Shift while selecting to bypass tmux and use native terminal selection.

Claude Code Profile (Optional)

If you use a custom Claude profile directory (e.g., dual account setup), configure it in ~/.agent-deck/config.toml:

[claude]
config_dir = "~/.claude-work"

This tells Agent Deck where to find Claude session data for:

  • Session ID detection
  • Fork functionality
  • Session tracking across restarts
Hook Integration (Optional)

For instant status updates without polling, configure hooks in your AI tool:

Claude Code (~/.claude/settings.json):

{
  "hooks": {
    "Stop": [{"hooks": [{"type": "command", "command": "~/.agent-deck/hooks/claude-code.sh"}]}]
  }
}

Development

make build      # Build binary
make test       # Run tests
make dev        # Run with auto-reload (requires 'air')
make fmt        # Format code
make lint       # Lint code (requires 'golangci-lint')
make release    # Cross-platform builds
make clean      # Clean build artifacts
Project Structure
agent-deck/
β”œβ”€β”€ cmd/agent-deck/        # CLI entry point
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ ui/                # TUI components (Bubble Tea)
β”‚   β”œβ”€β”€ session/           # Session & group management
β”‚   └── tmux/              # tmux integration, status detection
β”œβ”€β”€ Makefile
β”œβ”€β”€ go.mod
└── README.md
Debug Mode
AGENTDECK_DEBUG=1 agent-deck

Logs status transitions to stderr for troubleshooting.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Comparison

Feature Agent Deck Alternatives
Universal (any tool) βœ… Often tool-specific
Claude Code fork βœ… Context inheritance ❌ Not available
Fast session creation βœ… Instant Slow startup
Project hierarchy βœ… Nested groups Flat lists
Session search βœ… Fuzzy search Limited
Import existing βœ… tmux discovery Manual only
Smart status βœ… Per-tool detection Basic
Memory footprint ~20MB Higher

License

MIT License - see LICENSE for details.

Acknowledgments

Built with:


Directories ΒΆ

Path Synopsis
cmd
agent-deck command
internal
ui
update
Package update provides version checking and self-update functionality.
Package update provides version checking and self-update functionality.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL