Home / Integrations / LiveKit

Score your LiveKit calls.

LiveKit records inside your own deployment. Run one track egress per participant, then hand Hotato the two WAVs: it scores the turn-taking timing locally. No recording leaves your environment.

How capture works

Capture in your infra, one track per party.

hotato setup --stack livekit prints an Egress scaffold. A RoomComposite egress mixes both parties onto one channel, so run two audio-only Track egresses instead — one per participant — and keep them separate.

There is no vendor recording API for Hotato to pull from, so nothing calls out: you produce the WAVs in your deployment and Hotato scores the local files. Install the live-capture helpers with pip install 'hotato[livekit]'.

capture pipelinein your infra
  • your egress2 tracks
  • caller.wavagent.wav
  • capture--caller / --agent
  • scorelocal file
  • scorecard5 dimensions

Two mono WAVs in, one per-dimension scorecard out. The parties stay split all the way to the file, so every overlap keeps its owner.

bashyour infrastructure
Scaffold the recording config
$ hotato setup --stack livekit
Score the two tracks you captured
$ hotato capture --stack livekit --caller caller.wav --agent agent.wav
Already have one dual-channel WAV?
$ hotato run --stereo captured.wav --expect yield

No egress wired yet? hotato capture --stack livekit --demo runs the loop on a bundled call. Pass --onset <sec> if you already know the caller's onset.

Run it

Scaffold, record, then score locally.

setup prints the Egress scaffold. Point capture at the two mono WAVs your egress wrote, or hand run a single dual-channel file — caller on one channel, agent on the other.

--expect yield reads a caller who starts talking as an interruption the agent should yield to; --expect hold reads it as a backchannel.

Capture-only

Nothing calls out.

LiveKit capture runs entirely inside your deployment, and there is no vendor origination API, so Hotato scores what your pipeline writes and never places a call.

LiveKit · what Hotato does
CapabilityLiveKitBasis
Capture a recorded callYesTwo track egresses in your infra; Hotato scores the local WAVs
Drive a live callCapture-onlyNo vendor origination API — Hotato never places LiveKit calls
Credentials & scope

No key to hand over.

Stays in your infraCapture happens inside your own deployment, so no LiveKit credential ever reaches Hotato. When you connect a hosted stack elsewhere, hotato connect stores that key at file mode 0600 and sends it only to that vendor.

ScopeHotato reads turn-taking timingdid_yield, seconds_to_yield, talk_over_sec — from speech energy. No speaker identification, diarization scoring, transcription grading, emotion or intent. Energy is not intent.