Skip to content
bay
How it worksFleetRoadmapDocsBlogGitHub ↗
Early access
Docs menu

Start here

  • Overview
  • Install
  • Quickstart
  • Concepts

Using bay

  • Agents and hooks
  • Executors

Configure

  • Configuration
  • Keys and the registry

Reference

  • Update
  • CLI reference
  • Results and refusals

Start here

  • Overview
  • Install
  • Quickstart
  • Concepts

Using bay

  • Agents and hooks
  • Executors

Configure

  • Configuration
  • Keys and the registry

Reference

  • Update
  • CLI reference
  • Results and refusals

Start here

Quickstart

Install bay, set your checks, start an executor, then start and land a first change.

bay is in development. These pages describe bay as it will ship.

  1. 01

    Install bay

    Run the script on each machine that runs agents or an executor.

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

    Check the machine

    Fix each red row before you go on. Each red row names its fix.

    sh
    bay doctor
  3. 03

    Configure the repository

    .bay/config.toml names trunk, the remote, and the check adapter. The check adapter reads a bay.check.request/1 document on stdin. It writes a bay.check.result/1 document on stdout. Configuration lists every key.

    toml
    # .bay/config.toml
    trunk = "main"
    remote = "origin"
    
    [check]
    command = "scripts/bay-check"
    
    [agent]
    product = "claude"
  4. 04

    Set the required checks

    .bay/policy.toml on trunk lists each required check. Each check needs expected_minimum, the least number of tests it must collect. The adapter list names every file that decides a pass. bay runs those files from the base, never from the candidate.

    toml
    # .bay/policy.toml (on trunk)
    revision = 5                       # an integer; every policy change raises it
    
    [[check]]
    id = "tests"
    environment = "linux-x86_64"
    command = "scripts/bay-check tests"
    adapter = ["scripts/bay-check", "scripts/bay-check.d/", "pytest.ini"]
    inputs = []                        # inputs beyond the tree; "commit" keys evidence by commit
    expected_minimum = 400             # required, no default
    timeout_s = 1800
    path = ["/usr/local/bin", "/usr/bin", "/bin"]   # absolute directories; the check's PATH
    env = ["DATABASE_URL"]             # the only variables passed from the executor
    
    [[quarantine]]                     # optional: one check set aside for a stated time
    id = "tests"
    environment = "linux-x86_64"
    reason = "red on trunk since change k3m9p1; fix in progress"
    end = "2026-10-25"                 # a date or a Change-Id
  5. 05

    Run an executor

    The executor finishes each landing after its agent leaves. Run it under a supervisor, and run at least two.

    sh
    bay executor run
  6. 06

    Start a change

    The agent names its intent and the paths it needs. bay opens a sparse view of those paths and prints its result.

    sh
    bay start CARD-123 --paths src/api tests/api
  7. 07

    Edit, then land

    The agent edits files in the view. bay land returns at once with an operation id. The executor checks the candidate and lands it on trunk.

    sh
    bay land
  8. 08

    Read the state

    bay status shows each change, its state, and why it waits. A refusal names what you can still do and when to retry.

    sh
    bay status
← PreviousInstallNext →Concepts
how it worksfleetroadmapblog© 2026 bay contributors · MIT
Built by Gudjon Gudjonsson, founder and CEO of OZ →Sponsored by OZ