Home/Docs/Overview

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.

0s1s2s3s4s5s6sCallerAgentonset
fd-01-missed-interruption · one of the example calls bundled in the repo. The caller barges in at 2.00s and the agent keeps talking straight through it (talk_over=2.51s, did_yield=false). This is the per-event timeline the report draws for every scored moment.

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.

bash
# 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.

Find it, share it, prevent it

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

An incident report

One recording, one command, one incident, end to end.

Open it →

Getting started

First touch to a CI gate, five steps, offline.

Start →

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 →

The regression loop

A bad call becomes a permanent regression test.

Loop →

Capture your calls

One page per stack: the exact command, the credentials, the setup time.

Integrations →

How it works

The turn-taking timing engine, threshold by threshold.

Method →

Visual report

Per-event timelines, analytics, a frame inspector, one file.

Report →

MCP tool

An agent or IDE runs the same checks mid-task.

MCP →

CI integration

One PR comment; a gate on regression.

CI →

Evidence

Four evidence tiers, 20 ms median caller-onset error, what it refuses.

Evidence →

Writing

Field notes: turn-taking under full-duplex, the transcript gap, and say-do.

Read →