Home / Product

One MIT CLI, seven surfaces, and the evidence each one leaves behind.

Hotato is 72 top-level commands (174 counting subcommands) that turn a call recording into a timestamped incident, an incident into a portable check, and a check into a CI exit code. Every page below names the commands it describes.

  • MIT
  • 0 runtime deps
  • exit 0 pass · 1 regression · 2 refuse
  • 1.20.0

The surfaces

Start where your problem is.

Each surface stands on its own; together they are one loop from a recording to a gate.

Five commands take a recording to a red build.

This is the sequence hotato --help prints as its own start-here block, in order.

  1. Check one call.

    The deterministic whole-call scanner lists incidents with timestamps and writes a self-contained HTML report under hotato-output/.

  2. Scan the folder.

    The same engine over a directory, reporting the measured share of calls with no critical incidents — a count, never a blended quality score.

  3. Pull from your stack.

    The health report over recent calls from a connected vendor.

  4. Pin the incident.

    One incident id becomes a portable failure contract carrying its own audio and policy.

  5. Prove it in CI.

    The gate re-scores the stored evidence and exits non-zero when a lane fails or comes back inconclusive.

bash
$ hotato check ./call.wav
$ hotato scan ./calls
$ hotato vapi health
$ hotato pin apx-<id>
$ hotato prove --contracts contracts
Step 1 works before you have a recording of your own: --demo reads the two-channel call bundled in the install.

What the instrument declines to tell you.

Each of these is a scope boundary the CLI states in its own help text, and each one is why a verdict here means something.

Scope boundaries, and the command that enforces each one
The boundaryWhat it means in practiceWhere
No accuracy percentage Results are reproducible timing measurements with every threshold exposed and every frame inspectable. No single number stands in for them. autopsy, scan, run
Timing, never intent A candidate moment is an overlap onset or a response gap. The tool cannot know whether a caller sound was “mhm” or “stop”; you decide and label it. scan --stereo
Bad input is refused, not scored Identical channels, a silent required channel, or a mono file on the two-channel path exit 2 with the reason and the next step. trust, autopsy
Inconclusive is never green A lane that refused or could not tell exits 2 even when nothing failed, so CI cannot read missing evidence as a pass. prove
A model judge stays on its own lane Deterministic pass/fail/inconclusive counts and the judge count are reported separately, and the two are never merged into one score. assert run, test run
A contract pass re-measures stored evidence A green contract verify says the evidence, policy and scorer still agree with the human label. Testing the current agent is a separate capture. contract verify

What every verdict rests on →