# `Nous.Teams.Supervisor`
[🔗](https://github.com/nyo16/nous/blob/v0.17.1/lib/nous/teams/supervisor.ex#L1)

Per-team Supervisor that manages team infrastructure processes.

Started dynamically under `Nous.AgentDynamicSupervisor` for each team.
Supervises the Coordinator, SharedState, optional RateLimiter, and the
team's agent DynamicSupervisor.

## Architecture

    Nous.AgentDynamicSupervisor (existing)
    └── Nous.Teams.Supervisor (one per team)
        ├── Nous.Teams.Coordinator
        ├── Nous.Teams.SharedState
        ├── Nous.Teams.RateLimiter (optional)
        └── DynamicSupervisor (team's agent processes)

## Quick Start

    {:ok, pid} = Nous.Teams.Supervisor.start_link(
      team_id: "team_1",
      team_name: "Research Team",
      pubsub: MyApp.PubSub
    )

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start_link`

```elixir
@spec start_link(keyword()) :: Supervisor.on_start()
```

Start the team supervisor.

## Options

- `:team_id` (required) — unique identifier for the team
- `:team_name` — human-readable team name (default: team_id)
- `:pubsub` — PubSub module for messaging
- `:budget` — team budget in USD (enables RateLimiter)
- `:per_agent_budget` — per-agent budget in USD
- `:rpm` — requests per minute limit
- `:tpm` — tokens per minute limit
- `:name` — optional Supervisor name

---

*Consult [api-reference.md](api-reference.md) for complete listing*
