Your AI agent command center Install . Quick Start . Features . Conductor . Docs . Discord . FAQ Agent Deck is mission control for your AI coding agents. Running Claude Code on ten projects, OpenCode on five more, another agent somewhere in the background?
> /plugin marketplace add asheshgoplani/agent-deck> /plugin install agent-deck@agent-deck
What's inside
Your AI agent command center
Install . Quick Start . Features . Conductor . Docs . Discord . FAQ
Agent Deck is mission control for your AI coding agents. Running Claude Code on ten projects, OpenCode on five more, another agent somewhere in the background? One terminal shows every session — running, waiting, or done — and one keystroke switches between them. Groups, search, forking, git worktrees, cost tracking, and a phone-controlled conductor keep a whole fleet manageable.
https://github.com/user-attachments/assets/e4f55917-435c-45ba-92cc-89737d0d1401
agent-deck is actively maintained by Ashesh, and it welcomes both contributors and co-maintainers. PRs here don't sit: every incoming PR is validated (applied, built, tested) within about a day, and good ones merge in the next release batch. Recent releases have shipped dozens of community fixes.
Beyond one-off PRs, we're looking for 1-2 regular co-maintainers: people who want to own an area (a tool integration, the TUI, the web view, CI) and help triage and review. The validation pipeline does the heavy lifting; maintainers steer.
To get started:
good first issue: curated to be small and self-contained.If you've had a couple of PRs land here and want to help steer, open an issue titled "maintainer: your area". We'd love the help.
Looking for something specific to work on? docs/ROADMAP.md lists ideas and follow-ups that are real but not yet scheduled.
If you've had a couple of PRs land here and want to help steer, say so on #1650 or open an issue titled "maintainer: your area". We'd love the help.
Works on: macOS, Linux, Windows (WSL)
curl -fsSL https://raw.githubusercontent.com/asheshgoplani/agent-deck/main/install.sh | bash
Then run: agent-deck
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
agent-deck uninstall # Interactive uninstall
agent-deck uninstall --keep-data # Remove binary only, keep sessions
See Troubleshooting for full details.
agent-deck completion <bash|zsh|fish> prints a completion script for commands and subcommands (agent-deck se<Tab> → session, agent-deck session st<Tab> → start/stop), plus live resource names where it matters — agent-deck remote update <Tab> offers your configured remotes, agent-deck session set-parent <Tab> <Tab> offers session titles at both positions, and agent-deck -p <Tab> offers your profiles.
# bash
echo 'source <(agent-deck completion bash)' >> ~/.bashrc
# zsh
echo 'source <(agent-deck completion zsh)' >> ~/.zshrc
# fish
agent-deck completion fish > ~/.config/fish/completions/agent-deck.fish
Open a new shell (or re-source the config file) afterwards.
agent-deck # Launch TUI
agent-deck add . -c claude # Add current dir with Claude
agent-deck session fork my-proj # Fork a supported session
agent-deck session send my-proj --message-file task.md # Send a multiline prompt
agent-deck session remove my-proj # Remove stopped/errored session from registry (transcripts preserved)
agent-deck mcp attach my-proj exa # Attach MCP to session
agent-deck skill attach my-proj docs --source pool --restart # Attach skill + restart
agent-deck web # Start web UI on http://127.0.0.1:8420
⚠️ Changed in v1.9.55, extended after v1.16.5: in the new-session dialog (
n), Enter advances to the next field on every row — Name, Tool, Model, Reasoning effort, Path, checkboxes and each Claude Options row — and only the trailing[ Create session ]button (or Ctrl+S from any field) creates the session, so walking the form with Enter never launches a session before you have chosen the model, path or options.↓/Spaceopen the model list. The dialog also remembers your last-used tool. Restore the old Enter-creates-from-any-row behavior with[ui].new_session_enter_advances = false.
| Key | Action |
|---|---|
Enter | Attach to session |
Ctrl+Q | Detach from session |
n | New session |
f / F | Fork (quick / dialog) |
A / Shift+U | Archive / unarchive session |
^ | Show archived sessions |
m | MCP Manager |
s | Skills Manager |
$ | Cost Dashboard |
M | Move session to group |
S | Settings |
/ / G | Search / Global search |
r / R | Rename / Restart session |
d | Delete |
b | Re-run worktree setup script |
E | Container shell (sandboxed sessions) |
c / C | Copy last AI response / session info (repo, path, branch) |
V / Y | Copy visible terminal text / a fenced code block |
Shift+drag | Select text natively (Option+drag in iTerm2) — see below |
? | Full help |
Why can't I drag-select text? The TUI holds the terminal in mouse reporting mode so clicks, wheel scrolling and the divider drag work, which means your terminal never sees a drag as a selection. Hold
Shiftwhile dragging (Optionin iTerm2) to bypass it, or use thec/C/V/Ycopy keys above. Full detail in Terminal shortcuts.
See TUI Reference for all shortcuts and CLI Reference for all commands.
Five minutes from zero to a Telegram bot that watches every Claude session you have running.
# 1. Create a Telegram bot via @BotFather, grab the token + your user ID from @userinfobot.
# 2. Run the wizard — it sets up the conductor, bridge daemon, and heartbeat in one shot.
agent-deck conductor setup work --description "Work fleet"
agent-deck session start conductor-work
# 3. Message your bot: /status
That's it. From now on every other agent-deck session you run is supervised by a single
"conductor" session that answers routine questions, escalates the interesting ones to your
phone, and never lets a waiting worker rot.
Two short guides to read next:
docs/conductor/ — two-minute local quickstart, architecture,
state files, lifecycle, remote channel setup (Telegram/Slack/Discord), gotchas.docs/WATCHER-SETUP.md — add "doorbells" so the outside world
(GitHub events, gmail, ntfy pushes, meetings) can wake the conductor up.Try different approaches without losing context. Fork Claude, OpenCode, Pi, Codex, and Oh My Pi sessions instantly. Each fork inherits the parent conversation history through the tool's native fork support.
f for quick fork, F to customize name/groupcodex fork <session-id> support (verified with codex-cli 0.137.0)Attach MCP servers without touching config files. Need web search? Browser automation? Toggle them on per project or globally. Agent Deck handles the restart automatically.
m to open, Space to toggle, Tab to cycle scope (LOCAL/GLOBAL), type to jump$XDG_CONFIG_HOME/agent-deck/config.toml (default ~/.config/agent-deck/config.toml), then toggle per session — see Configuration ReferenceAttach/detach Claude skills per project with a managed pool workflow.
s to open Skills Manager for a Claude session$XDG_CONFIG_HOME/agent-deck/skills/pool, default ~/.config/agent-deck/skills/pool) to keep attach/detach deterministic.agent-deck/skills.toml and materializes into .claude/skillsDeclare groups in config.toml so they exist on startup. Set create = true to ensure a group exists, and default_path to set the working directory for new sessions in it:
[groups."staging"]
create = true # ensure the group exists
[groups."projects/devops"]
create = true
default_path = "~/repos/devops" # working directory for new sessions
On startup each group with create = true is created if missing (along with any parent groups). default_path is written to the state DB for any group that exists — including groups created from your sessions — so create = true is optional when the group is already there. Reconciliation is additive: removing a group from config.toml leaves the group and its sessions in place, and omitting default_path keeps any value already set. Clear a default with agent-deck group update <name> --clear-default-path.
Agent Deck supports per-group CLAUDE_CONFIG_DIR and env_file overrides. Useful when a single profile hosts groups that should authenticate against different Claude accounts — for example, a personal profile hosting a conductor group pinned to ~/.claude-team while other groups stay on ~/.claude.
Showing a partial view of a very large repo.
FAQ
agent-deck is a Claude Code plugin with 5 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes watcher-creator, agent-deck, recall. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it