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.
Install
Rust crate
Python
TypeScript
CLI
[dependencies]
meerkat = { version = "0.6.5", features = ["anthropic", "jsonl-store"] }
meerkat-store = "0.6.5"
meerkat-tools = "0.6.5"
tokio = { version = "1", features = ["full"] }
The SDK resolves rkat-rpc automatically by default and downloads it when needed. Install the standalone binary only if you want to manage it yourself.
The SDK resolves rkat-rpc automatically by default and downloads it when needed. Install the standalone binary only if you want to manage it yourself.
Before your first run, set up provider credentials. The fastest path is environment variables; for realm-scoped bindings and OAuth flows, see Auth and Providers.
Run an agent
Rust
Python
TypeScript
CLI
use std::sync::Arc;
use meerkat::{AgentBuilder, AgentFactory, AnthropicClient, JsonlStore};
use meerkat_store::StoreAdapter;
let api_key = std::env::var("ANTHROPIC_API_KEY")?;
let store_dir = std::env::current_dir()?.join(".rkat").join("sessions");
std::fs::create_dir_all(&store_dir)?;
let factory = AgentFactory::new(store_dir.clone());
let client = Arc::new(AnthropicClient::new(api_key)?);
let llm = factory.build_llm_adapter(client, "claude-sonnet-4-6").await;
let store = Arc::new(JsonlStore::new(store_dir));
store.init().await?;
let store = Arc::new(StoreAdapter::new(store));
let tools = Arc::new(meerkat_tools::EmptyToolDispatcher);
let mut agent = AgentBuilder::new()
.model("claude-sonnet-4-6")
.system_prompt("You are a helpful assistant. Be concise in your responses.")
.max_tokens_per_turn(1024)
.build(Arc::new(llm), tools, store)
.await?;
let result = agent
.run("What is the capital of France? Answer in one sentence.".into())
.await?;
println!("Response: {}", result.text);
from meerkat import MeerkatClient
client = MeerkatClient()
await client.connect()
result = await client.create_session(prompt="What is the capital of France?")
print(result.text)
await client.close()
import { MeerkatClient } from "@rkat/sdk";
const client = new MeerkatClient();
await client.connect();
const result = await client.createSession("What is the capital of France?");
console.log(result.text);
await client.close();
export ANTHROPIC_API_KEY=sk-...
rkat run "What is the capital of France?"
To share state across processes/surfaces, pass the same explicit realm (--realm for CLI, realm_id/realmId for SDK clients). See realms.
Switch providers
Same code, different model. The provider is resolved from the model registry:
rkat run --model claude-sonnet-4-6 "Explain monads"
rkat run --model gpt-5.5 "Explain monads"
rkat run --model gemini-3-flash-preview "Explain monads"
Register an MCP server and its tools are available to the agent immediately:
rkat mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /tmp
rkat run "List the files in /tmp"
Enforce budgets
Cap token usage, wall-clock time, or tool calls:
rkat run --max-tokens 10000 --max-duration 30s --max-tool-calls 5 "Analyze this codebase"
The agent completes its current turn when a limit is hit, then stops.
What’s next
For a maintained repository starter, see the Rust example in the Meerkat repository under meerkat/examples/simple.rs.