CI/CD for agent-speed development
AI agents open tens of PRs an hour. A serialized merge queue lands one per CI cycle, and every PR behind it goes stale. Conveyor replaces the lock with optimistic concurrency — speculative merge trains, a fast/full gate split, automated post-merge repair, and PRs that regenerate instead of rebase. No server, no database: state lives in git refs, logic runs in your existing GitHub Actions.
The redesign, in one grid
A cheap, change-scoped check gates merging in minutes; the heavy suite moves post-merge and runs continuously.
Queued PRs are tested on top of each other's predicted merges, in parallel. Cumulative positions make failure attribution free.
Post-merge failures bisect to a culprit and dispatch a fix-forward agent — or an auto-revert into the urgent lane.
Agent PRs carry a replayable task manifest. Conflicts and evictions regenerate against fresh main; write-set claims prevent most conflicts up front.
Tested SHA ≡ landed SHA
main ──● (current head)
\
●──────── conveyor/train/1 = main + PR#101 ✓ green
\
●─────── conveyor/train/2 = main + PR#101 + PR#104 ✓ green
\
●────── conveyor/train/3 = main + PR#101 + PR#104 + PR#107 ● running
# positions 1–2 green → main fast-forwards to train/2's merge commit.
# The SHA that was tested is byte-for-byte the SHA that lands.
One config file, four generated workflows
npm install -g conveyor-ci
cd your-repo
conveyor init # conveyor.yml + workflows + labels
# conveyor.yml — the two mandatory lines:
fast_check:
run: pnpm turbo run test --filter="...[origin/main]" # target < 10 min
full_check:
run: pnpm test && pnpm playwright test # runs post-merge
conveyor merge 101 102 103 # enqueue; the train does the rest
Dogfooded from day one. The Conveyor repository merges through its own train: main requires a green fast-check on the exact landed SHA, direct pushes are disabled, and every change since bootstrap has ridden a train position — including the fixes for the three bugs the first two PRs uncovered.