Skip to content
/

Agent Deck

agent-deck · asheshgoplani/agent-deck · ★ 2.5k · last commit 2026-05-26

Primitive shape 1 total
Skills 1
00

Summary

Agent Deck — Summary

Agent Deck is a Go + Bubble Tea terminal session manager designed as mission control for fleets of AI coding agents. It renders a full-screen TUI that lets users create, start, stop, fork, and switch between multiple Claude Code or OpenCode sessions with single-keystroke speed. The conductor subsystem lets one long-running "head" session supervise workers, relay Telegram/Slack notifications, and dispatch sub-agents for independent tasks. An MCP manager and Skills manager allow toggling per-session MCP servers and Claude skills without editing JSON configs. State persistence (state.json + task-log.md + LEARNINGS.md + HANDOFF.md) survives Claude Code context compaction and process restarts.

Agent Deck occupies a unique niche as pure infrastructure middleware: it does not define prompts, phases, or methodology — it only manages the process layer around existing AI coding agents. Compared to claude-flow (the nearest seed), Agent Deck provides the same "fleet" framing but achieves it with a thin Go binary + tmux-pane model rather than an npm package + MCP server + 305 MCP tools. Agent Deck's UI surface (Bubble Tea TUI + optional web UI) is a first-class engineering primitive, while claude-flow has no local UI at all.

01

Overview

Agent Deck — Overview

Origin

Agent Deck was created by Ashesh Goplani and first released in 2025. It grew from the need to manage parallel Claude Code sessions across many projects without hunting through terminal tabs. The repo has 30 contributors and 2,535 stars as of 2026-05-26.

Philosophy

The project positions itself as "mission control for your AI coding agents." The central thesis: running multiple AI agents concurrently is already possible with Claude Code, but the UX for managing them is broken (tab proliferation, no visibility into which agents are running/waiting/stuck). Agent Deck solves the visibility and control problem without changing anything about how the agents themselves work.

It deliberately avoids methodology lock-in. There are no SPARC phases, no SDD gates, no persona files. The value is purely operational: see all agents, switch fast, attach tools dynamically.

Key manifesto points from the README

  • "One terminal. All your agents. Complete visibility."
  • "Running Claude Code on 10 projects? OpenCode on 5 more? Another agent somewhere in the background? Managing multiple AI sessions gets messy fast."
  • "Fork any Claude conversation instantly. Each fork inherits the full conversation history."
  • "Attach MCP servers without touching config files."

Conductor pattern

The conductor is Agent Deck's highest-level abstraction: a long-running Claude session configured to receive heartbeats, answer Telegram/Slack messages, escalate to the user, and dispatch sub-agent workers. The README frames this as "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."

02

Architecture

Agent Deck — Architecture

Distribution

  • Binary: Go-compiled single binary agent-deck, cross-platform (macOS, Linux, WSL)
  • Install: install.sh curl-pipe or pre-built releases from GitHub
  • Claude Code plugin: "/plugin marketplace add asheshgoplani/agent-deck" → installs SKILL.md + references

Required Runtime

  • Go 1.24+ (to build from source)
  • Pre-built binary: no runtime dependency
  • tmux (for pane management behind the TUI)
  • Claude Code or OpenCode (the agents being managed)

Directory Tree

agent-deck/
├── cmd/              # Go CLI entry point
├── conductor/        # Conductor orchestration logic
├── internal/         # Core session/MCP/profile logic
├── skills/
│   └── agent-deck/
│       ├── SKILL.md                    # Claude Code skill
│       └── references/
│           ├── cli-reference.md
│           ├── config-reference.md
│           ├── tui-reference.md
│           └── troubleshooting.md
├── scripts/          # Helper scripts (launch-subagent.sh, etc.)
├── site/             # Static documentation site
├── sandbox/          # Test sandbox environment
├── .claude-plugin/
│   └── marketplace.json
└── ~/.agent-deck/    # User config (runtime, not in repo)
    └── config.toml

