cc-fleet

module
v0.1.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 10, 2026 License: Apache-2.0

README ΒΆ

🚒 cc-fleet

πŸ€– Spawn any vendor LLM β€” DeepSeek Β· GLM Β· Qwen Β· Kimi Β· MiniMax … β€” as real Claude Code teammates or ⚑ one-shot subagents πŸš€

Release npm Platform License Lang


cc-fleet demo

Vendor workers are real Claude Code teammates β€” driven exactly like native ones β€” with the LLM backend swapped to any provider that exposes an Anthropic-compatible API. Your main session's own auth (OAuth subscription or API key) is untouched; vendor workers bill the vendor API key via apiKeyHelper, and the key never enters env, argv, or shell history.

cc-fleet is a small Go CLI plus one Claude Code skill. The CLI manages per-vendor profiles, dispatches API keys via apiKeyHelper, and spawns teammate sessions in tmux panes. The skill teaches Claude Code when to delegate work to those teammates.

Requirements

  • Claude Code (the claude CLI) on your PATH.
  • tmux β€” vendor teammates run in tmux panes.
  • macOS or Linux, amd64 or arm64 β€” the tested platforms. Windows can in theory run the one-shot subagent mode, but it is untested.
  • Teammate mode needs Claude Code's agent-teams enabled. Turn it on in your global ~/.claude/settings.json and restart Claude Code (cc-fleet also nudges you on first run):
    { "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" } }
    
    The one-shot subagent mode and the interactive cc-fleet run work without it.

Quick Install

One-line (recommended)

curl -fsSL https://raw.githubusercontent.com/ethanhq/cc-fleet/main/install.sh | sh

Downloads the prebuilt binary, installs cc-fleet + the ccf alias, and adds the skill via the Claude Code plugin. Flags (after | sh -s --): --skill plugin|global|none, --scope user|project|local, --prefix DIR, --version vX.Y.Z.

npm

npm install -g @ethanhq/cc-fleet      # or run once: npx @ethanhq/cc-fleet

Binary only β€” also install the skill (see The skill) so Claude Code can use it.

go install

go install github.com/ethanhq/cc-fleet/cmd/cc-fleet@latest
ln -sf "$(go env GOPATH)/bin/cc-fleet" "$(go env GOPATH)/bin/ccf"   # optional ccf alias

Binary only β€” also install the skill (see The skill) so Claude Code can use it.

Prebuilt tarball β€” download from Releases:

tar -xzf cc-fleet-*.tar.gz && cd cc-fleet-*/ && ./install.sh

From source

git clone https://github.com/ethanhq/cc-fleet.git && cd cc-fleet && make install

[!NOTE] cc-fleet is a binary + a skill. The one-line installer and tarball set up both; npm, go install, and source install the binary only β€” add the skill via the plugin so Claude Code knows when to delegate to it.

Getting Started

Run cc-fleet (or the ccf alias) with no arguments to open the interactive TUI:

cc-fleet

In the TUI you register a vendor β€” give it a name, its Anthropic-compatible base URL, a models endpoint, a default model, and paste the API key. The key is written 0600 under ~/.config/cc-fleet/secrets/ and is never passed via argv or shell history.

The config tree is created automatically on first save, so there is no separate init step. The TUI also lists your vendors, lets you edit them, and manage multiple keys per vendor.

Press tab to switch to the Agents Board β€” it shows every live teammate grouped by session β†’ team, with its vendor, model, pane, PID, health, and hidden state, plus a list of subagent jobs. From here you can hide (h) / show (s) a teammate pane or refresh (r).

Once at least one vendor is registered, just talk to Claude Code in plain language. The skill reads your request and picks how to run the work β€” there are two execution modes.

Teammate mode β€” a long-lived vendor worker on your team

"Spawn a deepseek teammate to refactor the parser package, then report back."

Runs the vendor as a real Claude Code agent-team teammate:

  • Claude calls native TeamCreate; cc-fleet launches the vendor's own claude process in a tmux pane.
  • Claude drives it with native SendMessage β€” you assign tasks, it works and reports back.
  • The teammate stays alive across turns, so you keep handing it follow-ups. Run several in parallel.
  • Your main session keeps its own auth β€” only the teammate pane bills the vendor key (via apiKeyHelper).

