Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

ZizkaDB — visit db.zizka.ai

ZizkaDB

The audit trail database for AI agents

Tamper-evident, checksum-backed decision logs with session replay and time-travel debugging,
built to support EU AI Act Article 12 record-keeping.

Drift detection · MCP server · Python & TypeScript SDKs · Self-host or cloud

Quickstart · Docs · Integrations · Connect · Cloud · Discussions · Contributing

CI License: AGPL-3.0 Release Python SDK TypeScript SDK GitHub stars

Every agent team eventually asks: Why did it say that? Why did it call that tool? ZizkaDB links every agent step to the step that caused it, so you get the answer in one call instead of scrolling through traces.

  • Causal, not just traces. Each event carries a parent_id. db.why(event_id) walks back to the user message, wrong tool, or bad context that started it.
  • Time-travel. db.at(agent, timestamp) rebuilds exactly what the agent knew at any past moment.
  • Tamper-evident audit trail. Every decision is logged with a checksum, so you have a verifiable record for EU AI Act Article 12.
  • Drift detection. See when an agent's behavior shifts from its baseline.
  • Self-host or cloud. Run it on your own Postgres with one Docker command, or use ZizkaDB Cloud. AGPL-3.0, no per-trace billing; self-hosted data never leaves your infrastructure.

Animated: db.why() walks from a tool_call back through llm_response to the root-cause user_message

Contents


Quickstart (60 seconds)

From zero to your first causal chain with one command. No repo clone needed.

Terminal animation: one curl command downloads config, pulls images, starts the stack, installs the SDK and prints a causal chain

1. Start Docker. Docker must be running, Starts take seconds.

2. Install and run. This downloads config and pre-built images, starts Postgres, Qdrant, Redis, the API and the dashboard, then runs a demo agent:

curl -fsSL https://raw.githubusercontent.com/Zizka-ai/ZizkaDB/main/scripts/quickstart-remote.sh | bash

3. See why. The demo prints the causal chain behind the agent's tool call:

tool_call · lookup_order · ORD-8842
  └── llm_response · gpt-4o
        └── user_message · Why was my order delayed?

4. Open the dashboard. localhost:3001 → Open my dashboard → Activity → click any event → Why? (causal) tab.

The self-hosted dashboard is just your dashboard: no signup, no email, no account. Accounts and plans exist only on ZizkaDB Cloud.

Run the demo again anytime: pip install zizkadb-sdk && zizkadb demo

Self-host from a clone

git clone https://github.com/Zizka-ai/ZizkaDB.git && cd ZizkaDB
bash scripts/setup-local.sh
ServiceURL
APIhttp://localhost:8000
Dashboardhttp://localhost:3001 → Open my dashboard
Swaggerhttp://localhost:8000/swagger

Self-host on a server

On a machine other people can reach, set these in infra/.env before starting the stack:

ENV=production                      # turns off the one-click button and dev API keys
DEV_API_KEY=<random>                # must not be the default, or the API refuses to start
JWT_SECRET=<random>                 # openssl rand -hex 32 (also JWT_REFRESH_SECRET)
DEPLOYMENT_MODE=self_hosted
SELFHOST_ADMIN_TOKEN=<long-random>  # python -c "import secrets; print(secrets.token_urlsafe(32))"

The dashboard then asks for the admin token instead of showing the one-click button. Without SELFHOST_ADMIN_TOKEN, dashboard login stays disabled. Everyone who has the token signs in to the same single owner workspace. Check your config with bash scripts/validate-selfhost-config.sh --production. Full steps: wiki/Self-Hosting.

Full guide: DEVELOPMENT.md · Troubleshooting: wiki/Troubleshooting.md


Integrations

Works with the stack you already use — add one package and every step is logged with its cause.

Python    TypeScript    LangChain    CrewAI    LiveKit    MCP    REST API

IntegrationInstallWhat you get
 Pythonpip install zizkadb-sdkAny Python agent
 TypeScriptnpm install zizkadb-sdkAny JavaScript / TypeScript agent
 LangChainpip install zizkadb-langchainDrop-in callback handler
 CrewAIpip install zizkadb-crewaiCrew logger for your agents
 LiveKitpip install zizkadb-livekitVoice agents — one call, one session
 MCPuvx zizkadb-mcpAsk Cursor or Claude why
 REST APISwagger docsAny language

Click a name for its setup guide. New project? Scaffold one with zizkadb init my-agent --template basic.


Connect your agent

import asyncio
from zizkadb import ZizkaDB

async def main():
    async with ZizkaDB(host="http://localhost:8000") as db:
        user = await db.log(agent="my-bot", event="user_message", data={"text": "Why is my order late?"})
        tool = await db.log(agent="my-bot", event="tool_call", data={"tool": "lookup_order"}, parent_id=user.event_id)
        (await db.why(tool.event_id)).print()

asyncio.run(main())
TypeScript
import { ZizkaDB } from 'zizkadb-sdk'

const db = new ZizkaDB({ host: 'http://localhost:8000' })

const user = await db.log({ agent: 'my-bot', event: 'user_message', data: { text: 'Why is my order late?' } })
const tool = await db.log({ agent: 'my-bot', event: 'tool_call', data: { tool: 'lookup_order' }, parentId: user.eventId })
;(await db.why(tool.eventId)).print()

From the terminal: zizkadb why <event_id>. Full guide: CONNECT.md


What it does

