Claude Modsunofficial directory

Automation·terminal·Apache-2.0

multi-core

ChatGPT, Cursor, Zen, Antigravity and Grok models in one Claude Code session, via /model.

multi-core running four openai-luna workers in parallel, with the worker list and tokens under the Claude Code prompt
Screenshot from the cc-multi-cli-plugin repository by greenpolo, Apache-2.0 license

multi-core is the shared core of Multi, a family of plugins that lets one Claude Code session run models from other providers: ChatGPT (Codex login), Cursor (official SDK), OpenCode Zen (API key), Antigravity (the agy CLI) and, since late September, Grok (the Grok Build CLI). The external models show up in /model next to Claude’s, and provider workers run as subagents on the provider you choose, each under its own account and permissions. Plain claude is not touched: everything here is active only in sessions started with the claude-multi launcher.

What it does

  • /model and /effort. External models are listed beside Claude’s. /effort sets reasoning effort where the model supports it.
  • Provider workers. One Agent type per provider (multi-openai, multi-zen, multi-cursor, multi-antigravity, multi-grok); the Agent tool’s model parameter picks which of that provider’s models runs, or the provider default when omitted. Live progress, elapsed time and cancellation. Version 0.2 had one agent type per model and effort; 0.3.0 replaced them with these five.
  • Two tool models. OpenAI and Zen models use Claude Code’s own tools. Cursor, Antigravity and Grok run their own harness; their actions appear in the session as display-only rows under the harness’s own tool names, never as executable Claude tool calls.
  • /multi-usage. A pane with per-provider quotas, billed spend where the provider exposes it, session tokens and worker receipts, plus the switch for quota-aware model selection, off by default.

To pick Anthropic-compatible models per subagent role behind a single endpoint, see agent-router. multi-core is about bringing other providers’ models and harnesses into the session.

Install

Needs Claude Code 2.1.287 or later, Node.js 24.12 or newer, and the login, API key or CLI of each provider you connect. Linux, macOS and Windows are supported; WSL behaves as Linux. The author states no minimum Claude Code version; the hooks module carries a comment written against Claude Code 2.1.272.

claude plugin marketplace add greenpolo/cc-multi-cli-plugin
claude plugin install multi-core@cc-multi-cli-plugin

multi-core on its own adds no model. Install the provider plugins you want from the same marketplace, any subset, and each one pulls multi-core in:

claude plugin install multi-openai@cc-multi-cli-plugin
claude plugin install multi-cursor@cc-multi-cli-plugin
claude plugin install multi-zen@cc-multi-cli-plugin
claude plugin install multi-antigravity@cc-multi-cli-plugin
claude plugin install multi-grok@cc-multi-cli-plugin

Then run /reload-plugins and /multi-core:setup, open a new terminal and start claude-multi. Connect each provider from inside that session with /multi-openai:login, /multi-cursor:login, /multi-zen:connect, /multi-antigravity:connect or /multi-grok:login. /multi-core:setup --command <name> --models <ids> renames the launcher or trims the /model rows; multi status lists installed providers and multi uninstall removes the shell integration while keeping provider logins. The marketplace is at version 0.3.0.

How it works

Multi has two halves. The mod is the set of hooks inside Claude Code. The gateway is a local service that the claude-multi launcher starts alongside Claude Code and that does the actual work. Every hook first checks for MULTI_MOD_GATEWAY_URL and MULTI_GATEWAY_TOKEN in the environment; without them each handler passes the event through untouched, which is why plain claude behaves as if the plugin were not installed. With them, the hooks call the gateway over HTTP with $.http.fetch on /multi/mod/... routes, authenticated with the token in a header, with a 1.5 second timeout per request (8.5 seconds for the usage pane) and a 32,000 character cap on each request body.

The mod serves no inference. When a multi/... model is selected, for the main agent or for a worker, the gateway answers the request by forwarding it to the chosen provider under that provider’s own login. That means the prompt, the conversation so far and whatever files or command output Claude reads in that turn leave your machine for that provider, not for Anthropic. How the gateway sits between Claude Code and the providers, and what the startup integration installs, is documented in the repo’s ARCHITECTURE.md and docs/installation.md; the plugin itself only reads the two variables above.

Session and permissions. On session.start the mod registers /multi-usage and the display tools that draw native harness actions as rows, then reports the session id, working directory and current model to the gateway. tool.describe keeps those display tools deferred behind ToolSearch, so no model’s prompt lists them, and appends two sentences to the Agent tool’s description explaining that model on a multi-* type names one of that provider’s models. On every prompt (classic.UserPromptSubmit, and classic.SessionStart when a session resumes) it asks the gateway to build a policy, which runs claude plugin list and reads your settings, and sends a snapshot of the current permission mode. If the gateway is not ready within 8 seconds or does not acknowledge the snapshot, the prompt is blocked with a message asking you to submit it again.

Workers. agent.offer asks the gateway whether each agent definition is offered in this session and hides the ones that are not. agent.spawn sends the subagent type, requested model, parent model, permission mode, working directory and background flag, and denies the spawn if the gateway does not accept it. classic.SubagentStart ties the engine’s agent id to the gateway before the worker’s first request. The mod rewrites no model itself; which provider serves a worker is the gateway’s decision.

Turns. turn.step is observability only: it forwards every chunk unchanged and posts the step event to the gateway as telemetry. For Cursor, Antigravity and Grok models it also polls the gateway every half second and writes the worker’s model, state and elapsed seconds to the status line. turn.complete reports the outcome so the gateway can close the receipt. For the display tools, tool.call returns the text the harness produced, tool.check allows them because they execute nothing, and ui.render labels the rows; an action whose completion never arrived is drawn as unconfirmed rather than as a success.

Compaction. session.compact sends the transcript messages and the compaction instructions to the gateway. The gateway can return replacement messages, authorize Claude’s own compaction, or refuse, in which case the compaction is skipped.

Tokens and storage. By default the mod adds nothing to the model’s context beyond the two sentences on the Agent tool’s description. If you turn on quota-aware model selection in /multi-usage, classic.PreToolUse appends a short advisory block to each Agent call from the main agent with every enabled provider’s usage summary, so Claude can prefer the provider with the most subscription capacity left; only account summaries enter the context, never receipts. The hooks themselves write nothing to disk. Sessions, receipts and provider logins live with the gateway and each provider’s own tool.

Limitations

  • Active only in sessions started with claude-multi. In a plain session /multi-usage tells you to relaunch.
  • If the gateway is slow or down, prompts are blocked until you resubmit, worker spawns are denied and compaction is skipped.
  • The usage pane draws only in the terminal. On other surfaces the command prints the provider summaries as text.
  • Cursor, Antigravity and Grok actions are shown in the session, not executed by Claude. The boundaries are in the repo’s docs/permissions.md.
  • The README says nothing about the providers’ terms of use for driving ChatGPT, Cursor, Antigravity or Grok through their CLIs and SDKs. Check them yourself.