RuntimePolicy

Operational limits, budgets, and timeouts for `AgentRuntime`.

RuntimePolicy

The single struct that bounds every dimension of the runtime.

RuntimePolicy is the operational configuration consumed by AgentRuntime::new. It holds limits, budgets, timeouts, and admission-control parameters. It is immutable after construction; changing a policy means constructing a new runtime.

The full file is src/runtime/policy.rs.

Definition

pub struct RuntimePolicy {
    pub max_iterations: usize,            // default 16
    pub max_input_tokens: usize,          // default 128_000
    pub max_total_tokens: usize,          // default 256_000
    pub provider_timeout: Duration,       // default 60s
    pub tool_timeout: Duration,           // default 30s per tool
    pub session_gate: SessionGateConfig,
    pub input_admission: InputAdmissionConfig,
    pub router: RouterPolicy,
    pub event_buffer: usize,              // default 1024
}

Defaults

FieldDefaultEffect
max_iterations16The Turn FSM fails after this many iterations per run.
max_input_tokens128_000ContextPipeline rejects inputs larger than this.
max_total_tokens256_000The cumulative token budget for a single run.
provider_timeout60 sWall-clock cap for a single model call.
tool_timeout30 sWall-clock cap for a single tool execution.
event_buffer1024Broadcast channel buffer for AgentEvent.

SessionGateConfig, InputAdmissionConfig, and RouterPolicy have their own default impls.

Construction

use std::time::Duration;
use behest::runtime::policy::RuntimePolicy;

let policy = RuntimePolicy {
    max_iterations: 32,
    max_total_tokens: 1_000_000,
    provider_timeout: Duration::from_secs(120),
    ..Default::default()
};

The ..Default::default() pattern is the recommended idiom; it lets you override only the fields you care about.

See also

Related components

Edit this page on GitHub →