"Which customer is the expensive one?"
A team self-hosting LiveKit, paying three provider invoices, could not tell. A developer elsewhere was surprised a 10-minute call came to $1.50–2.00 once everything was added up.
One collector in your voice agent; one dashboard with what each call cost, how long the caller waited, and why SIP calls failed. Built for agencies and multi-tenant SaaS that resell voice, and for small teams self-hosting LiveKit.
Busy Here on the latest calls
Likely a concurrent-call limit, not a busy line. Check the trunk's channel/CPS cap.
Harbor HVAC loses money
$0.087/min cost against what you charge them.
Time lost in LLM first token
Most turns over 1.2 s wait on the LLM, not on end-of-turn or TTS.
rime / mistv2 in 8 calls
Flagged instead of counted as $0 until you add a price.
voiceops demo: fictional customers, generated calls. Exact numbers vary per run.A voice agent touches speech-to-text, an LLM, text-to-speech and a carrier on every call. Each one has its own bill, its own logs and its own idea of "fast". These come from public posts (Reddit, the LiveKit forum, X) we read while researching how teams run voice agents in production.
A team self-hosting LiveKit, paying three provider invoices, could not tell. A developer elsewhere was surprised a 10-minute call came to $1.50–2.00 once everything was added up.
Meanwhile callers heard about 950 ms of silence. Another team called matching each provider's dashboard by timestamp "archaeology", not observability.
Outbound calls just started failing. Others hit 404 "No trunk found" on every inbound call, or 486 Busy Here from about 14 concurrent calls in load tests.
One event stream, three views. Built on three open-source packages in the same repo: CallCost, CallTrace and SIPWatch.
Agencies can run one project per client, or one project with every event tagged by customer_id.
attach_livekit(session, ...) for LiveKit Agents Python. Any other stack can POST /v0/events with plain JSON.
Cost, margin, turn latency and SIP failures per project. Alerts open once and send "resolved" when the problem stops.
Per project, from the same events.
Split by STT, LLM, TTS and telephony, so you see where the money goes.
Enter what you charge each customer; see who is profitable and who is not.
And which step slow turns lose time in: end-of-turn detection, LLM first token or TTS first audio.
For example 486 around ~14 concurrent calls, or 404 "No trunk found" from "+" formatting, each with a suggested fix.
A model with no price shows up as a warning instead of a silent $0.
Line items for every cost and a waterfall of every turn.
Self-host with one Docker container and SQLite, or use the hosted beta. The demo needs no third-party accounts.
# from a clone of the repo: source code coming soon pip install ./cost-call ./call-traces ./sip-monitor ./voice-ops voiceops demo # demo project + its API key voiceops serve # http://127.0.0.1:8080 # one project per client (prints its API key) voiceops project create "Acme Dental" # or one Docker container, SQLite on a volume docker build -f voice-ops/Dockerfile -t voiceops . docker run -p 8080:8080 -v voiceops-data:/data voiceops
from voiceops.collect import attach_livekit attach_livekit( session, api_key=os.environ["VOICEOPS_KEY"], customer_id="acme-dental", )
curl -X POST https://<your-voiceops-host>/v0/events \ -H "Authorization: Bearer $VOICEOPS_KEY" \ -H "Content-Type: application/json" \ -d '{"v":0,"ts":1793900000,"call_id":"c-1","kind":"llm","customer_id":"acme-dental", "provider":"openai","model":"gpt-4o-mini","prompt_tokens":812,"completion_tokens":64}'
VoiceOps stores metrics, not audio or conversation text. A TypeScript snippet for LiveKit Agents JS is in the repo but not tested yet. Pipecat: cost only for now.
Provisional. These prices may change before general availability.
One Docker container, SQLite, your own servers. Same dashboard, alerts and collector.
The first design partners use the hosted beta free. After that:
Honest list. No billing or self-serve signup: beta access is given by hand from the waitlist. No OpenTelemetry export, no Telnyx configuration checks, no audio quality analysis. The TypeScript collector is untested and Pipecat sends cost only. Latency is measured inside the agent process, so the phone leg to the caller's ear is not included.
We are looking for a few agencies, multi-tenant voice SaaS teams or self-hosted LiveKit teams (roughly 10k–500k minutes a month) to use it on their own calls.
We only use your email to contact you about this. Privacy.