CallTrace
01
Python stdlib one SQLite file Apache-2.0 LiveKit Agents 1.x & Pipecat collectors

See the wait your callers actually hear.

An open-source, per-turn timeline for self-hosted LiveKit and Pipecat voice agents. It shows how long each caller waited after they stopped talking, and which step (end-of-turn detection, LLM, TTS or something else) took the time.

Example waterfall of one call
Turn 1
248247TTS first byte 1,530
2,224 ms
Turn 2
208307149167
831 ms
Turn 3
315297188121
922 ms
Turn 4
249343157
749 ms est.
End of turn LLM first token TTS first byte Other: network, telephony, framework Hatched = estimated
Synthetic demo data from calltrace demo.
02

The problem

Latency

"Fast" dashboards, slow calls

One in-house team said their dashboards showed a fast agent while callers heard about 950 ms of silence. Each provider reports its own number. Nobody reports the whole turn.

Debugging

Debugging is archaeology

To find the slow step, teams open the STT, LLM, TTS and telephony panels and line them up by timestamp. One person called that "archaeology", not observability.

Self-hosted

Self-hosted means no built-in view

LiveKit's agent insights cover LiveKit Cloud. LLM tracing tools stop at the LLM request. Teams on their own infrastructure get by with logs, Sentry and Slack.

03

How it works

  1. Attach a collector

    One call for LiveKit (attach(session, ...)) or one observer for Pipecat. It reads the metrics your framework already emits and posts them in batches from a background thread.

  2. Every turn, split up

    End of turn, LLM time to first token, TTS time to first byte, and the rest. Each turn shows whether its latency was measured or estimated, and what the bottleneck was.

  3. Find the pattern

    p50 and p95 by agent, environment and provider/model. The slowest calls. Which step causes the slow turns. Click a call to see its waterfall.

04

Quickstart

Local demo
# no accounts, no keys
pip install calltrace      # source code coming soon until it is on PyPI
calltrace demo             # 24 synthetic calls
calltrace serve            # http://127.0.0.1:8765
calltrace report --by model
In your LiveKit agent (Python)
# in your LiveKit agent
from calltrace.collectors.livekit import attach
from calltrace.collectors.sender import HttpSender

sender = HttpSender()   # $CALLTRACE_URL
collector = attach(session, sender,
    call_id=ctx.room.name,
    agent_id="support-agent", env="prod")

Not LLM tracing: CallTrace measures the silence between the caller's last word and the agent's first audio, per turn. It stores no prompts, transcripts or audio.

05

Pricing (provisional)

Open source Free
  • Self-hosted, Apache-2.0
  • LiveKit and Pipecat collectors
  • Web UI, CLI, JSON reports
CallTrace Cloud Free → $49 / $149 a month
  • Free up to 1,000 calls a month
  • $49/month: 30-day retention
  • $149/month: 90-day retention

Cloud is not available yet. Prices are provisional and may change before launch.

06

Join the Cloud waitlist

Tell us your stack. We are looking for 3 teams running real calls to shape the hosted version with us.

We only use your email to contact you about this. Privacy.