ruv-swarm
Version:
High-performance neural network swarm orchestration in WebAssembly
193 lines (140 loc) • 5.13 kB
Markdown
# GitHub Coordinator for ruv-swarm
Simple GitHub-based coordination for multiple Claude Code swarms working on the same repository.
## Quick Start
### Option 1: GitHub CLI (Recommended)
The simplest approach uses the GitHub CLI (`gh`) that you already have:
```bash
# Install gh CLI if not already installed
# https://cli.github.com/
# Use the coordinator
npx ruv-swarm github-coordinate
# Or use directly in your swarm
const GHCoordinator = require('./gh-cli-coordinator');
const coordinator = new GHCoordinator({
owner: 'ruvnet',
repo: 'ruv-FANN'
});
# Get available tasks
const tasks = await coordinator.getAvailableTasks();
# Claim a task
await coordinator.claimTask('my-swarm-id', issueNumber);
# Update progress
await coordinator.updateTaskProgress('my-swarm-id', issueNumber, 'Working on authentication...');
```
### Option 2: Claude Code Hooks
Add automatic GitHub coordination to your Claude Code sessions:
1. Add to `.claude/settings.json`:
```json
{
"hooks": {
"pre-task": "npx ruv-swarm hook github pre-task",
"post-edit": "npx ruv-swarm hook github post-edit",
"post-task": "npx ruv-swarm hook github post-task"
}
}
```
2. Set environment variables:
```bash
export GITHUB_OWNER=ruvnet
export GITHUB_REPO=ruv-FANN
export CLAUDE_SWARM_ID=my-swarm-123 # Optional, auto-generated if not set
```
3. Now Claude Code will automatically:
- Claim GitHub issues when starting tasks
- Update issues with progress
- Release issues when done
### Option 3: GitHub MCP Server
If you have a GitHub MCP server, you can use it directly:
```javascript
// Use GitHub MCP tools
mcp__github__issues_list({ state: 'open', labels: ['swarm-available'] })
mcp__github__issues_update({ number: 123, labels: ['swarm-claimed'] })
mcp__github__issues_comment({ number: 123, body: 'Progress update...' })
```
## How It Works
### Task Coordination via GitHub Labels
The system uses GitHub labels to coordinate work:
- `swarm-available` - Tasks ready to be claimed
- `swarm-{id}` - Task claimed by a specific swarm
- `swarm-conflict` - Multiple swarms trying to work on same area
### Workflow
1. **Task Discovery**: Swarms check for open issues without swarm labels
2. **Task Claiming**: Add a `swarm-{id}` label to claim an issue
3. **Progress Updates**: Post comments with progress updates
4. **Task Completion**: Remove label or close issue when done
### Conflict Prevention
- Each swarm has a unique ID
- Issues can only have one `swarm-*` label
- Comments show which swarm is working on what
- Dashboard shows all active swarms and their tasks
## Examples
### Basic Coordination
```javascript
// Initialize coordinator
const coordinator = new GHCoordinator({
owner: 'ruvnet',
repo: 'ruv-FANN',
labelPrefix: 'swarm-' // default
});
// Get coordination status
const status = await coordinator.getCoordinationStatus();
console.log(`${status.swarmTasks} tasks being worked on`);
console.log(`${status.availableTasks} tasks available`);
// Show swarm assignments
for (const [swarmId, tasks] of Object.entries(status.swarmStatus)) {
console.log(`Swarm ${swarmId} is working on:`);
tasks.forEach(task => console.log(` - #${task.number}: ${task.title}`));
}
```
### With Claude Code Integration
When using the hooks, Claude Code will automatically coordinate:
```bash
# Start a task - automatically claims related GitHub issue
claude> Can you fix the authentication bug?
🎯 Pre-task: Looking for GitHub issues related to: fix authentication bug
✅ Claimed GitHub issue #123: Fix JWT token validation
# Make changes - automatically updates issue
claude> [edits auth.js]
📝 Updated GitHub issue #123 with edit progress
# Complete task - automatically updates/releases issue
claude> I've fixed the authentication issue
✅ Task Completed on GitHub issue #123
```
### Manual Coordination Commands
```bash
# Check coordination status
npx ruv-swarm github status
# List available tasks
npx ruv-swarm github tasks --available
# Claim a specific task
npx ruv-swarm github claim 123
# Release a task
npx ruv-swarm github release 123
# Show dashboard URLs
npx ruv-swarm github dashboard
```
## Configuration
### Environment Variables
- `GITHUB_OWNER` - Repository owner
- `GITHUB_REPO` - Repository name
- `GITHUB_TOKEN` - Personal access token (optional, uses gh CLI auth)
- `CLAUDE_SWARM_ID` - Unique swarm identifier
### Label Configuration
Customize the label prefix in the coordinator:
```javascript
const coordinator = new GHCoordinator({
labelPrefix: 'ai-swarm-' // Use custom prefix
});
```
## Benefits
1. **Simple**: Uses existing GitHub features (labels, comments)
2. **Visible**: All coordination visible in GitHub UI
3. **No Extra Infrastructure**: Just needs `gh` CLI
4. **Conflict-Free**: Labels prevent duplicate work
5. **Auditable**: Full history in GitHub
## Limitations
- Requires GitHub CLI or API access
- Limited to GitHub's rate limits
- Basic conflict detection (label-based)
- No real-time updates (polling-based)
For more advanced coordination, consider using the full GitHubCoordinator with a database backend or a dedicated MCP server.