Vibestrate
Vibestrate
docs

Crew

The team of AI workers you cast, and which model each one runs on.

In simple words

A flow says which kinds of worker a job needs - someone to plan, someone to build, someone to check - not who.

A Crew is who shows up: a roster of workers, each pointed at a model. One crew might be all Claude, another might have Codex build and Claude review. The flow does not change either way.

Each worker is a role, answering two questions: which kinds of step it can take, and which model it runs on.

vibe ui opens the dashboard on 127.0.0.1:4317, and Crew in the sidebar lists your crews, one card each, carrying Configure, Edit roles and Set default. Here is the crew vibe init gives you:

Tip

You do not need a second crew to change how a run behaves. A different model lives on the role’s profile. Reach for a second crew when you want a different team, like an all-local one.

The Default crew card. A green stripe on the left reads Crew default, runs by default. The card names the crew Default, counts 6 roles and reads all seats filled, with Configure and Edit roles buttons.

Every seat the flow asks for is covered, and this crew runs unless a run names another.

Did you know

One role can cover several kinds of step, which is why six workers can staff the eight-step deep flow. The executor role in the scaffold takes implementer, executor and builder, and the default flow seats three of the six roles per run.

Why you would cast a second crew

Have one model check another Codex on the role that builds, Claude on the role that reviews, so the diff is not marked by whoever wrote it.

A cheap team and a careful team A fast crew for a rename, a thorough crew for a migration. Same flows, different roster, chosen per run.

Work entirely offline A local crew points every role at a provider on your own machine, so no code leaves it.

A task uses exactly one crew, picked in the New run composer or left to the default.

Ready-made crews

Presets sits below your crews, one card each with Add to crews. A preset reuses your default crew’s workers, so a flow’s seats stay covered: it changes how the team runs, not who is on it.

fast Lowest effort, fewer review passes. Quick, low-stakes work.

thorough Highest effort, extra review passes. Risky or complex work.

cheap The provider’s cheapest model at low effort. Keeps spend down.

local Runs on a provider on your own machine, off cloud APIs.

Installing one saves a crew and the profile it runs on. Nothing runs until you pick it.

A preset refuses rather than quietly copying your default crew. fast and thorough need a provider with effort control, cheap needs one with a designated cheap model, and local needs a local provider separate from your default. A card that cannot fit says which case it hit and offers the route forward.

Inside one crew

Configure opens that crew’s own page: a header counting its roles and filled seats, a seat panel pairing every seat against the role that takes it, and a Roles card per worker, editable in place - seats, profile, permissions, skills and instructions.

Matching reads names, not order: a flow step names a seat, the crew’s roles declare which seats they take. Two ways that fails, both loudly and before any model is spawned:

No role takes the seat The run refuses to resolve and names the seat to add to a role’s Seats.

Two roles claim it The run refuses the same way and asks you to pick one, with --seat-role <seat>=<role>.

A half-staffed run that discovers the gap three steps in has already spent tokens and written code.

What a crew carries

FieldWhat it is
rolesThe roster, keyed by role id. Everything else on a crew is an override.
labelWhat the dashboard shows.
maxReviewLoopsPer-crew override of the global review and fix cycle count.
checklistReviewLensesPer-crew override of the lenses a per-item review runs under.

A crew is mostly its roster: the two overrides exist so a fast crew can do fewer loops and a security crew can aim every per-item review at auth and secrets, without either of them editing a flow. The shape is crewConfigSchema in src/agents/crew-schema.ts.

Adding and removing roles

Edit roles opens the crew editor; New crew opens it on a blank one. One screen holds every role’s parameters beside its instructions, next to a Seats panel that assigns a role per seat.

Which flows this covers in that panel is the check worth reading before you save, because casting is where a crew fails and it fails at launch rather than during the run. Each flow reads one of three things:

  • Runs - every seat the flow asks for has exactly one role.
  • Needs a pick - two roles take the same seat. The run starts only if it names which one.
  • Cannot start - a seat no role takes. Nothing will start this flow until you fill it.

Both failures stop the run rather than warning: resolving a flow fills every step’s seat before anything is skipped, so an optional step’s empty seat is just as fatal as a required one’s.

Two kinds of change live there, kept apart on purpose:

  • Saved from the page. A role’s instructions, and its parameters on a crew that already exists. Save writes the role’s file and updates the crew in place.
  • Saved by hand. Adding, removing or renaming a role, changing the crew’s name or its review loops, and everything about a new crew. The editor prints the exact bytes to paste.

Structural edits change what every future run does, so they go through a diff you read.

From the terminal

vibe shell shows the same roster on its [3] Crew page, to be checked rather than edited. The command line is the automation path:

vibe crew list                        # every crew, default marked
vibe crew show default                # roles, profiles, seats
vibe crew use thorough                # change the default
vibe crew presets add thorough        # install a ready-made one
vibe crew draft "an all-local crew"   # a roster proposal, printed, never written
vibe run "task" --crew thorough       # one run on another crew

A crew is a row under crews in .vibestrate/project.yml, and each role points at a prompt file under .vibestrate/roles/. Both are committed, so a teammate who clones the repo gets your roster. The annotated block explains every field.

Next: role goes through one worker in detail.

© 2026 Vibestrate
v0.4.3 Shonshon - Evolving Technologies