FunctionWhat you get
db.why(event_id)The causal chain behind any event
db.at(agent, timestamp)What the agent knew at a past moment
db.search(query)Semantic search over the agent's history
db.context_for(agent, task)Relevant past events, ready to inject into the next prompt
db.baseline(agent)Drift detection: alerts when agent behavior shifts from past sessions
db.forget(key, value)GDPR erasure by metadata filter, including the search index

Audit trail and EU AI Act Article 12

Article 12 of the EU AI Act requires high-risk AI systems to automatically keep logs of what they did. ZizkaDB gives you that record:

  • Checksum-backed decision logs. Every event is stored with a SHA-256 checksum of its content, so any later edit is detectable.
  • Causally linked history. Each decision points to the event that caused it, so an auditor can follow the full chain.
  • Session replay. Step through any past session event by event.
  • Time-travel debugging. Rebuild exactly what the agent knew at any moment with db.at().
  • Drift detection. db.baseline() flags when an agent starts behaving differently from its history.

ZizkaDB supports your record-keeping obligations; it doesn't make a system compliant on its own.

ZizkaDB dashboard showing agent activity


How it works

flowchart LR
    A[Your agent<br/>SDK · LangChain · CrewAI · LiveKit] -->|events + parent_id| B[ZizkaDB API]
    D[Dashboard] --> B
    M[MCP server<br/>Cursor · Claude] --> B
    B --> P[(PostgreSQL<br/>source of truth)]
    B --> Q[(Qdrant<br/>semantic search)]
    B --> R[(Redis<br/>cache)]
  • Causal lineage lives in Postgres: every event stores its parent, and why() walks the chain with a recursive query. No separate graph store.
  • Every event is written twice: to Postgres for structured queries and to Qdrant for semantic search. Design decisions: docs/adr/.

Use with your AI assistant (MCP)

Ask Cursor or Claude "why did support-bot call lookup_order?" and get the chain back. Add this to your MCP config:

{
  "mcpServers": {
    "zizkadb": {
      "command": "uvx",
      "args": ["zizkadb-mcp"],
      "env": { "ZIZKADB_HOST": "http://localhost:8000" }
    }
  }
}

For ZizkaDB Cloud, use ZIZKADB_API_KEY instead. Setup for each client: mcp/README.md. The MCP server is MIT-licensed.


ZizkaDB vs. tracing tools

Tools like Langfuse and LangSmith observe span trees. ZizkaDB audits decisions.

ZizkaDBTypical LLM tracing tools
Explicit cause → effect links✅Span nesting
One-call root cause (db.why())✅Manual trace reading
Time-travel to past agent state✅—
Memory for future runs (db.context_for())✅—
PricingFree self-host (AGPL)Often per-trace

Managed cloud (Pro / Team)

The same features, hosted at db.zizka.ai. No Docker to maintain.

ProTeam
Price€29 / mo€69 / mo
Events / mo†50k100k
API keys25

Sign up →

† Plan targets on managed cloud; not enforced in API yet. See docs/README.md.

FAQ

Do I need to clone this repo?
No. The curl quickstart downloads config and Docker images only.

Do I need an API key locally?
No. http://localhost:8000 uses a built-in dev key.

zizkadb demo says connection refused?
The stack isn't running. Start it with the curl command above or bash scripts/setup-local.sh.

Docs & community
Worked exampleworked/01-support-order-delay
Examplesexamples/
Self-hostingDEVELOPMENT.md · wiki/Self-Hosting
Integrate any agentdocs/integrate/
Issues · DiscussionsIssues · Discussions
SecuritySECURITY.md
AI-assisted developmentAGENTS.md

Contributors

Thanks to everyone who has helped build ZizkaDB. Want to join? Read CONTRIBUTING.md or pick up an open issue.

saadamjad
saadamjad
Zizka-ai
Zizka-ai
arshadgit23
arshadgit23
saadwashmen
saadwashmen
Subhajitdas99
Subhajitdas99
mikeaig4real
mikeaig4real
aqilaziz
aqilaziz
lamenting-hawthorn
lamenting-hawthorn
abdurrehman616
abdurrehman616
HafizHamzaShahid
HafizHamzaShahid
eaz1337
eaz1337
mbilalzeeshan
mbilalzeeshan
AbdelazizBs
AbdelazizBs
Mephistopheles9631
Mephistopheles9631
Qalbeabbas-12
Qalbeabbas-12
towfiq-ul
towfiq-ul

AGPL-3.0 · MCP server MIT · Disable telemetry: export ZIZKADB_TELEMETRY=false
This repo is the open-source self-host stack. The operator console and VPC deploy live in a private repo (why).

关于 About

Audit trail database for AI agents. Tamper-evident, checksum-backed decision logs with session replay and time-travel debugging to support EU AI Act Article 12 record-keeping. Drift detection, MCP, Python & TypeScript SDKs. Self-host or cloud.
agent-auditabilityagent-debuggingai-agentsai-auditai-compliancearticle-12audit-loggingaudit-trailcausal-lineagedrift-detection-mlopseu-ai-actllmopsmcp-serveropen-sourcepythonself-hostedsession-replaytamper-evident-logstime-travel-debuggingtypescript

语言 Languages

Python49.7%
TypeScript46.2%
Shell3.4%
JavaScript0.3%
CSS0.3%
Dockerfile0.1%
PLpgSQL0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
547
Total Commits
峰值: 85次/周
Less
More

核心贡献者 Contributors