GraphCanon updated 2w · GitHub synced 2w
Decision brief
Kitaru focuses on recording, replaying, and enhancing the performance of AI agents in production environments using technology from ZenML.
Good fit when
- - You need to ensure the continuous improvement of AI agents that are already deployed; Kitaru allows you to replay scenarios with different approaches to identify improvements.
- - Your project leverages PydanticAI or similar frameworks and you require integration capabilities for recording and observing agent behavior over time;
Avoid when
- - If your project is in the early stages of development without a clear need for replaying historical data or improving upon past behaviors;
- - When working outside Python, as Kitaru does not currently offer support for other programming languages.
Observed Jul 17, 2026 · Source: enrich:decision_facts
Verify the decision
Maintenance and security
Full trust report- Maintenance
- Very active (0d since push)
- As of 2w
- Provenance
- Not a fork · Organization account
- As of 2w
- Security (OSV)
- No criticals
- As of 1mo
Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.
Install
pip install kitaru PyPISimilar tools
Same-category neighbours. No typed graph edges are catalogued for this tool yet.
Evidence and technical details
Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.
Overview
A toolset for managing the lifecycle of AI agents including recording, replaying, and improving performance in deployment settings.
Capability facts
- CLI
- CLI entrypoint
Source: pyproject.toml:[project.scripts] · Aug 3, 2026
- Languages
- python
Source: github.language+pyproject.toml · Aug 3, 2026
Categories
Compatibility
Sourced claims from the README excerpt - not unsourced marketing copy.
Source: README excerpt (regex_v1, Aug 3, 2026)
<a href="https://pypi.org/project/kitaru/"><img alt="Python" src="https://img.shields.io/pypi/pyversions/kitaru"></a>Source link
Tags
README
Traces you can run, not just read.
Kitaru (来る, "to arrive") records every agent run as a full trace — every model call, tool call, and decision — and replays it against your real code. Reproduce the trace exactly. Fork it with one thing changed. Trust the diff. It works underneath whatever framework you already use, self-hosted on your own infrastructure, and it can deploy and run your agents too.
Docs · Quick Start · Examples · Getting Started Guide · Roadmap · Community
🎯 Why Kitaru?
Most traces are transcripts — you read them. A Kitaru trace re-executes: your actual code runs again, with the trace answering for everything the original run saw. Kitaru is a debugger with a memory, sitting beside your observability stack — it tells you what happened; Kitaru re-runs it. That turns production traffic into the eval suite you never had to write: every incident is a reproducible test case, and "would the cheaper model have held?" is an experiment over real traces instead of a guess.
- Every trace is a recording. Each checkpoint output — model call, tool call, decision — is written to your object store as a typed, versioned artifact. Step through it, diff it against other runs, trace a bad output back to the step that produced it.
- Replay is re-execution, not re-scoring. An unchanged replay reproduces the original exactly — and that faithful baseline is what lets you fork from any checkpoint with one thing changed and trust that the diff is your change, not replay noise.
- Decide with evidence. Every trace includes the model traffic — prompt,
response, tokens, latency, estimated cost — recorded automatically by the
framework adapters, or by
kitaru.llm()in raw Python.
🔁 The loop
uv add "kitaru[pydantic-ai]" # plain `kitaru` for the raw @flow/@checkpoint path
kitaru init
No decorators, no graph, no rewrite. Wrap the agent you already have and run it — Kitaru opens a flow around the call and records every model request and tool call as a checkpoint:
# agent.py
from pydantic_ai import Agent
from kitaru.adapters.pydantic_ai import KitaruAgent
agent = Agent("openai:gpt-5.4", name="support-agent",
system_prompt="You resolve support tickets.")
@agent.tool_plain
def refund_payment(order_id: str) -> str:
return payments.refund(order_id) # your real API
support = KitaruAgent(agent)
support.run_sync("Refund order #4821 — the card reader was double-charged.")
Traces recorded elsewhere land the same way — import them, and they become executions like any other:
from kitaru import KitaruClient
client = KitaruClient()
client.executions.import_traces("support-traces.jsonl", format="otel")
client.imports.langfuse(
"langfuse-observations.jsonl",
source_project_id="prod",
agent_name="support-agent",
)
Every run is now a trace you can replay:
trace = client.executions.latest()
# Replay — start
For agents
This page has a .md twin and JSON over the API.