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

An agent core for Elixir apps: pi-agent-core's loop (`Rho.Loop`), omp/pi
JSONL sessions (`Rho.Session`), compaction, tools, and model sign-in
(subscription OAuth or API keys, `Rho.Auth`) on req_llm.

A host starts `Rho.Supervisor` in its own supervision tree, then a loop
per session with `start_loop/1`. What a host can (or on a phone, must)
provide is in `Rho.Config`.

# `default_system_prompt`

```elixir
@spec default_system_prompt() :: String.t()
```

The system prompt a loop uses when neither it nor `config :rho, :system_prompt` sets one.

# `start_loop`

```elixir
@spec start_loop(keyword()) :: DynamicSupervisor.on_start_child()
```

Starts a loop under `Rho.Supervisor`'s loop supervisor. `opts` are
`Rho.Loop.start_link/1`'s; without `:session`, a new session in
`Rho.Session.dir/0` on `opts[:model]` (default
`Rho.Config.default_model/0`), in the data dir.

---

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