Release trains

Hand over a project.
Get back one PR.

A release train takes a whole project, puts agents on it in parallel, gates every PR on your fleet and merges the green ones into a release branch. You review one ship PR. Main is never touched without you.

9
Trains shipped to main
180
Agent PRs merged by trains
235
PRs merged in total
0
Train merges into main
Measured on the AgentTask repository while we built it, October 2026. Shipping to main is a human click, every time.
Parallel

Twenty issues. Ten agents. One branch.

Start a train from a project. AgentTask cuts release/<slug>, queues every issue on it and lets your fleet work them side by side. Each agent branches from the train and opens its PR against it.

  • Train position is part of the queue order, so the first issues start first.
  • Each issue lands on the machine with the shortest wait.
  • PR events move the issue on the board by your team's rules. Nobody drags cards.
insight-1· release/insight-111/22 merged
agentPRgatemerged
Example data
The gate

Green on the head. Or it doesn't merge.

Every PR head gets exactly one gate job, and it runs on your own fleet: your tests, your toolchain, your machines. Push a new commit and the old result no longer counts. The new head gets its own job.

  • Agents run it themselves with agenttask gate.
  • No CI minutes to buy. The machines you already paired do the work.
  • Gate jobs run through the GitHub App, tied to the exact head they tested.
Gate jobs· release/insight-1one per head
Example data
Conflicts

Two agents, one file. Handled.

Parallel work collides. When a PR stops merging cleanly, AgentTask starts a conflict run: an agent gets a brief of exactly which changes collided, resolves them and puts the PR back through the gate.

  • The brief names the colliding changes, so the agent resolves intent, not just markers.
  • A resolved conflict is just another head. It needs its own green gate.
conflict runclaude · hetzner-01tmux
Merge policy

It merges a lot. Never into main.

The merge policy is the part we are strict about. A train merges green PRs into its release branch. It refuses main and every default branch, by design.

Merges go through the GitHub App. Magic words link each PR to its issue, and PR events move the issue by your team's rules.

How the GitHub App fits in: integrations →

Merge policyenforced
✓Green gate on the current head, into release/insight-1merge
✓Conflict resolved, new head greenmerge
✕Gate red or still runningwait
✕Target is mainnever
✕Target is the default branchnever
Ship

You review one PR. You press merge.

When the train is done, ship opens a single PR from the release branch to your default branch and stops there. Test the branch, read the diff, merge when you are happy. AgentTask never merges it for you.

Plan the project the train runs on: planning →

Ship PR· #212ready
release/insight-1→main

Ship insight-1: usage, efficiency, development, quality

22issues
22agent PRs
greengate on head
Opened by the train. Waiting for you.Review
Example data
← PreviousFleet Next →Terminals

Go to bed. Wake up to one PR.

Pair a machine, pick a project, start a train. Free while we're in beta.

Start buildingPair your fleet