Skip to main content
This page documents MobKit v0.8.34 (mirrored from v0.8.34).

Install

Cargo.toml
The Python and TypeScript packages are clients and do not bundle a gateway executable. Download mobkit-rpc-gateway-<version>-<target>.tar.gz for Unix or macOS, or mobkit-rpc-gateway-<version>-<target>.zip for Windows, from GitHub Releases and extract its rpc_gateway binary (rpc_gateway.exe on Windows). Linux archives published after v0.8.30 are built against glibc 2.31 (Debian 11) and load on any distribution with glibc 2.31 or newer; the v0.8.30 Linux archives were built on Ubuntu 24.04 and need glibc 2.39. For a source build, run ./scripts/repo-cargo build -p meerkat-mobkit --bin rpc_gateway --locked, then run ./scripts/repo-cargo --print-env; the debug binary is at <CARGO_TARGET_DIR>/debug/rpc_gateway. Pass the extracted or built path to .gateway(...).

Bootstrap a runtime

The fastest way to get a running system is start_mobkit_runtime. It takes a module configuration, agent event stream, and a startup timeout. Host-supplied modules are optional, so this runnable baseline starts with an empty module and discovery list.

Use the unified runtime

For production deployments that combine a Meerkat mob with MobKit modules, use the UnifiedRuntime builder:
The unified runtime bootstraps both systems, merges their event streams, and manages the combined lifecycle. See the unified runtime guide for details.

Open the console

Once the runtime is serving HTTP, open the admin console at:
The bundled gateways bind an available loopback port and return the exact http_base_url in the initialization result. A library host may choose its own address. The console shows the agent sidebar, conversation workspace, signals rail, topology, logs, and health overview. The bundled app seeds from REST, sends through JSON-RPC, and tails replayable timeline frames over SSE.

Identity-first (household apps)

For apps with durable agent identities (like HomeCore), use the identity-first API:
Profiles are templates; members are declared. The [profiles.*] tables in MOB_TOML produce no members on their own: the identities your roster returns (or ensure_member names) are the only members that exist, and nothing spawns one member per profile for you. The roster callback’s context argument is empty on both SDKs (the gateway sends the definition, the SDK dispatchers do not pass it through), so a profile-shaped crew is one loop over the [profiles.*] of your own parsed MOB_TOML; see Profiles are templates. If the definition declares [wiring] (auto_wire_orchestrator or role_wiring), call rt.mob_handle().reconcile_edges() after boot and after each rt.reconcile(); ensure_member reconciles on its own. Pin runtime_mode = "turn_driven" on profiles that back addressable identities: meerkat defaults to autonomous_host, which runs a kickoff turn at spawn and cannot receive ambient per-turn memory (see Runtime modes).
Use respawn() for non-destructive recovery that keeps continuity, and reset() only when the app intentionally wants a destructive new generation and session. If you change a durable identity’s role in the roster, its resume fails closed until that boot declares the migration with .role_migrations([...]). See the Python SDK page for the builder form and Configuration for the init parameter.

What’s next