vetta agent create, so a team is made in two steps.
Commands
--member is repeated once per member on all three writes; it is not a positional argument.
set
--member is name@version, a bare name, an agt_ id, or self. The name spelling is resolved here against your org’s agents — the wire only ever carries { type: "agent", id, version? }.
Pinning by version keeps the team’s behavior reproducible as members evolve. Omit the version and the server pins the member’s current version at save; it does not float, and what comes back always carries an explicit pin.
set replaces the roster outright and is the only one that takes --board, which gives the team a shared board. add and remove keep everything else about the roster as it stands, including its board setting. Removing the last member clears the roster to null — an empty coordinator is not a team.
Every one of these is a read-modify-write of one agent under expected_version, so two people editing a roster from two terminals cannot silently overwrite each other.
add and remove
add skips a member already on the roster rather than duplicating it. remove matches on identity — the same agt_ id, or self — so it does not matter which spelling you used to add it.
show
agt_ string in a roster you wrote is normalised to the object form before it is stored, so there is only ever one shape to read. null means the agent is not a coordinator.
A team coordinates two ways: delegation, and the shared board that --board turns on. See vetta board for reading and moving its cards, and Context & budgets for how spend flows across a team.