switchyard
A delivery workflow for coding agents. Each issue becomes one spec change, built and reviewed in its own git worktree, by agents on whichever providers you list.
The pitch
One session coordinates. For each issue, a planner writes a spec change, an implementer builds it, and a reviewer checks it, all in a worktree of their own. The reviewer runs on a different provider from the implementer when the project lists more than one. You answer the product questions and approve the merges.
It holds no application code. You add your stack on top, and change a
provider or model by editing one file, switchyard/routing.md.
Add it to a repo
$ npm init switchyard@latest Run it from the repo root; an empty repo works too. It adds the workflow files the repo is missing and merges the ones it has, reports each file as added, merged or conflict, and prints the commands that undo the run. It never commits.
Or start from the template
$ gh repo create my-project --template nicoleman0/switchyard --private --clone $ cd my-project $ python3 switchyard/scripts/init-project.py
Who does what
- You Open issues, answer product questions, approve merges.
- Coordinator Splits the work, writes briefs, reviews plans, pushes, opens and merges PRs. Never implements.
- Planner Reads the issue and the code, proposes the OpenSpec change, and stops with numbered questions. Never writes code.
- Implementer Starts fresh, applies the change, runs every check, commits, and writes the PR body. Never pushes.
- Reviewer Starts fresh, on another provider when one is available, checks the diff against the change, and writes a verdict file. Never edits code.
Why it's built this way
Files carry every handoff. The brief, the answers, the change and the review live in the worktree, so no stage works from another session's summary, and the coordinator holds verdicts rather than diffs. Workers can't push: each worktree's push URL is disabled, and a script lists any file changed outside the paths the issue owns. You are asked something at three points: before work starts, after the plan, and at the merge.
Requirements
macOS or Linux, git, Python 3.10 or newer, Node.js, and the
GitHub CLI signed in. Plus any agent CLI with a worker row in
routing.md. Herdr is
recommended for watching workers live; without it, workers run headless
and log each turn.