SuperWitness is a self-hosted Go service that answers one question per run: what did the agent do, how did the product it ran on behave, and was the work any good? It joins a SuperPipeline run, its AgentPod attempts, the traces, logs and errors, and the verdicts recorded against it into one run document, at the moment you read it.
Generic observability tools stop at a trace. I wanted to go from a trace to the run it belongs to, the agent configuration that executed it, and the judgments made about it, so that “did this configuration get better?” becomes a question with an answer. It is also where the record of human judgment lives, which matters if people are going to stay accountable for what agents ship.
Rules the repository keeps:
- Nothing requires it. Products send plain OTLP to a Collector and never wait on SuperWitness.
- Upstream engines, unforked. It queries VictoriaTraces and VictoriaLogs through their published APIs only.
- Permissive licences only. No AGPL, which rules out Grafana, Loki, Tempo and Mimir.
- Verdicts are append-only. Database triggers refuse updates and deletes, and the runtime database role doesn’t own the tables, so it can’t disable them. A correction is a new verdict, and an agent can’t judge a run it executed.
- Unknown is not zero. A source that is down reads as unknown in the run document.
The design rule is that it should stand alone, so anyone’s agents could send OTLP and record verdicts. It isn’t there yet: today it reads runs from SuperPipeline and attempts from AgentPod, and without them it only runs in a local fake mode.