[!NOTE] Teammate mode needs Claude Code's agent-teams enabled β€” see Requirements.

Start inside a tmux session so the teammates split into panes alongside your lead:

tmux new-session -s cc-fleet

Lead session on the left; a deepseek and a glm teammate in their own panes on the right β€” each a real claude process, driven by SendMessage exactly like a native teammate.

[!TIP] Not in tmux? cc-fleet runs the teammate in a detached cc-fleet-swarm-<team> server instead β€” same TeamCreate / SendMessage flow, the pane just isn't on screen. Attach with tmux -L cc-fleet-swarm-<team> attach to watch it.

Subagent mode β€” a one-shot headless call

"Use deepseek to summarize this 2,000-line log file."

cc-fleet subagent <vendor> runs the vendor model headless and returns the result synchronously β€” no pane, no team, no agent-teams. Ideal for one-off analysis and batch fan-out of independent tasks.

Flag Use
--background run detached; poll with cc-fleet subagent-status
--resume <id> continue a previous subagent (multi-turn)
--max-budget-usd / --max-turns bound cost and runtime

[!NOTE] You never pick the mode by hand β€” Claude decides teammate vs subagent from the request, spawns the vendor worker, and coordinates it for you.

Run a vendor in your own session

Not delegation β€” this one is all you.

cc-fleet run deepseek                          # an interactive claude, on DeepSeek
cc-fleet run deepseek --dangerously-skip-permissions

cc-fleet run <vendor> drops you straight into an interactive Claude Code session with the LLM backend swapped to the vendor β€” the same claude you know, just on DeepSeek / GLM / Qwen / … and billing the vendor key. Reach for a cheaper or different-jurisdiction model for your own day-to-day coding, not only for delegated work. --model overrides the default; --permission-mode / --dangerously-skip-permissions set the permission posture. No tmux, no agent-teams β€” just a terminal.

ChatGPT subscription as a provider (codex)

Have a Codex / ChatGPT subscription? Drive gpt-5.x with it too.

cc-fleet codex add && cc-fleet codex login

One codex add plus a device-code login turns the subscription into a regular provider β€” teammate, subagent, workflow leaf, or cc-fleet run, all answering through gpt-5.x. A local conversion daemon translates Claude's Anthropic calls to the OpenAI Responses API; the OAuth token stays inside the daemon (never in env, argv, or a profile), and cc-fleet keeps its own login so the codex CLI's auth is untouched. Unofficial β€” codex login asks for explicit confirmation; details in the CLI guide.

More example prompts
  • "Spawn a glm teammate and a deepseek teammate; have each summarize its model's strengths, then compare the two."
  • "Use deepseek to review the diff in internal/spawn and list any bugs you find."
  • "Fan out kimi, qwen, and glm subagents over these three files in parallel and collect the results."
  • "Spin up a deepseek teammate to port the test suite to table-driven form, then report back."

CLI & advanced usage

Claude drives the CLI for you, but every command also works by hand β€” multi-key rotation, hide/show, background/resumable subagents, secret backends, teardown order, and more. See CLI reference & advanced usage, or run cc-fleet <cmd> --help.

The skill

The binary is just the CLI. To teach Claude Code when to delegate, install the skill via the plugin (the one-line installer does this by default):

claude plugin marketplace add ethanhq/cc-fleet
claude plugin install cc-fleet@ethanhq

Contributing

PRs are very welcome β€” bug fixes, new vendor recipes, docs, tests, and features. Please read the contribution guide first; a few house rules:

  • UI changes and bug fixes need a screenshot or GIF in the PR.
  • AI-assisted commits credit the tool with a Co-Authored-By trailer.
  • Fully AI-authored PRs add an autonomous-PR marker at the bottom of the PR body.

A PR template is applied automatically when you open one.

License

Apache-2.0.

Directories ΒΆ

