kova
Async-first Rust library for building LLM-powered agents. Trait-based architecture with pluggable providers, tool calling, memory, streaming, thinking-model support, MCP integration, multi-agent orchestration, and telemetry.
Installation
[]
= "0.1"
# With OpenTelemetry tracing
= { = "0.1", = ["telemetry"] }
Or with cargo:
Architecture
kova
├── agent # Agent + AgentBuilder — the main orchestration loop
├── provider # LlmProvider trait + OpenAI / Bedrock / Gemini / Ollama implementations
├── tool # Tool trait + thread-safe ToolRegistry
├── memory # MemoryStore trait + InMemoryStore
├── mcp # MCP client (stdio / HTTP+SSE) + McpTool adapter
├── orchestrator # Multi-agent patterns (sequential, parallel, router)
├── streaming # StreamingHandler trait + SSE parser
├── telemetry # TelemetryConfig + MetricsCollector
├── models # Shared data types (messages, content blocks, events)
└── error # Unified KovaError enum
Providers
| Provider | Auth | Thinking models |
|---|---|---|
OpenAiCompatibleProvider |
Bearer token | with_reasoning_effort("high") for o-series models |
BedrockProvider |
SigV4 (explicit / profile / default chain) | with_additional_model_request_fields(json!({"budgetTokens": N})) for Claude |
GeminiProvider |
x-goog-api-key |
with_thinking_budget(N) for gemini-3.5-* models etc |
OllamaProvider |
None (local) | with_think(OllamaThink::High) for qwen3, deepseek-r1, etc. |
Chain-of-thought output from thinking models is returned in ModelResponse::thinking and never stored in conversation history. During streaming it arrives as StreamEvent::ThinkingDelta; in blocking mode the agent forwards it to any registered StreamingHandler.
Quick Start
use Arc;
use AgentBuilder;
use ;
async
Feature Flags
| Flag | Default | Description |
|---|---|---|
telemetry |
off | Adds OpenTelemetry dependencies; enables OTLP/Jaeger/stdout span export |
Without the telemetry feature, TelemetryConfig::init() installs a lightweight tracing_subscriber — zero OTEL overhead.
[]
= { = "../kova" } # no OTEL
= { = "../kova", = ["telemetry"] } # with OTEL
Documentation
| Document | Contents |
|---|---|
| docs/requirements.md | Functional and non-functional requirements |
| docs/design.md | Architecture, agentic loop, design decisions |
| docs/api-reference.md | Full API with code examples for every module |
| docs/changelog.md | Version history |
| docs/contributing.md | Conventions, adding providers/tools, test guide |