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.1.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.1-py3-none-any.whl (2.9 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hotato-0.4.1.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.1.tar.gz
Algorithm Hash digest
SHA256 b5ca4592a52c5f5aef00485fe6f9b021f0e80f812898856503f07e0b8e43ff44
MD5 84abddc3e3d14a68d7475ea4dc3fde62
BLAKE2b-256 02f98b8df20facb04d8b75ae0a46f94b867df4a57ce12595473be9f3ed644387

See more details on using hashes here.

File details

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

File metadata

  • Download URL: hotato-0.4.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6492bd72a894e55a965c7edae3027b341d7f7f9e177c8b2ef143c2f1446dfcb4
MD5 a29afc8e12968fb32195f6697ee931fc
BLAKE2b-256 f964368aec8fafea61984a25bc08167606b1652d4398e77ea89a2a0f3cd78560

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