Config Files

  • ~/.agent-deck/config.toml — profiles, groups, conductors, MCP pool, per-group Claude config override
  • .agent-deck/skills.toml — per-project skills state (applied vs pool)
  • state.json, task-log.md, LEARNINGS.md, HANDOFF.md — per-session state persistence (workspace directory)

Target AI Tools

Claude Code, OpenCode (auto-discovered from PATH)

Tech Stack

  • Core: Go 1.24, Bubble Tea (charmbracelet/bubbletea), Lip Gloss (charmbracelet/lipgloss)
  • State: SQLite (modernc.org/sqlite)
  • Notifications: gorilla/websocket, Google Cloud Pub/Sub (optional)
  • Web UI: served from within the binary (esbuild-bundled React)
03

Components

Agent Deck — Components

CLI Subcommands (binary: agent-deck)

Command Purpose
agent-deck (bare) Launch interactive TUI
agent-deck add Create a new session
agent-deck session start/stop/restart/fork/send/output/current Session lifecycle control
agent-deck mcp list/attach/detach/status MCP plugin management
agent-deck skills list/attach/detach Skill management per project
agent-deck conductor setup/status/logs Conductor configuration
agent-deck watcher install/list/remove Event watcher setup
agent-deck worktree list/cleanup Git worktree session management
agent-deck launch Spawn a child agent session with parent linkage
agent-deck remote register/list/attach SSH-based remote session management
agent-deck status Quick status summary
agent-deck feedback Submit feedback
agent-deck session share/import Export/import Claude conversations

TUI Surfaces

Keybind Action
f / F Quick fork / fork with custom name
m Open MCP manager dialog
s Open Skills manager dialog
Space Toggle MCP on/off
Tab Cycle MCP scope (LOCAL/GLOBAL)
Type-to-jump Fuzzy filter in dialogs

Skills (Claude Code plugin)

Skill Purpose
agent-deck (SKILL.md) Agent Deck knowledge base — session management, MCP attach, conductor setup, worktrees, sub-agent spawning

Scripts (within skill)

Script Purpose
scripts/launch-subagent.sh Spawns a named child Claude session with optional --wait

State Files

File Purpose
state.json Serialized session state
task-log.md Append-only task history
LEARNINGS.md Accumulated agent learnings
HANDOFF.md Cross-session handoff document
~/.agent-deck/config.toml Global/profile configuration
.agent-deck/skills.toml Per-project skill state
05

Prompts

Agent Deck — Prompts

Agent Deck ships one Claude Code skill file (skills/agent-deck/SKILL.md) as its primary prompt artifact.

Verbatim excerpt 1 — SKILL.md description header

---
name: agent-deck
description: Terminal session manager for AI coding agents. Use when user mentions "agent-deck",
"session", "sub-agent", "MCP attach", "git worktree", or needs to (1) create/start/stop/restart/fork
sessions, (2) attach/detach MCPs, (3) manage groups/profiles, (4) get session output, (5) configure
agent-deck, (6) troubleshoot issues, (7) launch sub-agents, or (8) create/manage worktree sessions.
Covers CLI commands, TUI shortcuts, config.toml options, and automation.
metadata:
  compatibility: "claude, opencode"
---

Prompting technique: Keyword-triggered autonomous activation. The description acts as a trigger matcher — any of the listed keywords causes Claude Code to auto-load the skill context. This is the "Archetype 1 skills-only" pattern.

Verbatim excerpt 2 — Script Path Resolution instruction

## Script Path Resolution (IMPORTANT)

This skill includes helper scripts in its `scripts/` subdirectory. When Claude Code loads this skill,
it shows a line like:

    Base directory for this skill: /path/to/.../skills/agent-deck

**You MUST use that base directory path to resolve all script references.** Store it as `SKILL_DIR`:

    # Set SKILL_DIR to the base directory shown when this skill was loaded
    SKILL_DIR="/path/shown/in/base-directory-line"

    # Then run scripts as:
    $SKILL_DIR/scripts/launch-subagent.sh "Title" "Prompt" --wait

