# `Planck.Agent.Supervisor`
[🔗](https://github.com/alexdesousa/planck/blob/v0.1.0/lib/planck/agent/supervisor.ex#L1)

Top-level supervisor for the `planck_agent` runtime.

Starts and supervises:
- `Planck.Agent.PubSub` — `Phoenix.PubSub` for agent event broadcasting
- `Planck.Agent.Registry` — duplicate-key Registry for team discovery and agent lookup
- `Planck.Agent.TaskSupervisor` — `Task.Supervisor` for stream tasks
- `Planck.Agent.SessionSupervisor` — `DynamicSupervisor` for session processes
- `Planck.Agent.AgentSupervisor` — `DynamicSupervisor` for agent processes

Uses `:one_for_all` so the Registry and TaskSupervisor always restart together
with the agents — a stale Registry after a crash would leave agents unable to
find each other.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start_link`

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

---

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