# Agents & subscriptions

The 25 coding-agent CLIs Mandeck can launch, how it reads each one's sign-in without asking you for anything, and how a second plan works.

## The catalog

An agent, to Mandeck, is a launch command it runs in a new pane. There is no
Mandeck account and no key collection: whatever you already installed and
logged into is what runs.

| Agent | Vendor | Command | Install |
|---|---|---|---|
| Claude Code | Anthropic | `claude` | `brew install --cask claude-code` |
| Codex | OpenAI | `codex` | `brew install --cask codex` |
| GitHub Copilot CLI | GitHub | `copilot` | `brew install --cask copilot-cli` |
| Gemini CLI | Google | `gemini` | `brew install gemini-cli` · needs Node |
| Cursor CLI | Anysphere | `cursor-agent` | `curl https://cursor.com/install -fsS \| bash` |
| opencode | Anomaly | `opencode` | `brew install anomalyco/tap/opencode` |
| aider | Aider AI | `aider` | `curl -LsSf https://aider.chat/install.sh \| sh` |
| goose | Block / AAIF | `goose session` | `brew install block-goose-cli` |
| Amp | Sourcegraph | `amp` | `curl -fsSL https://ampcode.com/install.sh \| bash` |
| Crush | Charmbracelet | `crush` | `brew install charmbracelet/tap/crush` |
| Factory Droid | Factory AI | `droid` | `brew install --cask droid` |
| Qwen Code | Alibaba | `qwen` | `brew install qwen-code` · needs Node |
| Kimi CLI | Moonshot AI | `kimi` | `curl -LsSf https://code.kimi.com/install.sh \| bash` |
| Devin CLI | Cognition | `devin` | `curl -fsSL https://cli.devin.ai/install.sh \| bash` |
| Kiro CLI | AWS | `kiro-cli` | `curl -fsSL https://cli.kiro.dev/install \| bash` |
| OpenHands CLI | All-Hands AI | `openhands` | `curl -fsSL https://install.openhands.dev/install.sh \| sh` |
| Forge | Antinomy | `forge` | `curl -fsSL https://forgecode.dev/cli \| sh` |
| Pi | Mario Zechner | `pi` | `curl -fsSL https://pi.dev/install.sh \| sh` · needs Node |
| Continue CLI | Continue | `cn` | `curl -fsSL https://raw.githubusercontent.com/continuedev/continue/main/extensions/cli/scripts/install.sh \| bash` · needs Node |
| Open Interpreter | Open Interpreter | `interpreter` | `curl -fsSL https://www.openinterpreter.com/install \| sh` |
| Grok Build | xAI | `grok` | `curl -fsSL https://x.ai/cli/install.sh \| bash` |
| Mistral Vibe | Mistral AI | `vibe` | `curl -LsSf https://mistral.ai/vibe/install.sh \| bash` |
| Cline CLI | Cline | `cline` | npm only · needs Node |
| Hermes | Nous Research | `hermes` | `curl -fsSL https://hermes-agent.nousresearch.com/install.sh \| bash` |
| OpenClaw | OpenClaw | `openclaw` | `curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh \| bash -s -- --install-method git` · needs Node |

There is also **Shell** — a pane with no launch command, just your shell. Over
the [Deck API](/docs/deck-api) its slug is `shell`, and a shell pane is the one
kind that does *not* run a spawn's prompt; the prompt is recorded on the job
only.

`GET /v1/agents` returns the slugs this particular Mac can actually run, so a
bot never offers an agent that is not installed.

## How sign-in is detected

**Settings &rsaquo; Agents** reads straight from each CLI's own login — there is
no separate Mandeck sign-in. Whoever you logged that tool into shows there, with
its version.

The probe is pure file reads against each CLI's own credential store: instant,
no subprocesses, and best effort by design.

| Agent | Read from | Shows |
|---|---|---|
| Claude Code | `~/.claude.json` | `oauthAccount.emailAddress` and the subscription type |
| Codex | `~/.codex/auth.json` | the email and ChatGPT plan out of the id token |
| Gemini CLI | `~/.gemini/google_accounts.json` | the `active` account |
| opencode | `~/.local/share/opencode/auth.json` | how many upstream providers are connected |
| Cursor CLI | `~/.cursor/cli-config.json` | whether the file is there |

For every other agent the answer is *unknown*, and the row says **Installed**
rather than guessing.

When a row reads **Not signed in** it offers a Sign in button, which opens a
pane running that CLI's own login command:

| Agent | Login command |
|---|---|
| Claude Code | `claude /login` |
| Codex | `codex login` |
| Gemini CLI | `gemini` — the OAuth flow runs on first launch |
| opencode | `opencode auth login` |
| Cursor CLI | `cursor-agent login` |

## A second subscription

**Settings &rsaquo; Agents &rsaquo; Extra subscriptions** is manual, and only
if you hold more than one plan: name a second account and paste a
`claude setup-token`. Mandeck records only that a token is connected, never an
email — the identity above already comes from the CLI. *Default* is just the
`~/.claude` every CLI already uses.

Each named account gets **Get token**, **Paste token** (**Replace token** once
one is connected), **Sign in**, and **Forget**. An account with a token
connected carries a live meter in Stats and can be switched mid-pane.

Over the API, `GET /v1/accounts` lists the accounts this deck can spend,
`POST /v1/accounts` ensures one exists, and `POST /v1/spawn` takes an `account`
so a handed-off task runs on the plan you chose.