**Common mistake:** Do NOT use `<project-root>/scripts/launch-subagent.sh`. The scripts live inside
the skill's own directory (plugin cache or project skills folder), NOT in the user's project root.

Prompting technique: Explicit path-resolution iron law. The IMPORTANT label and bold command prevent a known failure mode (wrong script path). This is a defensive constraint pattern, similar to claude-flow's "do not stop after calling MCP tools" anti-pattern rules.

Verbatim excerpt 3 — Capability table (from SKILL.md)

| Capability | What it does | Surfaces |
|---|---|---|
| **Manage sessions** | Create, start, stop, restart, fork, send, output, remove a session | CLI ✅ · TUI ✅ · Web UI 🟡 |
| **Sub-agent / worker spawning** | `agent-deck launch` a child Claude session with parent linkage | CLI ✅ · TUI ⚪ |
| **Manage conductors** | Set up long-lived orchestrators with their own profile + channel | CLI ✅ · TUI 🟡 |
| **Worktree workflows** | `--worktree` to create isolated git-worktree-backed sessions | CLI ✅ |
| **State persistence** | state.json + task-log.md + LEARNINGS.md + HANDOFF.md survive compaction | CLI ✅ |

Prompting technique: Reference table with verification status icons. Distinguishes "CLI verified", "TUI partial", and "Web UI unknown" — a rare honest per-surface status matrix.

09

Uniqueness

Agent Deck — Uniqueness & Positioning

differs_from_seeds

Agent Deck is closest to claude-flow in goal (fleet orchestration of multiple AI coding agents) but diverges architecturally in every dimension. Claude-flow installs an MCP server with 305 tools, relies on npm/npx, stores state in SQLite+vector, and has no UI surface. Agent Deck installs a single Go binary with a Bubble Tea TUI, manages sessions via tmux panes, and stores state in SQLite + markdown files. Claude-flow defines SPARC methodology phases and generates spec files; Agent Deck defines no methodology at all. Claude-flow is an MCP-anchored toolserver (Archetype 3); Agent Deck is a pure process-management layer with no prompt methodology (no archetype match in the seed taxonomy — closest to Archetype 4 "markdown scaffold, zero primitives" but in reverse: all CLI/TUI, almost zero prompt content). The conductor+worker pattern overlaps superficially with claude-flow's queen+worker pattern, but Agent Deck's conductor is a plain Claude Code session given a description file, not a specialized code-class subagent.

Positioning

  • Compared to claude-conductor (seed): claude-conductor is 15 markdown templates with no runtime. Agent Deck is the opposite: no templates, all runtime.
  • Compared to superpowers: superpowers injects methodology via skills; Agent Deck provides the operational harness for whichever methodology already exists.
  • First-class GUI multi-session management is absent from all 11 seeds. Agent Deck fills that gap for terminal users.

Observable Failure Modes

  1. tmux dependency: If tmux is not installed or the system limits panes, sessions silently fail.
  2. Conductor single-point-of-failure: The Telegram relay depends on the conductor session staying alive; if it compacts or crashes, worker escalations queue up undelivered.
  3. Script path resolution: The SKILL.md dedicates a full "IMPORTANT" section to preventing agents from using the wrong script path — this is a known recurring failure mode.
  4. Partial Web UI: The web dashboard is documented as partially functional; users relying on it for MCP management may hit unverified features.
  5. No methodology enforcement: Agent Deck provides no quality gates, TDD enforcement, or review steps. All agent discipline must come from the agents themselves or separate skill packs.
04

Workflow

Agent Deck — Workflow

Agent Deck is not a workflow-defining framework. It provides the operational container for any workflow.

Typical Usage Phases

