by ethanhq
🚢 Run Claude Code's ⚙️ Dynamic Workflows, 👥 Agent Teams & ⚡ Subagents on any third-party model — DeepSeek · GLM · Kimi · Qwen … or your Codex subscription. No Anthropic subscription needed. | 🚢 让 Claude Code 的 ⚙️ Dynamic Workflow、👥 Agent Team、⚡ Subagent 用上任意第三方模型 — DeepSeek · GLM · Kimi · Qwen…… 或你的 Codex 订阅,无需 Claude 订阅
# Add to your Claude Code skills
git clone https://github.com/ethanhq/cc-fleetcc-fleet is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by ethanhq. 🚢 Run Claude Code's ⚙️ Dynamic Workflows, 👥 Agent Teams & ⚡ Subagents on any third-party model — DeepSeek · GLM · Kimi · Qwen … or your Codex subscription. No Anthropic subscription needed. | 🚢 让 Claude Code 的 ⚙️ Dynamic Workflow、👥 Agent Team、⚡ Subagent 用上任意第三方模型 — DeepSeek · GLM · Kimi · Qwen…… 或你的 Codex 订阅,无需 Claude 订阅. It has 149 GitHub stars.
cc-fleet's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/ethanhq/cc-fleet" and add it to your Claude Code skills directory (see the Installation section above).
cc-fleet is primarily written in Go. It is open-source under ethanhq on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh cc-fleet against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.

English · 简体中文
Claude Code's multi-agent orchestration — Dynamic Workflows, Agent Teams, Subagents — only runs Anthropic's own models. cc-fleet lets any model with an Anthropic- or OpenAI-compatible API, even your Codex subscription, join as a workflow leaf, a long-lived teammate, or a one-shot subagent — scheduled by your main session, with the same identity and capabilities as a native Claude agent.
Every third-party worker is a real claude process with its LLM backend swapped to the provider, so Claude Code drives it exactly like a native agent. Your main session's own auth (OAuth subscription or API key) is untouched, and provider keys never enter env, argv, or shell history — zero leak risk.
Two steps to get going: one-line install, register a provider. Then state your intent in Claude Code with /workflow, /team, or /subagent — or just describe the task in plain language, and Claude figures out the rest.
No Claude subscription? ccf run <provider> starts an interactive session driven by that provider — the same claude you know, just running on the provider's model.
0. Install Claude Code first — cc-fleet drives the official claude CLI, so install it if you don't have it yet (skip if claude is already on your PATH):
macOS / Linux:
curl -fsSL https://claude.ai/install.sh | bash
Windows (PowerShell):
irm https://claude.ai/install.ps1 | iex
1. Install cc-fleet with the one-line script (recommended) — one command does it all: downloads and verifies the CLI, puts it on your PATH (with a ccf alias, so ccf launches it from then on), and installs the Claude Code plugin (skill + session hook) via the marketplace. Ready to use right after:
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/ethanhq/cc-fleet/main/install.sh | sh
Windows (PowerShell):
irm https://raw.githubusercontent.com/ethanhq/cc-fleet/main/install.ps1 | iex
Other channels (npm / go install / Releases / source) and adding the Claude Code plugin, installer overrides, and requirements & maintenance live in Install & maintenance.
Common commands:
ccf # open the interactive TUI
ccf doctor # health check: dependencies, providers, plugin status
ccf update # self-update by install channel + refresh the plugin
ccf uninstall --all # remove the binary and plugin too
Once installed, run ccf to register a provider and start delegating.
🔌 Provider management — one API key, connected
ccf opens the TUI; choose Add providers sets the default, d deletes🖥️ ccf run — run Claude Code on any provider
ccf run launches an interactive claude on your default provider; ccf run <provider> picks one/model for the model, /effort for thinking effort, Shift+Tab for permission mode⚙️ Dynamic Workflows — the same orchestration API as native workflows
/workflow to kick it off, or just tell Claude: "map each module with deepseek, glm drafts an audit checklist per module, gpt synthesizes"workflow wait blocks until it finishes — event-driven, no pollingx to hold / r to rerun a single leaf or a whole phase👥 Agent Teams — native multi-agent collaboration in tmux panes
/team to kick it off, or just tell Claude: "spawn a glm and a deepseek teammate, then compare their strengths"claude process working live in a side tmux pane — mix providers in one team, hand follow-ups across turnsh hides / s shows a pane — split in the foreground or run in the background⚡ Subagents — the lightest one-shot delegation
/subagent to kick it off, or just tell Claude: "fan out kimi, qwen, and glm over these three files in parallel"slim-ro read-only mode: let a provider analyze your repo safely, without touching code📊 The TUI board — your whole fleet on one screen
ccf launches, press Tab for the Agents Board — every Workflow / Team / Subagent laid out by project → sessionx / r to stop or rerun, p to pin against cleanup, c to clear finished, d to delete, h / s to hide or show a panecc-fleet's capabilities fall into two groups:
ccf run — tools you configure and use directly.Orchestration API: multi-phase orchestration lives in a JavaScript file, with an API identical to Claude Code's native Workflow tool — agent() starts a node, parallel() fans out, pipeline() chains a flow. The one difference is that agent() takes a provider option to assign each node's model, so different vendors mix and run in parallel within a single run:
const meta = {
name: "api audit",
description: "map endpoints, then draft audit checklists",
phases: [{ title: "map" }, { title: "build" }, { title: "judge" }],
};
phase("map");
const maps = (await parallel(
["auth", "billing", "users"].map((m) =>
() => agent("List the exported endpoints in module " + m, { provider: "deepseek" }))
)).filter(Boolean);
phase("build");
const checklists = await pipeline(maps,
(endpoints, _, i) => agent("Draft an audit checklist:\n" + endpoints,
{ provider: "glm", label: "build:" + i }));
phase("judge");
const verdict = await agent("Pick the strongest one and say why:\n" + checklists.join("\n---\n"),
{ provider: "claude", model: "opus", label: "judge" });
return { checklists, verdict };
Running and managing: once kicked off, the whole run executes in a background engine, managed by a small command set. Runs are journaled by content hash, and budgets cap spend in USD or tokens:
RUN=$(ccf workflow run audit.js) # starts in the background, prints the run id
ccf workflow wait "$RUN" --timeout 10m # blocks until done, event-driven
ccf workflow stop "$RUN" --leaf build:1 # hold a single leaf (run keeps going)
ccf workflow restart "$RUN" --leaf build:1 # resume it
ccf workflow run audit.js --resume "$RUN" # replay the journal, finished leaves hit cache
Holding and restarting: ccf workflow stop --leaf / --phase