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.

Install

Cargo.toml
[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"] }
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

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);
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"

Add tools

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.