Skip to content

Repository files navigation

Agent Deck Logo

Agent Deck

Terminal session manager for AI agents

Go VersionLicensePlatform

FeaturesInstallationUsageDocumentationContributing


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:

StatusSymbolMeaning
Running greenAgent is actively working
Waiting yellowPrompt detected, needs your input
Idle graySession ready, nothing happening
Error redSession 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

IconToolStatus Detection
🤖Claude CodeBusy indicators, permission dialogs, prompts
Gemini CLIActivity detection, prompts
🔧AiderY/N prompts, input detection
💻CodexPrompts, continuation requests
🐚Any ShellStandard 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

KeyAction
j / Move down
k / Move up
h / Collapse group
l / / TabExpand group
EnterAttach to session

Session Management

KeyAction
nNew session
gNew group
RRename session/group
mMove session to group
dDelete
K / JReorder up/down

Claude Code Integration

KeyAction
fQuick fork Claude session (inherits conversation context)
FFork with custom name/group

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

Search & Import

KeyAction
/Search sessions
iImport existing tmux sessions
rRefresh

While Attached

KeyAction
Ctrl+QDetach (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)

Recommended tmux Configuration

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:

FeatureHow it works
Drag to copyClick and drag → auto-copies to clipboard
Double-clickSelects word → auto-copies
Triple-clickSelects line → auto-copies
Mouse scrollJust scroll with mouse wheel
PasteCmd+V (macOS) or Ctrl+Shift+V (Linux)

Why these settings:

SettingPurpose
escape-time 0No delay on ESC key (fixes sluggishness)
history-limit 50000AI agents produce lots of output (default is 2000)
set-clipboard externalSecure clipboard (apps inside tmux can't hijack it)
MouseDragEnd1PaneAuto-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

FeatureAgent DeckAlternatives
Universal (any tool)Often tool-specific
Claude Code fork✅ Context inheritance❌ Not available
Fast session creation✅ InstantSlow startup
Project hierarchy✅ Nested groupsFlat lists
Session search✅ Fuzzy searchLimited
Import existing✅ tmux discoveryManual only
Smart status✅ Per-tool detectionBasic
Memory footprint~20MBHigher

License

MIT License - see LICENSE for details.

Acknowledgments

Built with:


About

Terminal session manager for AI coding agents. Built with Go + Bubble Tea.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages