by Cedr1cSun
Run coding agents as a cluster: one repository, N agents, one worktree each
# Add to your Claude Code skills
git clone https://github.com/Cedr1cSun/chord-cliGuides for using ai agents skills like chord-cli.
See how chord-cli compares with popular alternatives.
chord-cli is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Cedr1cSun. Run coding agents as a cluster: one repository, N agents, one worktree each. It has 54 GitHub stars.
chord-cli'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/Cedr1cSun/chord-cli" and add it to your Claude Code skills directory (see the Installation section above).
chord-cli is primarily written in TypeScript. It is open-source under Cedr1cSun 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 chord-cli against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Run coding agents as a cluster.
One repository, as many agents as you care to start. Each agent works in its own worktree; a shared board records who holds which file; an agent that wants a file another agent holds asks first and waits for the answer; when the work is committed, one call rebases the branch and fast-forwards main. Idle agents are woken the moment a message arrives, so the agents negotiate among themselves while you keep handing out work in plain language.
finish in one step: rebase, fast-forward main, release the claims, tell the others; on a conflict nothing changes and the agent is told to rebase, resolve it and finish again, asking you only if it cannotchord ls for the whole picture, messages and events to replay what happened, stop and clean to wind downOn CooperBench two agents each take one feature in the same repository, and a pair passes when the merged result passes the tests of both features.
| chord vs | gpt-6.1-sol | gpt-6-luna |
|---|---|---|
| solo (one agent, both features) | 76% vs 74% | 63% vs 51% |
| coop + git (messages and a shared git remote) | 76% vs 73% | 63% vs 47% |
| team (a lead hands out the work) | 76% vs 69% | 63% vs 34% |
| coop (messages only) | 76% vs 11% | 63% vs 11% |
On the stronger model chord keeps pace with the best baselines. On the weaker one it is the only two-agent setup that does not fall below a single agent, and it beats the team setting by 20 points. chord's agents got only the feature text, while the coop + git and team prompts spell out how to split and merge the work.
| agent | status |
|---|---|
| Claude Code | supported |
| Codex CLI | supported |
| OpenCode | supported |
| pi | supported |
| Gemini CLI | planned |
| Cursor CLI | planned |
| GitHub Copilot CLI | planned |
| Qwen Code | planned |
| DeepSeek Harness | planned |
A new agent needs three things from its tool: a way to inject hooks and an MCP server at launch, the names and payloads of its hook events, and an idle/busy signal.
finish alone.finish rebases the branch onto main and fast-forwards. A clean rebase that passes the project's test command merges; on a conflict nothing moves, and the agent resolves it and finishes again.With Node 24 and git on the machine:
npm install -g chord-cli
On Linux add --allow-scripts=node-pty, with python3, make and g++ present: node-pty ships no Linux binary and builds one on install. macOS needs nothing more: node-pty ships a binary for it.
Or from source:
git clone https://github.com/Cedr1cSun/chord-cli && cd chord-cli
npm install && npm link
A project is a folder with the repository in a child directory:
my-project/
my-repo/ the main checkout
chord/ chord's own files, outside the repository
In the project folder, one terminal per agent:
chord claude # start an agent
chord codex --name api # start another, named
chord opencode --name web # any mix of tools
chord pi --name docs
chord claude "fix the flaky test in tests/auth" # arguments after the tool name go to the tool
Hand out tasks in those terminals as you always would. From another terminal:
chord ls # agents, what they are on, unread messages, branch state, file claims
chord messages api # what an agent has said and been told
chord events # claims, releases, merges, conflicts
chord stop api # let it finish its turn, then quit
chord clean # remove the workspaces and branches of agents that have left
--name fixes an agent's name, workspace and branch, so launching the same name later returns to the same worktree. chord resume <agent> does that and also reopens the agent's own conversation, for Claude, Codex, OpenCode and pi alike. Run chord in a repository root and it offers to move the repository into a child directory first.
Agents start in the project folder, the same directory you run plain claude, codex, opencode or pi in, so that stays their project too: one /resume list, one CLAUDE.md, one trust answer. Each agent edits only its own worktree under chord/agents/<name>/; chord refuses edits (editor tools, apply_patch) to the main checkout and to other agents' worktrees, and tells the agent off after a shell command that ran there.
| command | what it does |
|---|---|
chord <agent> [--name x] [tool args...] |
start an agent: claude, codex, opencode or pi |
chord resume <agent> [tool args...] |
start an agent that has left again, in its own worktree, reopening its own conversation |
chord ls [--all] |
agents and claims of this project, or of every project |
chord messages [agent] [-n N] |
message history |
chord events [agent] [-n N] |
claim, release, merge and conflict history |
chord stop <agent> |
quit an agent once its turn ends and its input box is empty |
chord clean [--force] [agent...] |
remove offline agents' workspaces, worktrees and branches; work not yet on main stays unless --force |
chord --version |
the installed version |
<project>/chord/config.json:
{ "setup": "npm ci", "test": "npm test" }
setup runs once in every new worktree before the agent starts, with the CHORD_* variables in its environment, so a fresh worktree arrives with its dependencies in place. A failed setup abandons the launch and removes the worktree.
test, when set, runs in the agent's worktree each time finish has rebased the branch onto main, before main moves. If it fails nothing is merged and the agent gets the end of the output: a clean rebase can still break what another agent merged. Other agents' finish waits while it runs.
A repository's own Claude configuration (.claude/settings*.json, .mcp.json) reaches an agent once you have trusted that repository, or the project folder, in Claude Code yourself; the MCP servers you approved there are the ones that start.
claude; chord writes nothing to ~/.claude.json. Codex asks you to review chord's hooks once, and again whenever their definition changes; answer "trust all". chord says so at launch if a hook has been switched off. OpenCode asks nothing: chord hands it the plugin and the MCP server through OPENCODE_CONFIG_CONTENT, so a configuration of your own set in that variable is not read while an agent runs; your global config, OPENCODE_CONFIG_DIR and the project's opencode.json are. pi asks nothing either: chord loads its extension with -e and the extension registers the MCP server for that session, so ~/.pi is not written to.chord/<name> branch and a worktree; chord clean removes them when the agent has left and keeps anything not yet on main.