Phase Description Artifact
1. Setup Install binary; configure config.toml with profiles, groups, MCP pool ~/.agent-deck/config.toml
2. Session create agent-deck add -t "Name" -c claude /path Session entry in state
3. Start sessions agent-deck session start <name> Live tmux pane
4. Conductor setup agent-deck conductor setup work --description "Work fleet" Conductor entry
5. Channel wiring agent-deck watcher install (Telegram/Slack/ntfy) Watcher daemon
6. Parallel work Fork sessions; spawn sub-agents via agent-deck launch Child sessions
7. MCP / Skill attach m key or agent-deck mcp attach .agent-deck/skills.toml
8. Handoff HANDOFF.md written by agent; read by new session HANDOFF.md

Approval Gates

Agent Deck has no approval gates of its own. Gate logic is delegated entirely to the Claude Code agent (which has its own --auto-accept / --approval-policy flags). Agent Deck can proxy Telegram messages from a stuck agent up to the user's phone — the human's reply IS the approval, sent back through the conductor.

Worktree Workflow

agent-deck add --worktree <branch> creates a git worktree-backed session so parallel Claude sessions work on different branches without file system conflicts.

06

Memory Context

Agent Deck — Memory & Context

State Storage

Artifact Location Persistence
state.json Workspace directory (per session) Survives Claude Code restarts and context compaction
task-log.md Workspace directory Append-only log
LEARNINGS.md Workspace directory Accumulated insights across sessions
HANDOFF.md Workspace directory Explicit handoff document for next session
~/.agent-deck/config.toml User home Global profile / group / conductor config
.agent-deck/skills.toml Project root Per-project skill attachment state
SQLite Internal to binary Session registry, MCP pool, heartbeat state

Memory Type

File-based + SQLite. The SQLite database is internal to the binary and manages session registry and MCP pool. The markdown state files (HANDOFF.md, LEARNINGS.md) are the cross-session handoff mechanism for Claude — they are written by the agent and read by a new session startup.

Compaction Handling

Agent Deck explicitly designs around Claude Code's context compaction. The skill documents note that state.json + task-log.md + LEARNINGS.md + HANDOFF.md survive compaction/restart. The conductor session is responsible for re-injecting relevant state after a worker compaction event.

Cross-Session Handoff

Explicit: HANDOFF.md is the primary artifact. agent-deck session share / agent-deck session import also allows exporting and importing full Claude conversation histories between developers or machines.

Streaming Output

agent-deck session output <name> retrieves last agent response. Web UI provides live streaming via WebSocket (gorilla/websocket).

07

Orchestration

Agent Deck — Orchestration

Multi-Agent Pattern

Hierarchical (conductor + workers). The conductor session acts as the supervisor; worker sessions are spawned via agent-deck launch with --parent linkage. The conductor receives heartbeats, routes messages from Telegram/Slack to the appropriate worker, and escalates to the human when needed.

Isolation Mechanism

tmux-pane + git-worktree. Each session runs in a dedicated tmux pane. agent-deck add --worktree <branch> additionally creates a git worktree so parallel agents work on separate directory trees without file collisions.

Execution Mode

Interactive-loop / background-daemon. Sessions are persistent background tmux panes. The conductor is a continuous daemon. The TUI is the human control interface, not the execution engine.

Max Concurrent Agents

Not hard-coded. Limited only by system resources and Claude API rate limits.

Multi-Model

No explicit model routing. Agent Deck manages process-level sessions; the underlying Claude Code instance handles model selection. Per-group CLAUDE_CONFIG_DIR overrides allow different API keys per group (enabling different Claude accounts), but this is auth separation, not model-role routing.

Orchestration Pattern Details

  • Workers are dispatched via agent-deck launch "Task Title" "Prompt" --wait
  • Parent sessions can poll worker output via agent-deck session output
  • Conductor dispatches via Telegram relay: user sends command via phone → Telegram bot → conductor → worker
  • Fan-out is manual (conductor reads a task list and spawns workers one by one)

Consensus / Coordination

None. Agent Deck provides the execution substrate but does not coordinate agent outputs or merge work. That is left to human review or a Claude-driven merge step.

Cross-Tool Portability

High within CLI agents: Claude Code and OpenCode are both first-class. Codex can be used as a sub-agent via consult another agent capability. Gemini CLI was also mentioned.

