firstintent/ccteam
ccteam turns the coding agents you already run (Claude Code, Codex, Grok, DeepSeek Harness, Kimi, Pi) into one team — any session can spawn, dispatch, and collect work from any vendor on any machine, while you steer it all from Telegram, Lark, or a browser tab. 把你在用的编程 agent 编成一支团队,跨厂商跨机器派活,Telegram/飞书/网页统一指挥。
ccteam – Orchestrating multiple coding‑agent LLMs
What it is – ccteam is a Rust‑based daemon that lets you run several coding‑assistant models (Claude Code, OpenAI Codex, xAI Grok, Moonshot Kimi, DeepSeek Harness, Pi) together as a single “team”. It provides a thin “connective tissue” that handles:
- identity and authentication for each vendor CLI,
- routing of prompts and tool calls between agents,
- a cost ledger that records usage per model,
- guarantees that a dispatched job is delivered (at‑least‑once) and can be stopped.
How you use it
- Install the vendor CLIs you already have (Claude Code, Codex, etc.) and log in.
- Start the ccteam daemon (
ccteam start). It runs a web server on:7331and prints a LAN URL. - Control the team from any device via:
- a Telegram/Lark/Slack bot (commands start with
/or!), - a lightweight web console (chat‑style UI), or
- programmatically through the REST API (
/api/v1).
- a Telegram/Lark/Slack bot (commands start with
- Create sessions – a session is a single LLM instance. You can spawn many, e.g.
/new codex effort=high # start a Codex worker /new grok # start a Grok worker - Orchestrate either by typing natural language (the LLM will call
agent/agent_readunder the hood) or by writing a flow – a small JavaScript file that usesagent(),parallel(),pipeline(), etc., to define a deterministic workflow. - Monitor the Team page shows a live graph of parent→child delegations, model usage, and dollar cost. The console also displays per‑session context, turn logs, and a cost‑cap pill.
Key concepts
- Session – a running LLM instance (e.g., a Claude Code session) that can receive turns and spawn child sessions.
- Flow – a JS script that programmatically defines a series of
agentcalls; runs are journaled and can be resumed after a daemon restart. - Policy hook – an optional executable (
.ccteam/hooks/pre‑agent) that can approve or reject every delegation, useful for quota or security checks. - MCP tools – six built‑in remote‑procedure calls (
agent,agent_read,agent_stop,status,chat_send_file, plus a discovery alias) that any session or external agent can invoke. - Satellite – a secondary machine that registers with the daemon via a join token, allowing you to run heavy‑weight models (e.g., GPU‑enabled Claude) on a different host while still controlling everything from a single console.
Why it matters
- Leverages strengths of each vendor: Claude for planning, Codex for long‑running code generation, Grok for quick answers, Kimi for cheap bulk work, etc.
- Cost transparency – every turn is logged with the model name and price, so you can set daily caps and see exactly where money is spent.\n- Unified UI – no need to switch terminals; you can manage dozens of parallel sessions from Telegram, Slack, or a browser.
- Extensible – you can add your own skills, personas, or custom policy hooks, and you can call ccteam from any other automation via its OpenAPI spec.
Typical workflow example
# In Telegram
/cd my‑project # select project
/new codex effort=high # start a Codex worker
/new grok # start a Grok worker
@s2 run the test suite # address the Codex session (s2) directly
/status # see which models are running and the cost so far
Or as a flow (branch‑review.flow.js):
const review = agent({vendor:"claude", title:"review", task:"review PR #42"});
const impl = agent({vendor:"codex", title:"impl", task:"implement changes"});
await parallel(review, impl);
Run it with ccteam flow run branch-review.flow.js --budget 5.
Bottom line – ccteam is not a new LLM; it is an orchestration layer that lets developers treat multiple coding‑assistant models as a coordinated team, with a single control surface, cost accounting, and safety hooks.
Fields
- Repository: https://github.com/firstintent/ccteam
- License: MIT
- Primary language: Rust (CLI/daemon) + JavaScript for flows / Node for the DSH plugin.
- Platform: macOS, Linux, Windows (WSL) — binary distribution, no sudo required.
- Target audience: developers who already use one or more coding‑assistant CLIs and want to orchestrate them together, or teams that need a shared cost‑aware console.
- Status: Actively maintained (CI badge, install script, docs).
Related
- Project
- Project
- Project
- Project
- Project