ZIZKA-AI-SL/ZizkaDB

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.

Python

80

359 commits

updated Sep 17, 2026

See the code
agent-auditability
agent-debugging
ai-agents
ai-audit
ai-compliance
article-12
audit-logging
audit-trail
causal-lineage
drift-detection-mlops
eu-ai-act
llmops
mcp-server
open-source
python
self-hosted
session-replay
tamper-evident-logs
time-travel-debugging
typescript

See what people are saying (1)

README

ZizkaDB

When 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.

CI License: AGPL-3.0 Release Python SDK LangChain CrewAI LiveKit MCP

Try it ↓ · DEVELOPMENT.md · CONNECT.md · Contributing

Why feature — pick any agent step and walk back to root cause with db.why()

Try it (60 seconds)

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

Self-host from a clone

git clone https://github.com/Zizka-ai/ZizkaDB.git && cd ZizkaDB
bash scripts/setup-local.sh

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


Why?

Every agent team asks: Why did it say that? Why did it call that tool?

  1. Log agent steps with parent_id (each step links to the one that caused it).
  2. Ask why — terminal: zizkadb why <event_id> or Python: (await db.why(event_id)).print()
  3. See the chain — walk back to the user message, wrong tool, or bad context.

Dashboard (same chain): Activity → support-bot → click an event → Why? (causal) tab.

db.why() output — tool_call to llm_response to user_message


Connect (3 lines)

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


Integrations

PythonTypeScriptLangChainCrewAILiveKitMCPREST
zizkadb-sdkzizkadb-sdkzizkadb-langchainzizkadb-crewaizizkadb-livekituvx zizkadb-mcpSwagger

Scaffold a project: zizkadb init my-agent --template basic

Voice agents (LiveKit)

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.


Managed cloud (Pro / Team) — optional

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.

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.

More features — drift, time-travel, search, GDPR
FunctionWhat 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
FAQ

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.

Docs & community
Worked exampleworked/01-support-order-delay
Examplesexamples/ — includes LiveKit voice agent
LiveKit integrationdocs/integrations/livekit.md
Self-hostingDEVELOPMENT.md · wiki/Self-Hosting
Troubleshootingwiki/Troubleshooting.md
Integrate any agentdocs/integrate/
Issues · DiscussionsIssues · Discussions
Contributing · SecurityCONTRIBUTING.md · SECURITY.md
AI-assisted developmentAGENTS.md · docs/ai/CODING_STANDARDS.md

AGPL-3.0 · MCP server MIT · Disable telemetry: export ZIZKADB_TELEMETRY=false

Contributors

saadamjad

193 commits

Zizka-ai

114 commits

arshadgit23

23 commits

saadwashmen

10 commits

ZIZKA-AI-SL/ZizkaDB

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.

Python

80

359 commits

updated Sep 17, 2026

See the code
agent-auditability
agent-debugging
ai-agents
ai-audit
ai-compliance
article-12
audit-logging
audit-trail
causal-lineage
drift-detection-mlops
eu-ai-act
llmops
mcp-server
open-source
python
self-hosted
session-replay
tamper-evident-logs
time-travel-debugging
typescript

See what people are saying (1)

README

ZizkaDB

When 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.

CI License: AGPL-3.0 Release Python SDK LangChain CrewAI LiveKit MCP

Try it ↓ · DEVELOPMENT.md · CONNECT.md · Contributing

Why feature — pick any agent step and walk back to root cause with db.why()

Try it (60 seconds)

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

Self-host from a clone

git clone https://github.com/Zizka-ai/ZizkaDB.git && cd ZizkaDB
bash scripts/setup-local.sh

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


Why?

Every agent team asks: Why did it say that? Why did it call that tool?

  1. Log agent steps with parent_id (each step links to the one that caused it).
  2. Ask why — terminal: zizkadb why <event_id> or Python: (await db.why(event_id)).print()
  3. See the chain — walk back to the user message, wrong tool, or bad context.

Dashboard (same chain): Activity → support-bot → click an event → Why? (causal) tab.

db.why() output — tool_call to llm_response to user_message


Connect (3 lines)

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


Integrations

PythonTypeScriptLangChainCrewAILiveKitMCPREST
zizkadb-sdkzizkadb-sdkzizkadb-langchainzizkadb-crewaizizkadb-livekituvx zizkadb-mcpSwagger

Scaffold a project: zizkadb init my-agent --template basic

Voice agents (LiveKit)

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.


Managed cloud (Pro / Team) — optional

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.

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.

More features — drift, time-travel, search, GDPR
FunctionWhat 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
FAQ

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.

Docs & community
Worked exampleworked/01-support-order-delay
Examplesexamples/ — includes LiveKit voice agent
LiveKit integrationdocs/integrations/livekit.md
Self-hostingDEVELOPMENT.md · wiki/Self-Hosting
Troubleshootingwiki/Troubleshooting.md
Integrate any agentdocs/integrate/
Issues · DiscussionsIssues · Discussions
Contributing · SecurityCONTRIBUTING.md · SECURITY.md
AI-assisted developmentAGENTS.md · docs/ai/CODING_STANDARDS.md

AGPL-3.0 · MCP server MIT · Disable telemetry: export ZIZKADB_TELEMETRY=false

Contributors

saadamjad

193 commits

Zizka-ai

114 commits

arshadgit23

23 commits

saadwashmen

10 commits

Languages

Python

49.0%

TypeScript

46.8%

Shell

3.4%