bay 0.4.0: large files, locked files and clear retries
Gudjon Gudjonsson · Founder and CEO of OZ · 24 October 2026
bay 0.4.0 is out today. bay is for teams that run many coding agents in one codebase, often on the same files. Git itself is fine, but the human-paced branch and merge workflow breaks at that speed. With bay, each agent submits once, and bay merges only what passed on the latest main. This release reaches past source code: large files, files that never merge, and clearer refusals.
Large files stay out of Git
A video, a design file or a data set makes every clone slow once it enters Git. With [plugin.assets], a new file over max_file_mib goes to your own store instead.
- Files come back by hash: in another clone at
bay install, in views, and read-only in checks. - Merged only when stored: a change merges its large files only when the store holds their bytes.
- A purge never blocks: a store may drop a file's bytes, and later merges go on without it.
One editor at a time
Some files never merge, such as a design file or a scene. Name them in [locks] paths, and the first edit takes the file's lock. The hook stops a second agent's edit early, so no work is lost to a clash. A change to such a file merges only while it holds the lock.
When to retry, in seven words
Every refusal names a fixed reason, the actions you can still take, and retry_when. retry_when takes one of seven plain values, so an agent sorts a refusal at a glance. next_step then names the exact step.
retry_when | Before a retry can succeed |
|---|---|
by_itself | Nothing from you: bay retries on its own. |
after_wait | Another change, session or holder finishes first. |
after_fix | You repair the change, then submit it again. |
after_person | A person approves the change or lifts a hold. |
after_setup | Something on the machine changes: an install, a key, the config, an update or the network. |
after_new_main | Main changes first, for example a repair that turns it green. |
never | No retry can succeed. |
Main keeps the agent's words
Main's commit carries the agent's own message, with Open: lines for what is left. So git log on main shows what each agent did and what it left open.
Commands that say what they do
- Everything at once:
bay status --allshows every machine, session and runner of the repository. - Every branch:
bay status --branchesclasses each branch on the remote, and names local work that no remote holds. - A host in one step:
bay host <path>creates a bare repository whose main only moves forward. - One name for each thing: the process that checks and merges is a runner, in every command, key and field.
Get started
bay is free and open source under the MIT licence, with no paid tier and no account. Install bay, then follow the quickstart to merge your first change. 0.x means a minor release can still change a command, and the changelog names each change.
curl -fsSL https://getbay.io/install.sh | shGudjon Gudjonsson · Founder and CEO of OZ