> ## Documentation Index
> Fetch the complete documentation index at: https://vetta.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# vetta team

> Compose a coordinator agent with a version-pinned roster.

A team is a [coordinator](https://vetta.sh/docs/team/coordinator.md) agent with a roster of member agents. These commands manage the roster on an **existing** agent — there are no roster flags on `vetta agent create`, so a team is made in two steps.

## Commands

| Command | Description |
| - | - |
| `vetta team set <coordinator> --member …` | Replace the coordinator's roster outright. |
| `vetta team add <coordinator> --member …` | Add roster members, keeping the rest. |
| `vetta team remove <coordinator> --member …` | Remove roster members. |
| `vetta team show <coordinator>` | Show the current roster and pinned versions. |

`--member` is repeated once per member on all three writes; it is not a positional argument.

## set

```bash theme={"system"}
vetta team set agt_01j8rm4xp7k2qv6zn9c3h5wfdb --member changelog-writer@4 --member release-notes-qa@2 --board
```

Each `--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](https://vetta.sh/docs/team/board.md). `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.

> [!WARNING]
>
> `--member advisor:<model>` is accepted here and then **refused by the API**: advisor roster entries are not yet served. See [Coordinator](https://vetta.sh/docs/team/coordinator.md#advisor--parses-but-is-not-served).

## add and remove

```bash theme={"system"}
vetta team add agt_01j8rm4xp7k2qv6zn9c3h5wfdb --member doc-linter@1

vetta team remove agt_01j8rm4xp7k2qv6zn9c3h5wfdb --member release-notes-qa
```

`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

```bash theme={"system"}
vetta team show agt_01j8rm4xp7k2qv6zn9c3h5wfdb
```

```json theme={"system"}
{
  "type": "coordinator",
  "agents": [
    { "type": "agent", "id": "agt_9f2c…", "version": 4 },
    { "type": "agent", "id": "agt_4a71…", "version": 2 }
  ],
  "board": false
}
```

That is the roster exactly as the wire carries it — a bare `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](https://vetta.sh/docs/team/delegation.md), and the shared [board](https://vetta.sh/docs/team/board.md) that `--board` turns on. See [`vetta board`](https://vetta.sh/docs/cli/board) for reading and moving its cards, and [Context & budgets](https://vetta.sh/docs/team/context-and-budgets.md) for how spend flows across a team.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.