Get it for macOS

Hand one agent your to-do list and it runs a crew of worker threads, each in its own git worktree, until the work lands. The first mate is a pinned thread in bb's own chat that writes each worker's instructions, supervises it, and brings back branches, pull requests, findings and only the decisions that are yours. A FirstMate tab shows the crew as a board of Queued, Working, Blocked, Parked, Done, Failed and Idle, with Steer, Interrupt, Relaunch and End on every card. A built-in watch tells the first mate within about five minutes when a pull request is merged, reviewed or changes check status. Requires bb 0.47 or later, git, and the logged-in gh CLI for the pull request watch; a capable model such as Claude Sonnet is recommended for the first mate.


Overview

View source

You tell the first mate what you want done; it sends each task to a worker, a bb thread in its own git worktree, so parallel work on one repository never collides. It writes the worker's instructions, supervises it to the end, and brings back finished branches and pull requests, investigation findings, and only the decisions that are really yours. You are the captain.

What you get

  • A first mate in bb's own chat. It is an ordinary pinned thread, so you read its tool calls and talk to it like any other thread. Its workers appear under it in the sidebar.
  • A board of the crew. A FirstMate tab on the first mate's thread sorts every worker into Queued, Working, Blocked, Parked, Done, Failed and Idle, with its last word on what it is doing and a link to its pull request.
  • Control from each card. Steer a worker with a word, interrupt its turn, relaunch it in the same worktree, or end it. Ending a worker whose task is not done asks first.
  • Answers on held cards. A card waiting on your call carries a button for each answer the first mate expects, and a box to type your own; either goes straight to the first mate.
  • Where things stand, on demand. Bearings gives the state of everything. It is a button on the board and an entry in the command palette.
  • Next steps as buttons. The first mate offers what you will probably want next; pressing one sends it as if you had typed it.
  • /fm from any thread. Type /fm and a request in any thread, say /fm run a review loop on this, and the first mate gets it word for word with that thread's id, project and branch, so it knows which work you mean.
  • Autocompact, if you want it. Switch it on for the first mate, the crew or both, and a conversation that has sat idle long enough with a large context is compacted, so the next turn does not resend all of it. You set the token threshold and the idle time.
  • Compact and Restart on the board. Compact frees room in the first mate's conversation. Restart starts it afresh on the same thread; its records and the workers already running carry over. A gear beside them opens the plugin's settings.

How it works

The first mate never merges without your word unless you have said a project may. It writes only in its own home folder, by default ~/FirstMate: its charter, your standing orders, its backlog and its records, all plain files you can read and edit in bb's file panel. Your projects are read-only to it; every change is a worker's job. When the plugin's charter improves and you have edited yours, the new one is put beside it for you to compare.

Watches are small scripts in the home that run on a schedule while bb is running and tell the first mate when they have something to say. A pull request watch is built in: within about five minutes the first mate hears that a pull request on its backlog was merged or closed, got a review or a comment, or had its checks turn red or green. You can add watches of your own, or ask the first mate to write one and approve it first.

Requirements

  • bb 0.47 or newer.
  • A capable model for the first mate, such as Claude Sonnet or better. Workers use the provider and model you set in the settings, or the first mate chooses.
  • git for your projects, and for the pull request watch the gh command, logged in.

Good to know

  • The home and the watches live on the machine running the bb server, and watches run only while bb does.
  • Ending a worker removes its worktree after bb's grace period, so only committed work can be restored.
  • A worker waiting on a permission or question shows as Blocked, and bb tells the first mate it needs attention.
  • A request sent with /fm or bb firstmate-crew tell is marked as relayed. The first mate may start or steer work for it, but merges, anything destructive or irreversible, publishing, credentials and settings wait for your word in its own chat.

More from Gustavo Ambrozio

ChatGPT Realtime ConnectionRun Voice Mode's voice chats on your ChatGPT subscription instead of a separately billed OpenAI API key. It hands Voice Mode the ChatGPT sign-in that the Codex CLI already keeps on the machine running the bb server, reads it again for every chat, and never renews or rewrites it. Only the plugins you allow, Voice Mode to begin with, receive the token; the bb app, the command line and agents in threads never do. This is an undocumented use of the subscription that OpenAI could stop accepting at any time, nobody has checked whether OpenAI's terms allow it, and voice chats count against your ChatGPT plan. Requires bb 0.46 or later, Voice Mode 0.1.9 or later, and the Codex CLI signed in with Sign in with ChatGPT on a plan that includes Codex.NewDiff ReviewComment on a thread's changes line by line, then send the comments to its agent, which fixes the code and answers each one. A Review tab beside the thread shows the diff of its uncommitted, staged or unstaged changes, its branch, one commit or a range, and each comment follows its code as the code moves. The same tab reviews a GitHub pull request: answer its threads, mark files viewed in step with GitHub, and submit your comments as one review, posted as the GitHub CLI's signed-in account. An AI review leaves comments of its own, @reviewer answers a question inside a comment thread, and Fix in a new thread hands the comments to another agent; these runs start as threads under the one being reviewed, in the permission mode set in the settings (bb's Approve for me by default, or Accept edits), and in full permission mode with a provider that lacks that mode, such as opencode. Follows the review loop of the open-source diffity, credited in the plugin's third-party notices. Needs bb 0.48 or later with bb's Git plugin on, and the signed-in GitHub CLI (gh) for pull request review only; it is built on experimental bb plugin APIs that may change between bb releases.NewGitHub BoardSee your GitHub issues, pull requests and discussions on one board, and hand any of them to an agent thread. Four columns cover what you wrote, what is open on repositories you own and what is assigned to you, and an issue that a pull request closes folds into that pull request's card. Pull request cards show CI checks and branch status, with an Update branch button wherever you can push. A detail panel shows the body, comments and images, and labels are added or removed from a right-click menu. Send to chat opens bb's new-thread composer on a card, with a prompt you set per column and per project, in the bb project that has the repository checked out. Add to chat puts the same prompt, the card's column template with the chat's project override, at the end of a chat's draft without sending it, from a menu of the chats on screen and your recent threads. Requires bb 0.47 or later, and the GitHub CLI (gh) installed and signed in on the machine running the bb server.9HeraldHear one spoken sentence when an agent needs you, and see every waiting thread in one list. When a thread asks a question, waits for a plan or a permission to be approved, finishes its turn or fails, the bb app says which thread it is and what it needs, on whatever page you are on. A Herald page in the sidebar lists every thread waiting on you with its reason and sentence, and the same sentence sits above that thread's composer with a Read again button until you answer. Settings choose which kinds of event are announced, the voice and speed, and where to speak: the desktop app, a browser tab, or the mobile app while it is open. By default the sentence is built from the event itself, with no model or external service; optionally, Claude Code, OpenAI Codex, Gemini CLI or a command of your own, installed and logged in on the Mac running bb, writes it instead, for one short model turn per announcement. The default voice needs bb running on a Mac, and elsewhere each device's own browser voice speaks. Requires bb 0.47 or later.20

More in Agents & Providers 82

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

View all