# `Nous.Session.Config`
[🔗](https://github.com/nyo16/nous/blob/v0.17.1/lib/nous/session/config.ex#L1)

Configuration for managed agent sessions.

Provides turn limits, token budgets, and compaction thresholds
for higher-level session management (e.g. `Nous.AgentServer` or
custom GenServers). This is separate from `Agent.Context.max_iterations`
which controls the inner agent loop.

## Usage

    config = %Nous.Session.Config{
      max_turns: 20,
      max_budget_tokens: 500_000,
      compact_after_turns: 15
    }

    case Nous.Session.Guardrails.check_limits(config, turn_count, in_tokens, out_tokens) do
      :ok -> proceed_with_turn()
      {:error, :max_turns_reached} -> stop_session()
      {:error, :max_budget_reached} -> stop_session()
    end

# `t`

```elixir
@type t() :: %Nous.Session.Config{
  compact_after_turns: pos_integer(),
  max_budget_tokens: pos_integer(),
  max_turns: pos_integer()
}
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

Creates a config from a keyword list.

## Examples

    config = Nous.Session.Config.new(max_turns: 50, max_budget_tokens: 1_000_000)

---

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