Open source · macOS · MIT

← kontsek.io
AgentDeck icon

AgentDeck

One desk for all your AI agents.

A native macOS app that runs Claude Code, Codex, Gemini CLI, Antigravity and Grok side by side in real terminals, next to browser panes for ChatGPT, Claude.ai, Gemini and Perplexity. Every agent gets a shared task board and its own MCP endpoint, so they hand work to each other without peering inside each other.

View on GitHubBuild from sourcemacOS 14+ · Xcode 16+ · Swift / SwiftUI
The canvas view with the sidebar, task board and inspector collapsed: Claude Code in front with its private browser as a tab, Codex waiting for an answer, a Perplexity pane and an idle Grok Build.

Why AgentDeck

Real CLIs, not wrappers

AgentDeck spawns the actual claude, codex, gemini, agy and grok binaries in embedded PTY terminals. Your subscriptions, your configs, your keybindings. Subagents a CLI spawns stay inside its pane.

Coordination without surveillance

Agents see a shared task board, each other’s status and pending questions. They never read each other’s terminals. Work moves through handoffs typed into the other session’s input.

Private browsers for agents

An agent’s first browser call opens an isolated WebKit tab beside its terminal with its own cookies and sign-ins. It never drives your own browser, and sessions cannot see each other’s.

What you get

Everything a multi-agent desk needs, nothing that spies on the agents

  • Canvas of mini-windows

    Drag, resize and stack panes, or tile them into a grid. Tidy and Fill Canvas re-pack them in one shortcut.

  • Status badges

    Working, Idle, Waiting for user, Stalled and Quota warning, read from the visible terminal rows and OSC program-status records.

  • Shared task board and log

    Agents create and claim tasks, append notes, and hand work to a named session. You see every move in one log.

  • MCP endpoint per session

    Each session gets http://127.0.0.1:4820/mcp/<id>, so identity is implicit and whoami just works.

  • Git worktrees

    Give a session its own worktree on an agentdeck/<slug> branch so parallel agents never collide in one checkout.

  • Tabs and resume

    ⌘T starts another instance of the same CLI in the same directory as a fresh conversation. Relaunching AgentDeck reopens each session’s last conversation.

  • Shared skills catalog

    Loads .agents/skills, .claude/skills and friends from your repos. Agents read them through list_skills and read_skill.

  • Orchestrator sessions

    One session can recruit new agents into worktrees with a first prompt. You approve or deny each request in the sidebar.

How agents coordinate

Ten MCP tools and a board

Each session connects to its own endpoint, so an agent never has to say who it is. A typical turn looks like this:

read_board                     → see open work
update_task(task_id=4, owner="me", status="in-progress")
… do the work …
update_task(task_id=4, status="done", notes="PR #12 opened")
handoff(target_session="Codex B", title="Review PR #12",
        note="focus on the auth middleware")

Handoffs land in the other terminal as one typed line, queued until that agent is idle. An orchestrator session can also ask you to recruit a new agent; nothing is spawned without your approval.

Works with

Your agents, your accounts

CLI sessions

  • Claude Code
  • Codex
  • Gemini CLI
  • Antigravity
  • Grok Build
  • any shell

Browser sessions

  • ChatGPT
  • Claude.ai
  • Gemini
  • Grok
  • Perplexity
  • any URL

Add any other CLI as a zsh snippet with placeholders for the MCP URL, briefing file and session name. Sign in to web models once; shared panes reuse the session.

Install

Build it in a minute

brew install xcodegen
git clone https://github.com/mkontsek/agentdeck.git
cd agentdeck
make run

The only package dependency is SwiftTerm. The app is ad-hoc signed and not sandboxed, because it has to spawn processes and bind a local port.

Read before you run it

Honest limits

  • The built-in profiles launch agents with their permission prompts bypassed (--dangerously-skip-permissions and friends). Edit the commands in Settings if that is not what you want.
  • The MCP server listens on loopback only and checks Host and Origin, but it trusts every process running under your account. There is no authentication.
  • Status detection is heuristic. A CLI with unusual prompts can show Working while it waits for you.
  • AgentDeck does not install CLIs or sign you in anywhere. Missing tools show their installation links.

The full threat model is in SECURITY.md.