Hotato docs
Open-source local call forensics and regression guards for AI agents. Point it at a recording and it prints the incidents it measured, each with a timestamp, an id, and a self-contained report. Pin one and it becomes a check CI can fail on.
What it is
An MIT-licensed CLI, an MCP server, and a self-hosted workspace: pip install hotato. The core is stdlib-only Python: no required dependencies, no account, no key, no network calls of its own. Verdicts are pass, fail, or refuse (not enough evidence); a non-zero exit gates CI.
Timing comes from energy over time, one track per party. Say-do, what it said against what it did, comes from your trace and system of record. It measures turn timing and say-do, not intent: no speaker identification, no transcription in the timing path, no emotion detection. How it works covers the method; the evidence contract, what each tier lets hotato claim.
The path: one recording to a CI gate
One linear path, offline: autopsy reads a call you already have, pin turns one incident into a reusable check, and prove gates CI on it. Getting started walks each step.
# 1) read one recording; print every measured incident and write its report hotato autopsy ./call.wav # 2) or pull and check your recent calls straight from the platform hotato vapi health # 3) pin an incident id that step 1 printed: a portable failure check hotato pin apx-cc33f46fad58#2 # 4) the CI gate: re-run the stored evidence, fail the build on any gap hotato prove --contracts contracts/
For a throwaway run, uvx hotato autopsy ./call.wav needs no install at all.
Every run writes a self-contained HTML incident report: one file that carries the timeline and the measurements to whoever owns the fix. hotato pin turns that incident into a contract: a file that re-runs the same check against the stored evidence. hotato prove composes the checks you ran into one fail-closed proof that names exactly what it covers. Walk the regression loop →
Common questions
How do I regression test a voice agent?
Autopsy a call that went wrong, pin the incident, and gate CI on the pinned evidence so the same failure fails the build on every push. Each pinned incident is content-addressed, so the same input produces the same verdict on every release.
Can it run offline?
Yes. The scoring paths read the recording, the trace, or your system of record on the machine that invokes the command, and run no model. The stack health commands make one kind of network call: fetching your own calls from your own provider account.
What does an autopsy report?
Every measured incident in the call, by kind: barge-in, talk-over, dead air, and latency. Each carries the second it happened, the number that made it an incident, a severity, and an id you can pin. See one end to end →
Where to go next
The failure atlas
Every failure mode voice-agent builders reported in public, each with the people who reported it and the command that measures it.
Browse the atlas →Capture your calls
One page per stack: the exact command, the credentials, the setup time.
Integrations →