Vibestrate
Vibestrate
docs
Documentation

Seat

The empty chair a Flow step needs filled - a label, not a name, which is what keeps Flows shareable.

A Seat is an empty, labelled chair in a Flow that says “this step needs someone to fill it.” It is a contract, not a person: it names the kind of worker a step needs, and nothing about who.

A contract, not a person. A Seat names a job to be done, never the worker who does it. A Flow only sets out chairs like “implementer” or “reviewer”, so the same Flow runs on your AI or someone else’s. The chairs are shared. Who fills them is yours.

Picture a Flow as a table with chairs around it. One chair is labelled “implementer”, another “reviewer”. The Flow sets out the chairs and what each one is for. It never says who sits down. Your Crew does that, choosing a worker for each Seat when the task actually runs.

That gap is the whole point. Because a Flow only names chairs and never names your AI models, you can take a Flow someone else wrote and run it with your own workers. The chairs are shared. Who fills them is yours.

How a Flow asks for a Seat

A Flow declares the Seats it needs, then points each step at one:

seats:
  implementer:
    label: Implementer
    description: Makes code changes.

steps:
  - id: implement
    label: Implement
    kind: agent-turn
    seat: implementer
    inputs: [task-brief, plan, architecture]
    outputs: [execution, diff]

Your Crew fills the implementer seat with a worker (a Role) you’ve set up. You can name that Role anything - Backend Implementer, Executor, Coder - as long as it lists implementer in its own seats.

Which steps need a Seat

Not every step does. A step that just runs your tests, or one that pauses for your approval, needs no Seat - nobody is sitting down to think. Steps where an AI does a turn of work do:

agent-turnreview-turnresponse-turnsummary-turn

Going deeper

A Seat carries a label and an optional description, and nothing else - no model, no vendor. The worker who takes the Seat brings the model through its profile, so the same Flow can run on different AI depending on who fills the chair.

When a task runs, Vibestrate follows the chain from the step’s Seat through your Crew to the actual model and provider:

step.seatThe chair the step asks to fill.
Crew RoleThe worker in your Crew that lists this seat.
ProfileThe setting that names the model.
providerThe tool that runs it.

It records who actually sat down for each step: seat, resolvedRoleId, resolvedRoleLabel, profileId, and providerId. The Seat shape lives in src/flows/schemas/flow-schema.ts as flowSeatSchema.

Related: flow, crew, role, profile.

© 2026 Vibestrate · v0.68.0 Shonshon - Evolving Technologies