A multi-machine task dispatch system for Claude Code. Drop tasks into GitHub Issues, hive routes them to the right machine, swarm does the work.
GitHub Issue ──→ Hive polls ──→ Claims task ──→ Swarm orchestrates ──→ PR created
(label: hive) every 5min (atomic label) (branch, code, test) (issue updated)
- Claude Code installed
- Swarm installed (
bash ~/dev/swarm/install.sh) - GitHub CLI authenticated (
gh auth login) jqinstalled (brew install jq)
git clone https://github.com/simoncoombes/hive.git ~/dev/hive
bash ~/dev/hive/install.sh
bash ~/dev/hive/scripts/hive-register.sh # register this machineCreate an issue on any registered repo:
Title: Add rate limiting to API gateway
Body: Implement Redis-backed rate limiting...
Labels: hive
Add a machine label:
Labels: hive, machine:simon-macbook
/dispatch simoncoombes/platform-plugins#42
/kanban board
# Poll every 5 minutes
crontab -e
*/5 * * * * ~/.claude/scripts/hive-poll.sh --once >> ~/.hive/poll.log 2>&1| Label | State | Meaning |
|---|---|---|
hive |
Backlog | Ready for processing |
hive + machine:X |
Targeted | Only machine X should process |
hive:claimed |
In Progress | A machine is working on it |
hive:done |
Complete | PR created, ready for review |
hive:failed |
Failed | Worker failed, unclaimed for retry |
// ~/.hive/machine.json
{
"machine_id": "simon-macbook",
"repos": [
{"owner": "simoncoombes", "name": "platform-plugins", "path": "/Users/simon/dev/platform-plugins"}
],
"labels": ["machine:simon-macbook"]
}hive/
├── scripts/
│ ├── hive-poll.sh # Polls GitHub for new tasks
│ ├── hive-claim.sh # Atomic task claiming
│ ├── hive-worker.sh # End-to-end task processing
│ ├── hive-report.sh # Updates issues with results
│ └── hive-register.sh # Machine registration
├── commands/
│ ├── kanban.md # /kanban — view task board
│ └── dispatch.md # /dispatch — manual task processing
├── agents/
│ └── dispatch-worker.md # Worker agent for task processing
├── config/
│ └── machine.json.template
├── install.sh
├── uninstall.sh
└── README.md