multiagent object with type: "coordinator" and an agents roster. The coordinator owns the top-level task and coordinates its roster the two ways a team can. It is an ordinary agent in every other respect: it has a model, a budget, a system prompt, and it runs inside a session you drive directly.
Making one
The roster lives on the coordinator’s own config, so a team is made in two steps — create an agent, then give it a roster. There are no roster flags onvetta agent create.
id, version, created_at, and updated_at. Adding, removing, or repinning members produces a new coordinator version — the roster is part of the agent’s config.
Any published harness can be the coordinator’s.
send_to_agent and board_write reach the
coordinator’s model either in the toolset Vetta assembles for the turn, or — on claude_code and
hermes, which run a CLI inside a micro-VM on that CLI’s own toolset — over a session-scoped tool
endpoint the machine is given. One caveat on those two: wait_for_agents does not pause the turn,
so the coordinator parks once the turn goes idle instead of mid-call. It costs a few extra model
calls, not a wrong answer. See
Harness capabilities.On the wire a roster member is an
agt_ id. web-researcher@3 is a CLI spelling: vetta team resolves the name against your org’s agents and writes the id. The API rejects anything that is not an agt_ id.Roster entry types
Each entry inagents is discriminated by a type field. A bare "agt_…" string is also accepted and normalises to the agent form at parse, so exactly one shape reaches storage.
agent — reference another agent
Referenced members are fully independent agents with their own model, harness, tools, skills, and system prompt. Session-level configuration overrides applied to the coordinator’s session do not reach id-referenced members — they run exactly as their pinned version defines.
self — spawn copies of the coordinator
self copies (and to the coordinator itself), because they share the coordinator’s configuration.
advisor — parses, but is not served
model instead of an id.
Roster entry types at a glance
Configuration reference
The multiagent field
It accepts an object, a boolean, or null, and all three arms mean something:
object | boolean | null
An object declares the team.
false and null mean the agent is not a coordinator — null is how an existing roster is cleared on a PATCH, which false cannot say because false is also the create-time default. true is read as a coordinator with an empty roster and no board, which has nobody to delegate to; it is a degenerate case, not a shortcut.agent entry
string
required
The
agt_ id of another agent in your organization to delegate to.integer
The version of the referenced agent to pin. Omit the version and Vetta pins the member’s current version at the moment the coordinator is saved — the stored roster always carries an explicit pin, and it does not drift. See Rosters & versioning.
Next: delegation
How the coordinator invokes members, and the isolated sessions they run in.