Get it for macOS

Run a standing team of agents that message each other, hand off work and wait for you only when they need an answer. You describe the team once in a crew.yaml: each member gets a fixed address, its own provider and model, a role and its own worktree, and every member is a thread in the sidebar. Several crews in one project coordinate through their leads, BB Tasks and the base branch, with a step limit so they cannot loop forever. A project overview shows who works, who waits and every cross-crew message. Merge and rebase need the repository on the machine BB runs on.


Overview

View source

A team that stays

A Graph Studio flow ends; a crew stays. You describe the team once in a crew.yaml — groups of members, each with a fixed address such as dev-owner@pair, its own provider and model, a role and permissions — and bb crew apply reconciles the file against BB threads. The lead's thread is the parent, every member is a child thread in the sidebar. Change the file and apply again: only the difference is applied, and bb crew plan shows it first.

Members talk to each other

Members message each other by address, share a channel and a work queue, and hand off work with a subject such as a task key. Writing members get their own worktree; readers share the crew's. A member that waits for you shows up in Needs you with its question — including a Graph Studio run of theirs that is sitting on a human node.

Running a Graph Studio graph from a member

graphs: on a member (inherited from the crew/group, like instructions and the new skills:) names which graphs it may run; crew_graph_run(graph, input) starts one and blocks until it finishes, carrying the member's address, key and role into the run's input. Every run is linked back to its member and shows with its live status on the member card; bb crew stop cancels open runs and bb crew delete --threads delete also removes their worker threads.

Several crews in one project

Crews in the same project coordinate through their leads, BB Tasks and the base branch. By default only leads may message another crew; open and none widen or close that. A lead can wait for another crew's work with waitsFor and is woken exactly once when it is merged. A reply chain stops after a step limit, so two crews cannot ping-pong forever.

See who works

Crews in the sidebar opens one zoomable canvas with four levels: all projects → one project → one crew → one member. Every card shows its state — running, stopped, or waiting on you — and the header counts Needs you across all projects. BB Tasks labelled crew-<crew> are drawn as edges to the crew working on them, and lines between crews show lead-to-lead traffic. A crew's side panel holds its members, a table with the feed, and an editor for the crew file (YAML and form, with a preview identical to bb crew plan and one Apply button). ::crew{crew="…"} renders a live card in chat.

Needs you lists only what needs a decision: an open question or approval, a merge request, a merge conflict, a stopped loop with its reason, or a graph run waiting on a human node. Settled items drop out on their own.

Merge requests inside the crew

A member delivers its work as a merge request. You approve or reject it, or an integrator member merges it after the crew's checks pass; a rebase conflict is reported back to the member instead of being forced.

From the command line

bb crew templates          # pair, trio, research
bb crew plan trio
bb crew apply crew.yaml
bb crew ps
bb crew needs
bb crew send dev-impl@trio "Start with step 1" --subject TASK-1
bb crew stop trio

Agents inside a crew use the same functions as tools, for example crew_send, crew_peers and crew_directory. Graph Studio can run a step on a crew member through its member node, and a member with graphs: set can run a Graph Studio graph itself with crew_graph_run.

Requirements and limits

Requires BB 0.44 or later and Plugin SDK 0.5.29 or later. No extra service or account; members run on the providers BB is already configured with.

Merge, rebase and checks run git on the machine BB runs on. Worktrees on other hosts are refused for integration with a clear reason; support for remote hosts is planned. BB has no read-only permission mode, so permissions: ask runs as accept-edits and a checker stays read-only by its role.

More from sajov

More in Agents & Providers 55

Add, choose, configure, route, or coordinate who runs a thread.

View all