Get it for macOS

Turns one bb team init command into a full agent team for a project: a lead that assigns work packages, plus developers and testers that report back to it. Roles, providers, and models are pinned in .bb/team.yaml; every executor spawns as a child thread of the lead, so reports and blockers flow to one place. Existing threads join through a threadId, and re-runs repair missing links instead of duplicating. Works with any provider already installed; no external services.


Overview

View source

Team

Spawn a role-based agent team for a project from a declarative config — a lead that coordinates work, and any number of executors (developers, testers, analysts) that report back to it.

Why

Setting up a multi-agent workflow in bb is manual: you write role prompts from scratch, spawn each thread by hand, paste thread IDs between them, and route messages yourself. Team turns that setup into one config file and one command.

How it works

  1. bb team init — drop a template config (.bb/team.yaml) plus role prompt files (.bb/team/roles/) into a project.
  2. Edit the config: roles, providers, models, environments.
  3. bb team create — spawn the whole team in one command.
  4. bb team status — see the config and the live team threads.

The first role (or the one marked lead: true) becomes the lead thread. Every other role is spawned as its child thread and reports to the lead with bb thread tell. The lead receives a ready-made team roster with clickable thread references, so no one pastes IDs by hand.

Config highlights

version: 1
defaults:
  environment: checkout   # checkout | default | worktree | env:<id>
  parentNotifications: stuck
roles:
  - name: lead
    title: Development lead
    provider: codex
    promptFile: .bb/team/roles/lead.md
  - name: developer
    title: Developer
    provider: pi
    promptFile: .bb/team/roles/developer.md
  - name: tester
    title: Tester
    provider: codex
    promptFile: .bb/team/roles/tester.md
  • Per-role provider and model: pin each role to a provider (codex, pi, claude-code, …) and a concrete model, with optional reasoningLevel, serviceTier, and permissionMode.
  • Shared or isolated environments: all roles in one project checkout, or a separate managed worktree per role.
  • Existing threads: give a role a threadId to adopt a thread you already run instead of spawning a duplicate.
  • Prompt placeholders: {{leadThreadId}}, {{leadThreadRef}}, {{role.<name>.threadId}}, {{projectId}}, {{workspacePath}} are filled in at spawn time.
  • Idempotent: re-running bb team create skips roles that already have threads and repairs missing parent links; --dry-run shows the plan.

Plugin settings

  • Language (en | ru, default en) — CLI output and scaffold templates (config comments, role prompts).
  • Team sidebar section (default on) — team threads live in one section.
  • Send team roster (default on) — the lead gets a roster message after bb team create.

Opt-in per project

The plugin does nothing in projects without .bb/team.yaml. Run bb team init in a project to opt in; other projects are untouched.

Commands

  • bb team init [--project <id|name>] [--force] — write the template.
  • bb team create [--project <id|name>] [--dry-run] — spawn or adopt threads.
  • bb team status [--project <id|name>] — config and live team overview.

All commands support --json and run from any thread or terminal.

More in Agents & Providers 71

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

View all