# `Rho.Supervisor`
[🔗](https://github.com/GenericJam/rho/blob/v0.1.0/lib/rho/supervisor.ex#L1)

rho's processes, for the host to start in its own tree (rho has no OTP
application callback: a mob app starts its code by hand):

    children = [
      {Rho.Supervisor, tools: [MyApp.Tools.Search, Rho.Tools.Todo, Rho.Tools.ReadArtifact]}
    ]

Starts, in order: `Rho.Auth` (sign-ins, token refresh), `Rho.Auth.Login`
(the OAuth browser flow), with Dyn the approval store
(`Rho.Dyn.Approval.Biometric`) and `Rho.Dyn.Keeper`, then
`Rho.ToolRegistry`, `Rho.Usage`'s subscriber registry, the task
supervisor tools run under (`Rho.TaskSup`) and the loops' supervisor
(`Rho.LoopSup`, see `Rho.start_loop/1`).

Options:

  * `:tools`, `:tool_sources`: `Rho.ToolRegistry`'s (default from
    `config :rho`, else `Rho.ToolRegistry.builtin_tools/0` and none)
  * `:auth`, `:login`: start options of `Rho.Auth` / `Rho.Auth.Login`
  * `:llm_catalog`: install rho's trimmed model catalog
    (`Rho.LLMCatalog.install!/0`) before anything looks a model up;
    default `true`
  * `:dyn`: start the Dyn layer (`Rho.Dyn`): `true`, or the Keeper's
    options; default `config :rho, :dyn, enabled: ...` (off,
    `Rho.Dyn.Config`). With it the registry also offers the `dyn_*`
    tools (`Rho.Dyn.Source.core_tools/0`) and the current generation's
    (`Rho.Dyn.Source`). The host still calls `Rho.Dyn.boot/1` in its
    boot, once this tree is up.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `start_link`

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

Starts rho's tree, registered as `Rho.Supervisor`, with the options in the moduledoc.

---

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