Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.rkat.ai/llms.txt

Use this file to discover all available pages before exploring further.

Meerkat has one agent execution pipeline and two product runtime kernels:
  • MeerkatMachine owns session-scoped runtime state.
  • MobMachine owns multi-agent orchestration.
Auth and scheduling are modeled with their own auxiliary machines, but user turns still reach the same agent loop through SessionService and AgentFactory.

Request Path

Runtime-backed surfaces ask MeerkatMachine to prepare session bindings before they build or resume an agent. Those bindings carry the session-owned handles for turn state, ops lifecycle, tool visibility, MCP lifecycle, peer interaction, model routing, auth leases, and completion cursors. The factory consumes that bundle through RuntimeBuildMode::SessionOwned(bindings). It does not invent a second runtime authority when the bundle is present.

Runtime-Backed Surfaces

SurfaceRuntime role
rkatDeveloper CLI and automation shell. Uses the workspace realm by default.
rkat-rpcJSON-RPC 2.0 over stdio or TCP. Python and TypeScript SDKs can connect to it.
rkat-restHTTP/JSON and SSE adapter over the same session, auth, config, schedule, and blob state.
rkat-mcpMeerkat-as-MCP server exposing public meerkat_* tools.
Rust SDKCan use runtime-backed bindings or explicit standalone mode.
Runtime-backed surfaces are the normal product path when you need durable sessions, keep-alive behavior, completion-feed wakeups, cross-process observability, or shared realm state.

Standalone Surfaces

Standalone mode is explicit. It is used by tests, narrow Rust embeddings, and the browser/WASM runtime.
SurfaceStandalone contract
RuntimeBuildMode::StandaloneEphemeralIn-memory agent/session substrate with no runtime recovery semantics.
meerkat-web-runtime / @rkat/webBrowser runtime with in-memory sessions, mobs, JS tool callbacks, and host-provided auth.
Standalone paths are not a degraded runtime. They are an intentional embedding mode for places where filesystem, TCP, and durable runtime services are absent.

Session State

SessionService owns the lifecycle that all surfaces use:
  • create or resume a session
  • start a turn
  • stream events
  • interrupt active work
  • read transcript and metadata
  • archive or delete state
Persistent sessions use realm storage. When SQLite support is compiled, new persistent realms default to SQLite because it supports normal same-realm multi-process use. JSONL remains available as an explicit inspectable backend.

Runtime State

MeerkatMachine owns runtime facts that are not just transcript data:
Runtime factWhy it belongs to the runtime
Input admissionQueueing, steering, cancellation, and replay need one owner.
Completion cursorsRecovery must duplicate notices safely, not lose them.
Ops lifecycleBackground and detached operations must not block turns accidentally.
Tool visibilityRuntime-scoped MCP and builtin tool changes need revisioned ownership.
Peer interactionComms requests, responses, and reservations are session semantics.
Auth leasesProvider credentials are binding-scoped and lifecycle-managed.
Blob storageImage and file payloads are durable transcript material.

Live Channels

Live audio/text channels are caller-initiated through the live/* JSON-RPC method family. ModelCapabilities.realtime gates whether live/open can attach to a session. The --live-ws <addr> flag on rkat-rpc enables the WebSocket listener used for audio transport bootstrap. The live channel does not replace session history. It is a transport adapter for the same canonical conversation, tool, and turn-boundary semantics.

Source Pointers

AreaSource
Runtime kernelmeerkat-runtime/src/meerkat_machine/
Runtime bindingsmeerkat-core/src/runtime_epoch.rs
Session servicesmeerkat-session/src/
Agent constructionmeerkat/src/factory.rs
RPC live handlersmeerkat-rpc/src/handlers/live.rs
Live hostmeerkat-live/src/host.rs
Wire contractsmeerkat-contracts/src/wire/

See Also