# Show HN: OpensourceDB Tamper-evident,checksum-backed decision and session replay

> Source: <https://github.com/ZIZKA-AI-SL/ZizkaDB>
> Published: 2026-09-20 16:07:23+00:00

**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](https://github.com/Zizka-ai/zizkadb-cloud) — see [docs/REPO_SPLIT.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/docs/REPO_SPLIT.md).

Requires [Docker](https://docs.docker.com/get-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](http://localhost:8000) | 
| Dashboard | [http://localhost:3001/login](http://localhost:3001/login) | 
| Swagger | [http://localhost:8000/swagger](http://localhost:8000/swagger) | 

Full guide: **[DEVELOPMENT.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/DEVELOPMENT.md)** · Troubleshooting: [wiki/Troubleshooting.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/wiki/Troubleshooting.md)

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](http://localhost:3001/dashboard/activity?agent=support-bot) → click an event → **Why? (causal)** tab.

``` python
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](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/CONNECT.md)** · [LangChain](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/CONNECT.md#langchain) · [CrewAI](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/CONNECT.md#crewai) · [LiveKit (voice)](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/CONNECT.md#livekit-agents-voice) · [MCP / Cursor](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/mcp/README.md)

| Python | TypeScript | LangChain | CrewAI | LiveKit | MCP | REST | 
|---|---|---|---|---|---|---|
| [`zizkadb-sdk`](https://pypi.org/project/zizkadb-sdk/) | [` zizkadb-sdk`](https://www.npmjs.com/package/zizkadb-sdk) | [` zizkadb-langchain`](https://pypi.org/project/zizkadb-langchain/) | [` zizkadb-crewai`](https://pypi.org/project/zizkadb-crewai/) | [` zizkadb-livekit`](https://pypi.org/project/zizkadb-livekit/) | `uvx zizkadb-mcp` | [Swagger](https://db.zizka.ai/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](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/CONNECT.md#livekit-agents-voice) · [docs/integrations/livekit.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/docs/integrations/livekit.md) · [example](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/examples/livekit-agent).

## **Managed cloud (Pro / Team) — optional**

Same **Why?** feature — hosted at [db.zizka.ai](https://db.zizka.ai). No Docker to maintain.

The operator admin console, VPC deploy, and cloud-only marketing routes live in the private **[zizkadb-cloud](https://github.com/Zizka-ai/zizkadb-cloud)** repo — see [docs/REPO_SPLIT.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/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](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/docs/README.md#plan-limits-honest).

## **More features — drift, time-travel, search, GDPR**

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

## **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](http://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](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/CONNECT.md#livekit-agents-voice).

`zizkadb demo` connection refused?

Start the stack: `curl -fsSL …/quickstart-remote.sh | bash` or `bash scripts/setup-local.sh`.

## **Docs & community**

| Worked example | [worked/01-support-order-delay](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/worked/01-support-order-delay) | 
| Examples | [examples/](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/examples) — includes[LiveKit voice agent](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/examples/livekit-agent) | 
| LiveKit integration | [docs/integrations/livekit.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/docs/integrations/livekit.md) | 
| Self-hosting | [DEVELOPMENT.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/DEVELOPMENT.md) ·[wiki/Self-Hosting](https://github.com/Zizka-ai/ZizkaDB/wiki/Self-Hosting) | 
| Troubleshooting | [wiki/Troubleshooting.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/wiki/Troubleshooting.md) | 
| Integrate any agent | [docs/integrate/](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/docs/integrate) | 
| Issues · Discussions | [Issues](https://github.com/Zizka-ai/ZizkaDB/issues) ·[Discussions](https://github.com/Zizka-ai/ZizkaDB/discussions) | 
| Contributing · Security | [CONTRIBUTING.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/CONTRIBUTING.md) ·[SECURITY.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/SECURITY.md) | 
| AI-assisted development | [AGENTS.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/AGENTS.md) ·[docs/ai/CODING_STANDARDS.md](https://github.com/ZIZKA-AI-SL/ZizkaDB/blob/main/docs/ai/CODING_STANDARDS.md) | 

<sub>AGPL-3.0 · MCP server MIT · Disable telemetry: `export ZIZKADB_TELEMETRY=false`</sub>
