{"data":{"slug":"zenml-io-kitaru","name":"kitaru","tagline":"Record, replay, and improve AI agents in production, built on ZenML","github_url":"https://github.com/zenml-io/kitaru","owner":"zenml-io","repo":"kitaru","owner_avatar_url":"https://avatars.githubusercontent.com/u/88676955?v=4","primary_language":"Python","stars":226,"forks":15,"topics":["agent-framework","ai-agents","checkpoints","durable-execution","llm","mcp","mlops","observability","pydantic","pydantic-ai","python","replay","workflow-orchestration"],"archived":false,"github_pushed_at":"2026-08-03T16:16:18+00:00","maintenance_label":"Very active","url":"https://www.graphcanon.com/tools/zenml-io-kitaru","markdown_url":"https://www.graphcanon.com/tools/zenml-io-kitaru.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/zenml-io-kitaru","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=zenml-io-kitaru","description":"Record, replay, and improve AI agents in production, built on ZenML","homepage_url":"https://kitaru.ai","license":"Apache-2.0","open_issues":49,"watchers":1,"ai_summary":"A toolset for managing the lifecycle of AI agents including recording, replaying, and improving performance in deployment settings.","readme_excerpt":"<p align=\"center\">\n  <a href=\"https://kitaru.ai\">\n    <img src=\"assets/kitaru_logo.png\" alt=\"Kitaru\" width=\"240\">\n  </a>\n</p>\n\n<h3 align=\"center\">Traces you can run, not just read.</h3>\n\n<p align=\"center\">\n  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.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/kitaru/\"><img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/kitaru?color=blue\"></a>\n  <a href=\"https://pypi.org/project/kitaru/\"><img alt=\"Python\" src=\"https://img.shields.io/pypi/pyversions/kitaru\"></a>\n  <a href=\"https://github.com/zenml-io/kitaru/blob/main/LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/github/license/zenml-io/kitaru\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://docs.zenml.io/kitaru\">Docs</a> &middot;\n  <a href=\"#quick-start\">Quick Start</a> &middot;\n  <a href=\"https://docs.zenml.io/kitaru/getting-started/examples\">Examples</a> &middot;\n  <a href=\"GETTING_STARTED.md\">Getting Started Guide</a> &middot;\n  <a href=\"https://www.zenml.io/roadmap\">Roadmap</a> &middot;\n  <a href=\"https://www.zenml.io/slack\">Community</a>\n</p>\n\n---\n\n<p align=\"center\">\n  <img src=\"assets/dashboard.png\" alt=\"Kitaru Dashboard\" width=\"720\">\n</p>\n\n## 🎯 Why Kitaru?\n\nMost traces are transcripts — you read them. A Kitaru trace re-executes:\nyour actual code runs again, with the trace answering for everything the\noriginal run saw. Kitaru is a debugger with a memory, sitting beside your\nobservability stack — it tells you what happened; Kitaru re-runs it. That\nturns production traffic into the eval suite you never had to write: every\nincident is a reproducible test case, and \"would the cheaper model have\nheld?\" is an experiment over real traces instead of a guess.\n\n- **Every trace is a recording.** Each checkpoint output — model call, tool\n  call, decision — is written to your object store as a typed, versioned\n  artifact. Step through it, diff it against other runs, trace a bad output\n  back to the step that produced it.\n- **Replay is re-execution, not re-scoring.** An unchanged replay reproduces\n  the original exactly — and that faithful baseline is what lets you fork\n  from any checkpoint with one thing changed and trust that the diff is your\n  change, not replay noise.\n- **Decide with evidence.** Every trace includes the model traffic — prompt,\n  response, tokens, latency, estimated cost — recorded automatically by the\n  framework adapters, or by `kitaru.llm()` in raw Python.\n\n<a id=\"quick-start\"></a>\n\n## 🔁 The loop\n\n```bash\nuv add \"kitaru[pydantic-ai]\"   # plain `kitaru` for the raw @flow/@checkpoint path\nkitaru init\n```\n\nNo decorators, no graph, no rewrite. Wrap the agent you already have and run\nit — Kitaru opens a flow around the call and records every model request and\ntool call as a checkpoint:\n\n```python\n# agent.py\nfrom pydantic_ai import Agent\nfrom kitaru.adapters.pydantic_ai import KitaruAgent\n\nagent = Agent(\"openai:gpt-5.4\", name=\"support-agent\",\n              system_prompt=\"You resolve support tickets.\")\n\n@agent.tool_plain\ndef refund_payment(order_id: str) -> str:\n    return payments.refund(order_id)  # your real API\n\nsupport = KitaruAgent(agent)\nsupport.run_sync(\"Refund order #4821 — the card reader was double-charged.\")\n```\n\nTraces recorded elsewhere land the same way — import them, and they become\nexecutions like any other:\n\n```python\nfrom kitaru import KitaruClient\n\nclient = KitaruClient()\nclient.executions.import_traces(\"support-traces.jsonl\", format=\"otel\")\nclient.imports.langfuse(\n    \"langfuse-observations.jsonl\",\n    source_project_id=\"prod\",\n    agent_name=\"support-agent\",\n)\n```\n\nEvery run is now a trace you can replay:\n\n```python\ntrace = client.executions.latest()\n\n# Replay — start","github_created_at":"2026-03-05T14:04:26+00:00","created_at":"2026-07-11T23:30:13.484614+00:00","updated_at":"2026-08-03T18:01:12.495241+00:00","categories":[{"slug":"ai-agents","name":"AI Agents","url":"https://www.graphcanon.com/categories/ai-agents","markdown_url":"https://www.graphcanon.com/categories/ai-agents.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/ai-agents"},{"slug":"evaluation-observability","name":"Evaluation & Observability","url":"https://www.graphcanon.com/categories/evaluation-observability","markdown_url":"https://www.graphcanon.com/categories/evaluation-observability.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/evaluation-observability"}],"tags":[{"slug":"agent-framework","name":"agent-framework"},{"slug":"ai-agents","name":"ai-agents"},{"slug":"checkpoints","name":"checkpoints"},{"slug":"durable-execution","name":"durable-execution"},{"slug":"llm","name":"llm"},{"slug":"mcp","name":"mcp"},{"slug":"mlops","name":"mlops"},{"slug":"observability","name":"observability"}],"trust":{"provenance":{"is_fork":false,"github_id":1173563711,"owner_type":"Organization","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-08-03T18:01:10.644Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":16,"days_since_push":0,"last_release_at":"2026-07-14T16:40:53Z"},"security_summary":{"status":"ok","scanner":"mcp_manifest@v1","low_count":0,"high_count":0,"last_scan_at":"2026-07-11T23:30:18.638Z","medium_count":0,"scan_profile":"mcp_manifest","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-08-03T18:01:11.156Z"},"has_cli":{"value":true,"source":"pyproject.toml:[project.scripts]","observed_at":"2026-08-03T18:01:11.156Z"},"languages":{"value":["python"],"source":"github.language+pyproject.toml","observed_at":"2026-08-03T18:01:11.156Z"},"license_spdx":{"value":"Apache-2.0","source":"github.license","observed_at":"2026-08-03T18:01:11.156Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["- 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;"],"when_not_to_use":["- 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."],"source":"enrich:decision_facts","observed_at":"2026-07-17T13:30:48.060Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"Kitaru focuses on recording, replaying, and enhancing the performance of AI agents in production environments using technology from ZenML."}]}}