Start here

Several agents, one repository

How several coding agents share one Git repository without races, double landings or unchecked merges.

Give each agent its own change and its own view, and let one process land changes on trunk. With bay, an agent submits a change once. An executor checks the exact candidate and lands it. Agents never push or merge trunk by hand, and every refusal names the next step.

What goes wrong without it

  • Two agents push at once. One push fails, and its agent retries, merges or force-pushes.
  • A check passes on a branch, but trunk moved before the merge. What lands was never checked.
  • A retry after a lost reply lands the same work twice.
  • An agent edits a file that another change just changed, and nobody tells it until a merge conflict.

What bay does

Needbay
Work apartbay start <intent> --paths <paths> opens a change and a sparse view of its paths.
Submit oncebay land returns at once. An executor finishes the landing after the agent leaves.
Land what was checkedThe executor checks the exact candidate. Trunk gets only that candidate.
Trunk moved meanwhileTRUNK_MOVED: bay retries once more, then joins the queue.
No double landingbay records each step by op id, so a crash loses no work and a retry never lands twice.
A stale inputINPUT_CHANGED refuses the landing until the agent reads the new version and checks again.
See the othersbay status --fleet shows every machine and session. bay watch lists what changed.
Ask another agentbay talk asks one agent for one change, decision or check, with a reply time.
Know why it landedEvidence of every check stays in Git, signed once keys are enrolled.

Limits

  • One trunk lands at most 1,440 divided by the check minutes changes a day.
  • bay ships for macOS and Linux. On Windows, use the Linux build inside WSL.
  • Early refusals in hooks need Claude Code today; with other agents, a stale change still cannot land.

Try it

Install bay, then follow the Quickstart to land a first change.

sh
curl -fsSL https://getbay.io/install.sh | sh