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.
See the codeWhen your agent misbehaves, see why.
Self-hosted audit trail for AI agents — one command or one dashboard click from any step back to root cause.
This repository is the open-source self-host stack (API, tenant dashboard, SDKs, MCP). Operator admin console and VPC deploy live in private zizkadb-cloud — see docs/REPO_SPLIT.md.
Requires Docker. First image pull may take 5–10 minutes.
curl -fsSL https://raw.githubusercontent.com/Zizka-ai/ZizkaDB/main/scripts/quickstart-remote.sh | bash
You should see:
tool_call · lookup_order · ORD-8842
└── llm_response · gpt-4o
└── user_message · Why was my order delayed?
Run again anytime: pip install zizkadb-sdk && zizkadb demo
git clone https://github.com/Zizka-ai/ZizkaDB.git && cd ZizkaDB
bash scripts/setup-local.sh
| Service | URL |
|---|---|
| API | http://localhost:8000 |
| Dashboard | http://localhost:3001/login |
| Swagger | http://localhost:8000/swagger |
Full guide: DEVELOPMENT.md · Troubleshooting: wiki/Troubleshooting.md
Every agent team asks: Why did it say that? Why did it call that tool?
parent_id (each step links to the one that caused it).zizkadb why <event_id> or Python: (await db.why(event_id)).print()Dashboard (same chain): Activity → support-bot → click an event → Why? (causal) tab.
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())
Full guides: CONNECT.md · LangChain · CrewAI · LiveKit (voice) · MCP / Cursor
| Python | TypeScript | LangChain | CrewAI | LiveKit | MCP | REST |
|---|---|---|---|---|---|---|
zizkadb-sdk | zizkadb-sdk | zizkadb-langchain | zizkadb-crewai | zizkadb-livekit | uvx zizkadb-mcp | Swagger |
Scaffold a project: zizkadb init my-agent --template basic
pip install zizkadb-livekit
One LiveKit call → one Session in Activity (transcript only, no audio in ZizkaDB). Full guide: CONNECT.md → LiveKit · docs/integrations/livekit.md · example.
Same Why? feature — hosted at db.zizka.ai. No Docker to maintain.
The operator admin console, VPC deploy, and cloud-only marketing routes live in the private zizkadb-cloud repo — see docs/REPO_SPLIT.md.
| Pro | Team | |
|---|---|---|
| Price | €29 / mo | €69 / mo |
| Events / mo† | 50k | 100k |
| API keys | 2 | 5 |
† Plan targets on managed cloud; not enforced in API yet. See docs/README.md.
| Function | What it does |
|---|---|
db.baseline() | Detect when agent behavior drifts vs past sessions |
db.at() | Reconstruct what the agent knew at a timestamp |
db.search() | Semantic search over agent history |
db.context_for() | Inject relevant past events into prompts |
db.forget() | GDPR erasure by metadata filter |
Do I need to clone this repo?
No — the curl quickstart downloads config + Docker images only.
Do I need an API key locally?
No — http://localhost:8000 uses a built-in dev key. Dashboard: localhost:3001/login.
How is this different from Langfuse / LangSmith?
They observe span trees. ZizkaDB audits with explicit parent_id chains and db.why() on your Postgres — self-host under AGPL, no trace billing.
Voice agents with LiveKit?
Install zizkadb-livekit — one pip command, connect to Docker with ZIZKADB_HOST=http://localhost:8000. See LiveKit guide.
zizkadb demo connection refused?
Start the stack: curl -fsSL …/quickstart-remote.sh | bash or bash scripts/setup-local.sh.
| Worked example | worked/01-support-order-delay |
| Examples | examples/ — includes LiveKit voice agent |
| LiveKit integration | docs/integrations/livekit.md |
| Self-hosting | DEVELOPMENT.md · wiki/Self-Hosting |
| Troubleshooting | wiki/Troubleshooting.md |
| Integrate any agent | docs/integrate/ |
| Issues · Discussions | Issues · Discussions |
| Contributing · Security | CONTRIBUTING.md · SECURITY.md |
| AI-assisted development | AGENTS.md · docs/ai/CODING_STANDARDS.md |
AGPL-3.0 · MCP server MIT · Disable telemetry: export ZIZKADB_TELEMETRY=false
Python
49.0%
TypeScript
46.8%
Shell
3.4%
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.
See the codeWhen your agent misbehaves, see why.
Self-hosted audit trail for AI agents — one command or one dashboard click from any step back to root cause.
This repository is the open-source self-host stack (API, tenant dashboard, SDKs, MCP). Operator admin console and VPC deploy live in private zizkadb-cloud — see docs/REPO_SPLIT.md.
Requires Docker. First image pull may take 5–10 minutes.
curl -fsSL https://raw.githubusercontent.com/Zizka-ai/ZizkaDB/main/scripts/quickstart-remote.sh | bash
You should see:
tool_call · lookup_order · ORD-8842
└── llm_response · gpt-4o
└── user_message · Why was my order delayed?
Run again anytime: pip install zizkadb-sdk && zizkadb demo
git clone https://github.com/Zizka-ai/ZizkaDB.git && cd ZizkaDB
bash scripts/setup-local.sh
| Service | URL |
|---|---|
| API | http://localhost:8000 |
| Dashboard | http://localhost:3001/login |
| Swagger | http://localhost:8000/swagger |
Full guide: DEVELOPMENT.md · Troubleshooting: wiki/Troubleshooting.md
Every agent team asks: Why did it say that? Why did it call that tool?
parent_id (each step links to the one that caused it).zizkadb why <event_id> or Python: (await db.why(event_id)).print()Dashboard (same chain): Activity → support-bot → click an event → Why? (causal) tab.
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())
Full guides: CONNECT.md · LangChain · CrewAI · LiveKit (voice) · MCP / Cursor
| Python | TypeScript | LangChain | CrewAI | LiveKit | MCP | REST |
|---|---|---|---|---|---|---|
zizkadb-sdk | zizkadb-sdk | zizkadb-langchain | zizkadb-crewai | zizkadb-livekit | uvx zizkadb-mcp | Swagger |
Scaffold a project: zizkadb init my-agent --template basic
pip install zizkadb-livekit
One LiveKit call → one Session in Activity (transcript only, no audio in ZizkaDB). Full guide: CONNECT.md → LiveKit · docs/integrations/livekit.md · example.
Same Why? feature — hosted at db.zizka.ai. No Docker to maintain.
The operator admin console, VPC deploy, and cloud-only marketing routes live in the private zizkadb-cloud repo — see docs/REPO_SPLIT.md.
| Pro | Team | |
|---|---|---|
| Price | €29 / mo | €69 / mo |
| Events / mo† | 50k | 100k |
| API keys | 2 | 5 |
† Plan targets on managed cloud; not enforced in API yet. See docs/README.md.
| Function | What it does |
|---|---|
db.baseline() | Detect when agent behavior drifts vs past sessions |
db.at() | Reconstruct what the agent knew at a timestamp |
db.search() | Semantic search over agent history |
db.context_for() | Inject relevant past events into prompts |
db.forget() | GDPR erasure by metadata filter |
Do I need to clone this repo?
No — the curl quickstart downloads config + Docker images only.
Do I need an API key locally?
No — http://localhost:8000 uses a built-in dev key. Dashboard: localhost:3001/login.
How is this different from Langfuse / LangSmith?
They observe span trees. ZizkaDB audits with explicit parent_id chains and db.why() on your Postgres — self-host under AGPL, no trace billing.
Voice agents with LiveKit?
Install zizkadb-livekit — one pip command, connect to Docker with ZIZKADB_HOST=http://localhost:8000. See LiveKit guide.
zizkadb demo connection refused?
Start the stack: curl -fsSL …/quickstart-remote.sh | bash or bash scripts/setup-local.sh.
| Worked example | worked/01-support-order-delay |
| Examples | examples/ — includes LiveKit voice agent |
| LiveKit integration | docs/integrations/livekit.md |
| Self-hosting | DEVELOPMENT.md · wiki/Self-Hosting |
| Troubleshooting | wiki/Troubleshooting.md |
| Integrate any agent | docs/integrate/ |
| Issues · Discussions | Issues · Discussions |
| Contributing · Security | CONTRIBUTING.md · SECURITY.md |
| AI-assisted development | AGENTS.md · docs/ai/CODING_STANDARDS.md |
AGPL-3.0 · MCP server MIT · Disable telemetry: export ZIZKADB_TELEMETRY=false
Python
49.0%
TypeScript
46.8%
Shell
3.4%