Orchestrate a team of specialized AI agents to build software together
Claude Minions coordinates multiple AI agents — each with a defined role — to collaborate on your codebase through GitHub. Agents communicate via group chat, create issues, implement features on branches, and open PRs for your review.
Note: In the default
askmode, agents have limited autonomy in daemon/chat mode — Claude Code's safety prompts cannot be approved without an interactive terminal. You can manually approve interactively viaminions tap. For fully autonomous multi-agent workflows, run inyolomode on a sandboxed server (EC2, Docker). See Permissions & Modes for details.
- Multi-agent collaboration — PM, architect, engineers, and QA agents work together through a shared chat, coordinating via
@mentions - Isolated workspaces — Each agent gets its own repository clones and working directory. No conflicts, parallel work by default
- GitHub-native workflow — Agents create issues, open PRs, and use labels for task assignment.
- Interactive tap-in — Drop into any agent's session to see its full conversation history and collaborate directly
- Session persistence — Agents resume where they left off across restarts, retaining full conversation context
| Role | Name | Purpose |
|---|---|---|
| PM | Product Manager | Monitors issues, tracks priorities, communicates with the team |
| CAO | Chief Agent Officer | Technical architect — designs solutions and breaks work into tasks |
| FE | Frontend Engineer | Implements UI features, creates branches and PRs |
| BE | Backend Engineer | Implements APIs, services, and data models |
| QA | QA Engineer | Validates PRs by running tests and verifying changes |
- Node.js 20+
- Claude Code CLI installed and authenticated (
curl -fsSL https://claude.ai/install.sh | bash, thenclaudeto log in) - GitHub personal access token (for agent GitHub operations)
- GitHub account with SSH access configured (for repository cloning)
git clone https://github.com/ddluc/claude-minions.git
cd claude-minions
npm install
npm link # Makes 'minions' globally availablecd your-project
minions initThis walks you through mode, repos, roles, and permissions, then creates a minions.json config file, a .minions/ directory, and a .env template.
Add your GitHub token to the .env file generated by minions init:
GITHUB_TOKEN=ghp_your_github_personal_access_token
The GITHUB_TOKEN is injected into each agent's environment so they can create issues, open PRs, and interact with your repositories via the gh CLI.
minions up runs the server and daemon in the foreground. Open a separate terminal for chat:
# Terminal 1: Start the server and daemon
minions up
# Terminal 2: Open group chat to talk to agents
minions chat
# Or tap into a specific agent's session
minions tap cao| Command | Description |
|---|---|
minions init |
Initialize a new workspace with minions.json and .minions/ directory |
minions up |
Start the WebSocket server and daemon (foreground — Ctrl+C to stop) |
minions tap <role> |
Tap into an agent's session interactively with full conversation history |
minions chat |
Open interactive group chat to message agents via @mentions |
All configuration lives in minions.json at your project root.
{
"mode": "ask",
"repos": [
{
"name": "my-app",
"url": "git@github.com:you/my-app.git",
"path": "my-app"
}
],
"roles": {
"cao": { "model": "opus" },
"be-engineer": { "model": "opus" },
"fe-engineer": { "model": "sonnet" },
"qa": { "model": "sonnet" }
},
"ssh": "~/.ssh/id_ed25519",
"permissions": {
"allow": ["Bash(npm run test *)"],
"deny": ["Bash(rm -rf *)"]
}
}"ask" or "yolo". Controls the permission mode for all agents. In ask mode, Claude Code may prompt for approval on sensitive operations. In yolo mode, all operations are auto-approved. See Permissions & Modes for details.
Array of repositories to clone into each agent's workspace.
"repos": [
{
"name": "my-app",
"url": "git@github.com:you/my-app.git",
"path": "my-app"
}
]Each repo is cloned into .minions/<role>/<path>/ when the agent is initialized.
Object defining which agent roles to enable and how to configure them. Valid roles: pm, cao, fe-engineer, be-engineer, qa.
"roles": {
"cao": { "model": "opus" },
"be-engineer": { "model": "sonnet" }
}Each role accepts:
model— Claude model to use:"opus","sonnet", or"haiku"enabled— Set tofalseto disable a role without removing its config (defaults totrue)personality— Array of communication style tags (optional, see below)systemPrompt— Custom system prompt text (optional)systemPromptFile— Path to a custom prompt file, appended to the agent's built-in instructions (optional)permissions— Role-specific permission overrides withallowanddenyarrays (optional)
Personality tags shape how an agent communicates without affecting its reasoning or work quality. Assign one or more tags from the predefined set:
concise, enthusiastic, patient, assertive, cranky, witty, formal, casual, blunt, sarcastic, cheerful, dry, motivational, stoic
"cao": {
"model": "opus",
"personality": ["assertive", "concise", "blunt"]
}Point to a markdown file with project-specific instructions for a role:
"cao": {
"model": "opus",
"systemPromptFile": "./prompts/cao.md"
}The file content is appended to the agent's built-in instructions when minions up runs. Use this to provide project architecture, coding standards, workflows, or role-specific behaviors. These files are project-specific and should be .gitignored.
Tip: Use
systemPromptfor short inline instructions directly inminions.json.
Global permission rules applied to all roles. These are merged with the default permissions.
"permissions": {
"allow": ["Bash(npm run test *)"],
"deny": ["Bash(rm -rf *)"]
}Global deny rules always win — they cannot be overridden by role-level allow rules.
Path to an SSH key for git operations. The key is copied into each agent's workspace directory so they can clone and push to repositories.
"ssh": "~/.ssh/id_ed25519"WebSocket server port. Defaults to 3000.
"serverPort": 3000Claude Minions uses Claude Code's permission system to control what agents can do.
Agents run with a set of pre-approved permissions (file read/write, git, gh, npm, common shell commands). However, Claude Code may still prompt for approval on sensitive operations like git push or gh issue create. In daemon mode, there is no interactive terminal to approve these prompts — blocked operations fail silently. This mode works well for interactive minions tap sessions where you can approve prompts directly.
Agents run with --dangerously-skip-permissions — all operations are auto-approved with no prompts. This gives agents full autonomous capability: they can commit, push, create issues, and open PRs without intervention.
Recommended: For fully autonomous multi-agent workflows, run Claude Minions on a sandboxed server (e.g., EC2 instance, Docker container) in
yolomode. Localaskmode is great for supervisedtapsessions but limits what agents can do autonomously via the daemon.
Every agent gets these permissions out of the box (configurable via minions.json):
- File operations: Read, Write, Edit, Glob, Grep
- Shell commands: git, gh, npm, npx, ls, mkdir, rm, touch, cat, cp, mv, echo, chmod, pwd, curl
Add custom rules per-role via the permissions.allow and permissions.deny fields in your config. Global deny rules always win — they cannot be overridden by role-level allow rules.
In the group chat, @mentions route messages to specific agents. There are also special mentions:
| Mention | Description |
|---|---|
@<role> |
Route a message to a specific agent (e.g., @cao, @be-engineer) |
@all |
Broadcast to all enabled agents |
@status |
Show the processing state and queue depth for every agent |
Multiple agents can be mentioned in a single message (e.g., @cao @be-engineer please coordinate on the API design).
- Start small — Begin with one or two agents before scaling up
- Use SSH keys — Configure SSH for seamless git operations across agents
- Assign models thoughtfully — Opus for planning and complex coding, Sonnet for straightforward tasks, Haiku for lightweight work
- Understand the mode tradeoff —
askmode is safe but limits daemon autonomy (no terminal to approve prompts).yolomode gives full autonomy but should only be used in sandboxed environments - Tap in often — Use
minions tapto check on agents and provide direction
We welcome contributions! Please open an issue to discuss major changes before submitting a PR.
MIT
