Product architecture
What the product is made of
Nine components, one job each. What an AI agent records about its own work goes in at one end, and a causal graphCausal graph (DAG)A map of what influences what.A directed acyclic graph where nodes are variables and directed edges represent direct causal influence.Full glossary of why it behaved that way comes out at the other. This is the product a customer runs.
Nine components. One job each. An agent's own telemetryTelemetryThe data a system records about what it is doing.Logs, metrics and traces emitted by a running system.Full glossary goes in one end; a causal graphCausal graph (DAG)A map of what influences what.A directed acyclic graph where nodes are variables and directed edges represent direct causal influence.Full glossary of why it behaved that way comes out the other. This is the product a customer runs.
Also not drawn: the API checks the databases and the extractor directly for live status, not only through the causal engine. The diagram leaves that out to keep the one path that matters, discovery, readable.
Also not drawn:
api queries ClickHouse, Redis, and variable-extractor directly for live status, not only through causal-engine — omitted to keep the one path that matters, discovery, uncluttered.The nine components
What each one is for, and the one thing it depends on.
| Service | What it does |
|---|---|
| variable-extractor | The only way data gets in. It keeps only the fields a schema lists, and blocks personal data before anything is stored. |
| clickhouse | The database. It holds every extracted variable and every graph Auga discovers. |
| redis | A buffer between extraction and storage, and a fast cache for the API. |
| causal-engine | Finds the causal graph. It reads only the database, chooses among ten discovery and estimation methods, and grades every link before it is trusted. |
| api | The only public entry point. It coordinates the services behind it, and nothing outside talks to them directly. |
| dashboard | The screen people use. It gets everything it shows from the API. |
| hallucination-judge | Runs on its own. It checks whether an AI answer is unsupported, and only its verdict leaves the container. |
| groundedness-judge | Runs on its own, like the other judge. It checks whether an answer comes from the documents the agent looked up. |
| MCP / external agents | Not one of Auga's services. Any program that uses the API, alongside the dashboard. |
| Service | Port(s) | Job |
|---|---|---|
| variable-extractor | :8001 · OTLP :4317/:4318 | The only ingest path. Allowlist-only extraction against a YAML schema; blocks PII before anything is written. |
| clickhouse | :8123 · :9000 | Columnar store for every extracted variable row and every discovered graph. |
| redis | :6379 | Stream buffer between extraction and storage; live cache for the API. |
| causal-engine | :8002 | Reads ClickHouse only. Ten discovery/estimation algorithms behind one selector; grades every edge before it's trusted. |
| api | :8000 | The only public surface. Orchestrates the other three; nothing external talks to them directly. |
| dashboard | :5173 | React + D3 — the human-facing consumer of the API. |
| hallucination-judge | :8091 | Standalone. Scores a (prompt, completion) pair; only the verdict leaves the container. |
| groundedness-judge | :8092 | Standalone sibling — scores whether an answer is derived from retrieved context. |
| MCP / external agents | — | Not a CausalAgent service — any programmatic client of the API, alongside the dashboard. |