realm_id.
Lifecycle
| Operation | What it does |
|---|---|
create_session | Build an agent, run first turn, persist session metadata |
start_turn | Continue existing session; returns SESSION_BUSY if a turn is already running |
interrupt | Cancel in-flight turn |
read | Return session state + usage |
read_history | Return committed transcript messages with optional pagination |
list | List sessions in the active realm |
archive | Remove from runtime (and persistent store when supported) |
Realm visibility rules
| Scenario | Result |
|---|---|
CLI + RPC with same realm_id | Shared session visibility |
CLI + RPC with different realm_id | Strict isolation |
| 100 RPC servers, no realm provided | Each gets its own isolated realm by default |
100 agents, same explicit realm_id | Shared state and consistent visibility |
Session metadata
Session metadata now carries realm context:realm_idinstance_idbackendconfig_generation
Session history
Public surfaces now expose full transcript history separately from lightweight metadata reads.- REST:
GET /sessions/{id}/history - RPC:
session/history - MCP:
meerkat_history - Python SDK:
read_session_history(),Session.history(),DeferredSession.history() - TypeScript SDK:
readSessionHistory(),Session.history(),DeferredSession.history()
offset / limit pagination. They do not expose in-flight partial output.
Persistence and backend pinning
Backends are selected once per realm and pinned inrealm_manifest.json.
| Backend | Notes |
|---|---|
sqlite | Durable embedded database; default for new persistent realms when compiled |
redb | Durable embedded database |
jsonl | File-based, inspectable, useful for debugging |
sqlite stays sqlite; a realm created as jsonl stays jsonl; a realm created as redb stays redb.
Concurrency guarantees
- One turn per session at a time.
- No implicit queueing for concurrent turns.
interrupt()is explicit cancellation.- Config writes can be synchronized with generation CAS (
expected_generation) to avoid lost updates during concurrent operations. - SQLite-backed realms support the standard same-realm multi-process workflow across CLI, REST, RPC, MCP, and SDK surfaces.
