How it works:
- Polls `gh issue list` every 30 seconds for new issues - Claims an issue, spins up a git worktree (instant, shares the object database — no full clones) - Launches a Claude Code agent into that isolated workspace - When the agent opens a PR, Baton releases the slot and picks up the next issue - If one agent trashes its branch, the others don't care
Everything is configured in a single WORKFLOW.md file — YAML config + Jinja2 prompt template. It reloads on each poll cycle so you can tune it without restarting.