08

Ui Cli Surface

Agent Deck — UI / CLI Surface

CLI Binary

  • Binary name: agent-deck
  • Language: Go
  • Distribution: Pre-built platform binaries (macOS, Linux, WSL) via GitHub Releases or install.sh
  • NOT a thin wrapper: Agent Deck is a full runtime — it manages tmux panes, stores session state in SQLite, serves a web UI, and brokers MCP configs. It is not a wrapper around the Claude CLI.

Subcommand surface (partial)

agent-deck
agent-deck add
agent-deck session start|stop|restart|fork|send|output|current|share|import|set|unset-parent
agent-deck mcp list|attach|detach|status|toggle
agent-deck skills list|attach|detach
agent-deck conductor setup|status|logs
agent-deck watcher install|list|remove
agent-deck worktree list|cleanup
agent-deck launch
agent-deck remote register|list|attach
agent-deck status
agent-deck feedback
agent-deck --version

Estimated ~30+ distinct subcommands.

Local UI Surface

TUI (Primary)

  • Type: Full-screen terminal TUI
  • Tech stack: Go + Bubble Tea (charmbracelet/bubbletea) + Lip Gloss (charmbracelet/lipgloss)
  • Features: Session list, status indicators (●running / ◐waiting / ○idle / ✕error), session switching, MCP manager dialog, Skills manager dialog, group management, fuzzy search/filter, fork dialogs

Web UI (Secondary)

  • Type: Web dashboard (partially implemented as of v1.9)
  • Port: Served by the agent-deck binary (port not specified in README; internal esbuild-bundled React app)
  • Tech stack: React (bundled via esbuild into binary)
  • Features: Session management (partial), MCP management (unknown status per skill capability table)
  • Status: 🟡 partial — some capabilities verified, some unknown (per SKILL.md capability table)

IDE Integration

None. Agent Deck operates entirely at the terminal level.

Observability

  • Session status: Live status icons in TUI (running/waiting/idle/error)
  • Output retrieval: agent-deck session output <name> returns last agent response
  • Task log: task-log.md append-only audit trail per session
  • Heartbeat monitoring: Conductor sends periodic system-state nudges; agent-deck status reports fleet state
  • Self-improvement: Conductor can analyze its own session transcripts, surface bugs/patterns, and file GitHub issues with privacy guards
  • Cost tracking: Not built-in (unlike Hawkeye which reads Claude's JSONL files)
  • Audit log format: Markdown (task-log.md) + SQLite (internal state)

Comparison with CLAUDE-FLOW UI

Claude-flow has no local UI at all. Its 160 commands and 305 MCP tools are invoked via slash-commands in the Claude Code terminal. Agent Deck inverts this: it is almost entirely UI — TUI-first, with a secondary web dashboard. Where claude-flow's UX is "type /hive-mind-status in your Claude session", Agent Deck's UX is "press a key in the TUI". This is the primary architectural delta vs. the reference seed.

Related frameworks

same archetype · same primary tool · same memory type

Claude-Flow / Ruflo ★ 55k

Eliminates single-agent context limits and sequential bottlenecks by orchestrating fault-tolerant swarms of specialized AI agents…

Hermes Agent (NousResearch) ★ 168k

Self-improving personal AI agent with closed learning loop, 7 terminal backends, and messaging gateway — not tied to any AI…

OpenCode ★ 165k

Terminal-first AI coding agent with multi-model routing, native desktop app, and a typed .opencode/ configuration system for…

OpenHands ★ 75k

Open-source AI software development platform (open-source Devin alternative) with Docker sandbox isolation, 77.6% SWE-bench…

DeerFlow ★ 70k

Long-horizon superagent that researches, codes, and creates by orchestrating parallel sub-agents with isolated contexts in Docker…

oh-my-openagent (omo) ★ 60k

Multi-provider AI agent orchestration for OpenCode: escape vendor lock-in by routing Sisyphus (Claude/Kimi/GLM) and Hephaestus…