Skip to main content

Find where your voice agent talks over callers, and keep it from coming back. Offline regression tests from your own call recordings, MIT.

Project description

hotato: find where your voice agent talks over callers, and keep it from coming back

hotato

Find where your voice agent talks over callers, and keep it from coming back.

Offline regression tests from your own call recordings. MIT.

PyPI version PyPI monthly downloads License: MIT Python 3.9 to 3.13 offline: yes runtime deps: zero tests

Terminal recording of hotato scan, run, and fixture create on a recorded call

One command finds every moment your agent talks over the caller:

uvx hotato scan --stereo your-call.wav   # two-channel WAV: caller ch0, agent ch1

From there: run scores a call to a PASS/FAIL verdict and an HTML report, compare measures a before/after delta for one fixed moment (fixed/regressed/improved/worse), verify proves it at battery scale across every fixture (reporting coincidence, not causation), and fixture create saves any moment as a permanent regression test that fails CI if it comes back. Everything runs on your machine; the audio never leaves it.

Hotato catches the three talk-over failures callers feel: the agent talking over the caller, false-stopping on a backchannel ("mhm"), or yielding too slowly. You label the expected behavior (yield = stop for the caller, hold = keep talking through a backchannel); Hotato measures whether the timing matched. It reports what it measured, never a guess at intent.

Try it with no audio of your own:

uvx hotato demo   # scores two real recorded calls a provider's default agent failed, so you see the FAILs, timelines, and fix cards

MCP

uvx --from "hotato[mcp]" hotato-mcp   # one tool, voice_eval_run; client configs in docs/MCP.md

Install

uvx hotato runs any command with zero install. To add it to a project:

pip install hotato                 # core: stdlib-only, zero dependencies
pip install 'hotato[neural]'       # optional Silero VAD cross-check
pip install 'hotato[livekit]'      # LiveKit live capture
pip install 'hotato[pipecat]'      # Pipecat live capture

Depth

Why "hotato": good turn-taking is a game of hot potato. Speak, then pass the turn the moment the caller wants it. MIT licensed (LICENSE); the open core stays open.

mcp-name: io.github.attenlabs/hotato

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hotato-0.4.0.tar.gz (7.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hotato-0.4.0-py3-none-any.whl (2.9 MB view details)

Uploaded Python 3

File details

Details for the file hotato-0.4.0.tar.gz.

File metadata

  • Download URL: hotato-0.4.0.tar.gz
  • Upload date:
  • Size: 7.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hotato-0.4.0.tar.gz
Algorithm Hash digest
SHA256 60830cf2098d98e287807a779b1f561ef2f50f9cb2b4721e55333b42f3259b67
MD5 03d98f344d7351e73b011de05f4bfe17
BLAKE2b-256 3d31c9d5998e19cf7f06900df70fcab2c3b6f9ac35c56b3595c9be86a4dc5abb

See more details on using hashes here.

File details

Details for the file hotato-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: hotato-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for hotato-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5f5cb62686ab0aae6ceab32103df60f43e09f64337548f51433bb43f313243cf
MD5 6f48c1be6f172ec245eef185344e808c
BLAKE2b-256 5f98407e11733ff8982afdd7747051ef1b12a9e73d6180f72af7ba65f791f4e3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page