Skip to main content
Glama

Clanker

Claude Code plugin + stdio MCP server for running external coding agents as Claude-owned background tasks.

Clanker exposes these slash commands:

Command

Backend

/clanker:codex <task>

Codex ACP

/clanker:grok <task>

Grok ACP

/clanker:glm <task>

Opencode with GLM

/clanker:deepseek <task>

Opencode with DeepSeek

/clanker:kimi <task>

Opencode with Kimi

/clanker:free <task>

Opencode free model

/clanker:oc <provider/model> <task>

Advanced Opencode model override

Default mode is background: the Claude Agent task owns the visible bottom task row, while the MCP server owns the ACP backend process. Use --wait to run foreground.

Layout

.
├── .claude-plugin/marketplace.json
├── plugin/
│   ├── .claude-plugin/plugin.json
│   ├── .mcp.json
│   ├── agents/
│   ├── commands/
│   └── dist/clanker-mcp.mjs
├── src/
├── test/
├── scripts/
└── package.json

Related MCP server: openai-agents-mcp

Install

claude plugin marketplace add /path/to/ClankerHouse
claude plugin install clanker@clanker

Then restart Claude Code or run /reload-plugins.

The active Claude config should point here:

"enabledPlugins": {
  "clanker@clanker": true
},
"extraKnownMarketplaces": {
  "clanker": {
    "source": {
      "source": "directory",
      "path": "/path/to/ClankerHouse"
    }
  }
}

Development

npm ci
npm run bundle
npm test
npm run typecheck

npm run bundle writes plugin/dist/clanker-mcp.mjs, the self-contained server bundle Claude loads from its plugin cache.

Runtime Config

Env

Default

Meaning

CLANKER_STALL_THRESHOLD_MS

300000

Silence before a running turn is flagged as suspected stalled.

CLANKER_TURN_TIMEOUT_MS

2700000

Hard per-turn ceiling before the subprocess is killed and the turn becomes error.

CLANKER_HANDSHAKE_TIMEOUT_MS

30000

ACP initialize + session/new timeout.

CLANKER_SESSION_TTL_MS

600000

Idle session TTL before reaping.

CLANKER_WAIT_DEFAULT_MS / CLANKER_WAIT_MAX_MS

30000 / 55000

clanker_wait long-poll default and cap.

CLANKER_PROGRESS_EXPERIMENTAL

unset

=1 enables MCP progress notifications.

CLANKER_MCP_BASE_REPO

server cwd

Base repo for managed worktrees.

CLANKER_RUNS_ROOT / CLANKER_WORKTREES_ROOT

~/.cache/clanker/{runs,worktrees}

Artifact and managed worktree roots.

Available Tools

7 tools
clanker_cancelCancel a Clanker's in-flight turnA
DestructiveIdempotent

Send ACP session/cancel to the Clanker backend. Returns {id, status}. No-op if the session is idle.

Inputs: id (required).

clanker_dispatchDispatch to a Clanker and block until the turn completesA
Destructive

Convenience path = clanker_dispatch_start + loop clanker_wait until the turn is terminal. Returns the terminal WaitResult {status, final_message, touched_files, plan_final}. For long tasks prefer clanker_dispatch_start + clanker_wait so the caller controls polling and avoids MCP request timeouts.

Inputs: lane (required), prompt (required), cwd, model, +3 more.

clanker_dispatch_startStart a Clanker turn (non-blocking)A
Destructive

Spawn/handshake a Clanker and start a prompt turn, returning {id} immediately. Poll progress with clanker_wait(id). Setup errors (unknown backend, worktree creation) fail here; runtime errors surface via clanker_wait.

Inputs: lane (required), prompt (required), cwd, model, +3 more.

clanker_listList active Clanker sessionsA
Read-onlyIdempotent

Overview of live Clankers: [{id, lane, state (working|idle|stalled), idle_ms, turns_count, plan_summary, suspected_stall}]. Reaped/closed sessions are omitted.

Inputs: no named parameters.

clanker_promptContinue an existing Clanker session with a new turnA
Destructive

Start a new prompt turn on an already-open session (persistent-session reuse). Returns {id}; poll with clanker_wait(id). Errors if the session was reaped/closed or a turn is already running.

Inputs: id (required), prompt (required).

clanker_statusCheap status of a Clanker runA
Read-onlyIdempotent

Return {status, plan (checkbox counts + current step), tool_calls, last_event_age_ms, suspected_stall}. Does not wait. suspected_stall flags a running turn silent past the stall threshold.

Inputs: id (required).

clanker_waitLong-poll a Clanker runA
Read-only

Wait up to timeout_ms (default 30000, cap 55000) for new events or completion. Returns {status, digest, plan_summary, last_event_age_ms, suspected_stall}; when status is terminal also {final_message, touched_files, plan_final}. digest is a human-readable summary of events since the previous wait — tool titles, file writes, plan check changes, key message sentences. Quiet mode (default on): only wakes before the deadline on a plan/status change, a tool error, a suspected stall, or a terminal state — trivial chatter (a tool_call starting, a file-location echo, a message-chunk fragment) does not cut the wait short, so callers no longer need to repoll tightly just because the run is reading/grepping. Pass quiet:false for the old any-event wake-up.

Inputs: id (required), quiet, timeout_ms.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: cancel, dispatch (convenience wrapper), dispatch_start (initiate), list, prompt (existing session), status, wait. No overlap despite some convenience aliasing.

    Naming Consistency5/5

    All tool names follow the consistent 'clanker_verb' pattern in snake_case. Verbs are descriptive and predictably relate to actions (cancel, dispatch, list, prompt, status, wait).

    Tool Count5/5

    7 tools cover the full session management lifecycle without being excessive. Each tool addresses a necessary operation, from starting to polling to cancellation.

    Completeness4/5

    Core CRUD-like operations are covered: start a turn, wait, check status, list sessions, cancel. Missing an explicit 'delete or close session' tool, but cancel may suffice. Slight gap for cleanup.

    Related MCP Connectors

    Related MCP Servers