Start here

Run bay without an executor

A small team can merge with bay from its own machines, with no executor to host or keep running.

A small team can use bay with no executor at all. bay land --wait runs the whole merge on the machine that asks for it. It builds the candidate, runs the checks, and pushes the result to main. Nothing else has to stay on, and your clone stays on your own machines.

This suits a few people with a few changes a day. A fleet of agents that should submit and leave still needs an executor.

When to use it

  • A small team: two or three people, each merging their own work from their own machine.
  • A private repository: you would rather not clone it onto a shared box.
  • A first trial: try bay before you decide where an executor should run.

Merge from your machine

Run bay land --wait from the change's view. It returns the real outcome: merged, refused with a reason, or failed. Checks run in the sandbox on your machine: bwrap on Linux, sandbox-exec on macOS. Without a key registry, the merge is unsigned, and results say trust: unsigned. Leave [executor] command out of .bay/config.toml. With it set, bay land --wait first submits to that command, and fails when the command cannot take it.

sh
bay land --wait

If your machine sleeps

The push to main is one atomic step, so main never gets half a merge. When the machine wakes, bay land --wait reads the change's record and goes on. If main moved, it checks again. If its own lease ran out, it takes it back. If it slept after the push, bay reads the first result and never merges twice. Until the machine wakes, the change waits, unless you also run an executor, which may finish it for you.

Approvals without an executor

An approval counts only with a key registry and an enrolled approver key. Without a registry, no approval counts, and the refusal says so. With a registry, the merging machine also signs as executor and producer, so it needs those keys too. So each merging machine enrols three keys: executor, producer and approver. Require a person's approval shows how to enrol an approver and record a yes.

When to add an executor

  • Agents should leave: an executor finishes each merge after bay land returns at once.
  • Machines sleep or move: an always-on executor keeps merges going.
  • More changes a day: the throughput settings need executors to run checks side by side.
  • Targets that follow main: only bay executor run moves a target that sets advance = true.

Not built yet

  • A signing mode where only approvals must be signed, and merges and checks may stay unsigned.
  • bay save, which turns your uncommitted edits into a merged change in one step.

Limits

  • An operation's lease lasts [executor] lease_s, 60 seconds by default.