Quick Start
How It Works
Configuration
| Option | Type | Default | Description |
|---|---|---|---|
mirror_runtime_state | bool | False | Opt in to persist lightweight per-turn runtime artefacts on the session |
SessionConfig — typically via GatewayConfig(session_config=...).
Store API
| Method | Description |
|---|---|
set_runtime_state(session_id, runtime_id, turn_id, state, mirror_enabled=True) | Save state for one turn. Returns True when saved or when mirror_enabled=False (no-op). |
get_runtime_state(session_id, runtime_id, turn_id=None) | One turn when turn_id is set; all turns for the runtime when turn_id is None; {} if missing. |
clear_runtime_state(session_id, runtime_id=None) | Drop one runtime’s state, or all runtime state when runtime_id is omitted. |
On-disk shape
{runtime_id: {turn_id: state}}.
Common patterns
- Replay a turn
- Cross-runtime handoff
- after_turn export
Best practices
Keep state lightweight
Keep state lightweight
Aim for ≤1 KB per turn and ≤10 KB per runtime. Store IDs and transcript slices — not full tool outputs or full conversation history.
Redact before storing
Redact before storing
Remove API keys, credentials, and PII before calling
set_runtime_state.Opt in deliberately
Opt in deliberately
Leave
mirror_runtime_state=False unless something reads the data — mirroring is off by default to avoid session file bloat.Garbage-collect per runtime
Garbage-collect per runtime
Use
clear_runtime_state(session_id, runtime_id="...") instead of letting unbounded turn maps grow.Older session files without
runtime_state load as {}. A JSON null value is also coerced to {}.Related
Gateway
Configure
SessionConfig on the gatewayPersistence overview
Session storage and resume

