Install
- Rust crate
- TypeScript
- Python
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 isstart_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.
- Rust
- TypeScript
- Python
Use the unified runtime
For production deployments that combine a Meerkat mob with MobKit modules, use theUnifiedRuntime builder:
Open the console
Once the runtime is serving HTTP, open the admin console at: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).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
- Modules — how the module system works
- Events — the unified event model
- Operational subsystems - gating, delivery, durable scheduling, memory
- Architecture — internal design and crate structure