Path Synopsis
cmd
cc-fleet command
Command cc-fleet is the CLI entry point for the cc-fleet vendor-profile manager.
Command cc-fleet is the CLI entry point for the cc-fleet vendor-profile manager.
internal
ccver
Package ccver locates the installed `claude` binary and reports its version.
Package ccver locates the installed `claude` binary and reports its version.
childenv
Package childenv builds the environment handed to a child claude process that cc-fleet launches β€” a one-shot subagent (`claude -p`) or an interactive `run` session.
Package childenv builds the environment handed to a child claude process that cc-fleet launches β€” a one-shot subagent (`claude -p`) or an interactive `run` session.
codexproxy
Package codexproxy hosts the local Anthropic-Messages <-> OpenAI-Responses conversion daemon that lets a Codex/ChatGPT subscription drive OpenAI models as a cc-fleet provider.
Package codexproxy hosts the local Anthropic-Messages <-> OpenAI-Responses conversion daemon that lets a Codex/ChatGPT subscription drive OpenAI models as a cc-fleet provider.
config
Package config reads, writes, and validates ~/.config/cc-fleet/vendors.toml.
Package config reads, writes, and validates ~/.config/cc-fleet/vendors.toml.
doctor
Package doctor implements the health checks behind `cc-fleet doctor`, split into a Core group (every run mode) and an Optional group (live teammates only β€” tmux).
Package doctor implements the health checks behind `cc-fleet doctor`, split into a Core group (every run mode) and an Optional group (live teammates only β€” tmux).
fileutil
Package fileutil holds small file-system primitives shared across cc-fleet.
Package fileutil holds small file-system primitives shared across cc-fleet.
fingerprint
Package fingerprint provides the per-cc-version spawn template (env vars + flag list) that cc-fleet replays when launching vendor teammates.
Package fingerprint provides the per-cc-version spawn template (env vars + flag list) that cc-fleet replays when launching vendor teammates.
ids
Package ids validates cc-fleet identifiers (team names, member names) that flow into filesystem paths, tmux labels, inbox file names, and agent IDs.
Package ids validates cc-fleet identifiers (team names, member names) that flow into filesystem paths, tmux labels, inbox file names, and agent IDs.
leadsession
Package leadsession detects the parent Claude Code session for commands that are launched from a Claude Bash tool but do not otherwise have a team context.
Package leadsession detects the parent Claude Code session for commands that are launched from a Claude Bash tool but do not otherwise have a team context.
models
Package models caches and refreshes per-vendor model lists fetched from each vendor's `/v1/models` endpoint.
Package models caches and refreshes per-vendor model lists fetched from each vendor's `/v1/models` endpoint.
neterr
Package neterr centralizes the single question three call sites need to answer the same way: did a request fail at the transport layer β€” before any HTTP response came back?
Package neterr centralizes the single question three call sites need to answer the same way: did a request fail at the transport layer β€” before any HTTP response came back?
onboarding
Package onboarding implements cc-fleet's first-run guided setup: it covers two teammate-mode prerequisites β€” tmux and agent-teams β€” guides the user to fix them WITH CONSENT, and persists the user's decisions so later runs never re-nag.
Package onboarding implements cc-fleet's first-run guided setup: it covers two teammate-mode prerequisites β€” tmux and agent-teams β€” guides the user to fix them WITH CONSENT, and persists the user's decisions so later runs never re-nag.
panevis
Package panevis orchestrates hiding and showing a teammate's tmux pane without killing its process.
Package panevis orchestrates hiding and showing a teammate's tmux pane without killing its process.
permmode
Package permmode is the shared permission-mode vocabulary for cc-fleet's claude launchers (spawn teammates and run sessions): the --permission-mode enum, its validation, and the enum→CLI-flag mapping.
Package permmode is the shared permission-mode vocabulary for cc-fleet's claude launchers (spawn teammates and run sessions): the --permission-mode enum, its validation, and the enum→CLI-flag mapping.
procintrospect
Package procintrospect provides the small set of process-introspection operations cc-fleet performs by reading process state: a process's argv, its immediate child pids, and the whole process table.
Package procintrospect provides the small set of process-introspection operations cc-fleet performs by reading process state: a process's argv, its immediate child pids, and the whole process table.
profile
Package profile generates the per-vendor JSON files that Claude Code loads via its `--settings` flag (a.k.a.
Package profile generates the per-vendor JSON files that Claude Code loads via its `--settings` flag (a.k.a.
redact
Package redact masks key-like tokens in any text that may flow into a JSON envelope or error message.
Package redact masks key-like tokens in any text that may flow into a JSON envelope or error message.
run
Package run implements `cc-fleet run <vendor>` (lane 0): launch an interactive foreground claude REPL backed by a vendor's profile + default model, by replacing the cc-fleet process via exec.
Package run implements `cc-fleet run <vendor>` (lane 0): launch an interactive foreground claude REPL backed by a vendor's profile + default model, by replacing the cc-fleet process via exec.
secrets
Package secrets dispatches vendor API-key lookups across pluggable backends.
Package secrets dispatches vendor API-key lookups across pluggable backends.
selfupdate
Package selfupdate updates the cc-fleet binary and its Claude Code plugin to the latest GitHub release.
Package selfupdate updates the cc-fleet binary and its Claude Code plugin to the latest GitHub release.
sessiontitle
Package sessiontitle resolves human-readable Claude Code session titles from transcript metadata.
Package sessiontitle resolves human-readable Claude Code session titles from transcript metadata.
spawn
Package spawn orchestrates the end-to-end "spawn a vendor teammate" flow: vendor probe, profile install, fingerprint apply, team registration, and tmux split-window.
Package spawn orchestrates the end-to-end "spawn a vendor teammate" flow: vendor probe, profile install, fingerprint apply, team registration, and tmux split-window.
subagent
Package subagent runs a ONE-SHOT, HEADLESS vendor subagent: it launches `claude -p` backed by a third-party vendor model (via the vendor profile's --settings + --model) and returns the result synchronously.
Package subagent runs a ONE-SHOT, HEADLESS vendor subagent: it launches `claude -p` backed by a third-party vendor model (via the vendor profile's --settings + --model) and returns the result synchronously.
teamhist
Package teamhist persists a board-observed snapshot of every live team so a team cleaned up by its lead keeps a presence on the Agents Board until the user deletes the record.
Package teamhist persists a board-observed snapshot of every live team so a team cleaned up by its lead keeps a presence on the Agents Board until the user deletes the record.
teardown
Package teardown removes cc-fleet teammates and team state.
Package teardown removes cc-fleet teammates and team state.
tmux
Package tmux is a thin subprocess wrapper around the `tmux` binary covering the operations cc-fleet's spawn / teardown / ps / hide-show flows need: pick a spawn target, split a window to host a teammate or create a tiled swarm session, enumerate / kill panes, kill a server, and break / join panes for hide/show.
Package tmux is a thin subprocess wrapper around the `tmux` binary covering the operations cc-fleet's spawn / teardown / ps / hide-show flows need: pick a spawn target, split a window to host a teammate or create a tiled swarm session, enumerate / kill panes, kill a server, and break / join panes for hide/show.
tui
Package tui implements the interactive terminal UI shown when cc-fleet is run bare (no subcommand) from an interactive terminal.
Package tui implements the interactive terminal UI shown when cc-fleet is run bare (no subcommand) from an interactive terminal.
userops
Package userops implements the user-layer CRUD operations behind `cc-fleet init / add / edit / remove / list / repair / uninstall`.
Package userops implements the user-layer CRUD operations behind `cc-fleet init / add / edit / remove / list / repair / uninstall`.
vendorclass
Package vendorclass is the one shared place that turns a raw vendor failure into a stable, key-safe classification.
Package vendorclass is the one shared place that turns a raw vendor failure into a stable, key-safe classification.
version
Package version exposes the cc-fleet build version.
Package version exposes the cc-fleet build version.
workflow
Package workflow is cc-fleet's deterministic orchestration runtime: it runs a Starlark script that fans out vendor subagent leaves, in a cc-fleet process OFF the main Claude context.
Package workflow is cc-fleet's deterministic orchestration runtime: it runs a Starlark script that fans out vendor subagent leaves, in a cc-fleet process OFF the main Claude context.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL