vozo
01
Hosted beta Self-host free New: agent builder

What each call cost, how long callers waited, why SIP failed.

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. No agent yet? Build it in vozo, and every call goes to the same dashboard.

Demo agency · last 14 days Synthetic data
Cost / min$0.071
Margin72%
Turns > 1.2 s17%
  • SIP 486 ×14

    Busy Here on the latest calls

    Likely a concurrent-call limit, not a busy line. Check the trunk's channel/CPS cap.

  • −$2.63

    Harbor HVAC loses money

    $0.087/min cost against what you charge them.

  • Slow turns

    Time lost in LLM first token

    Most turns over 1.2 s wait on the LLM, not on end-of-turn or TTS.

  • Unpriced

    rime / mistv2 in 8 calls

    Flagged instead of counted as $0 until you add a price.

From vozo demo: fictional customers, generated calls. Exact numbers vary per run.
02

Three dashboards per vendor, and still no answer

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.

Cost · one team said

"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.

Latency · one team said

"The dashboards said we were fast"

Meanwhile callers heard about 950 ms of silence. Another team called matching each provider's dashboard by timestamp "archaeology", not observability.

SIP · one team said

"Our trunk disappeared after 7–8 hours"

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.

03

Who it’s for

Teams that run voice agents for other people, and pay for every minute of it.

Agencies

You build agents for several clients

Build them in vozo or bring your own. Cost, caller wait and SIP failures per client in one place, so you can price, bill and fix without opening five vendor dashboards.

Multi-tenant voice SaaS

Voice is part of your product

You resell minutes to your own customers and need margin per customer, plus an alert before they notice a broken line.

Self-hosted LiveKit or Pipecat

You run the stack yourself

Hosted platforms come with a dashboard; self-hosting does not. One collector in your agent gives you the production view back.

Typical volume: 10,000 to 500,000 minutes a month.

04

What it does

One event stream, three views. Built on three open-source packages in the same repo: Tally, Hold and Line.

  1. Create a project: one API key per project

    Agencies can run one project per client, or one project with every event tagged by customer_id.

  2. Attach the collector: one call in your agent

    attach_livekit(session, ...) for LiveKit Agents Python. Any other stack can POST /v0/events with plain JSON.

  3. Watch and get paged: dashboard plus Slack alerts

    Cost, margin, turn latency and SIP failures per project. Alerts open once and send "resolved" when the problem stops.

05

What the dashboard shows

Per project, from the same events.

Cost per call and per minute

Split by STT, LLM, TTS and telephony, so you see where the money goes.

Margin per customer

Enter what you charge each customer; see who is profitable and who is not.

p50 / p95 turn latency

And which step slow turns lose time in: end-of-turn detection, LLM first token or TTS first audio.

SIP failures with a likely cause

For example 486 around ~14 concurrent calls, or 404 "No trunk found" from a dispatch rule that lists the number without "+", each with a suggested fix.

Unpriced models flagged

A model with no price shows up as a warning instead of a silent $0.

Recent calls and a page per call

Line items for every cost and a waterfall of every turn.

Slack alerts
  • Cost per minute over your limit
  • p95 turn latency over your limit
  • Repeated SIP failures
  • No calls for N minutes (a trunk that silently stopped routing)
  • Calls using models without a price
06

Build the agent in vozo too

No agent yet, or you want your team to change it without code? Build it in the vozo platform. Every call it takes goes to the dashboard above, with the customer and the agent version already set.

Flow editor

The agent is a graph of steps. Each step has a prompt and each edge has a condition. One global prompt covers the whole call.

Models and voices

Pick the STT, LLM and TTS provider, model and voice. Each option shows its price per minute.

Test, then publish

Talk to the agent in the side panel while you edit it. A published version does not change. To roll back, pick an earlier one.

Any SIP carrier

Import numbers from Twilio, Telnyx, Zadarma or any SIP provider. Route inbound calls to an agent and version. Start outbound calls one at a time or in batches.

One account per customer

Each customer organization has its own agents, numbers and calls, kept apart in the database, and pays with prepaid credits.

Monitoring built in

Set two variables and every call reaches vozo with its cost, turn latency, SIP failures and end reason. Customers see their prices. Only you see the real cost and the margin.

Private testing. In our tests the builder answers web calls end to end through a real LiveKit server. It has not taken a phone call through a real carrier yet. Ask for access in the form below.

07

Quickstart

Self-host with one Docker container and SQLite, or use the hosted beta. The demo needs no third-party accounts.

Self-hosted: server and a demo project
# from a clone of the repo: source code coming soon
pip install ./tally ./hold ./line ./vozo
vozo demo           # demo project + its API key
vozo serve          # http://127.0.0.1:8080

# one project per client (prints its API key)
vozo project create "Acme Dental"

# or one Docker container, SQLite on a volume
docker build -f vozo/Dockerfile -t vozo .
docker run -p 8080:8080 -v vozo-data:/data vozo
In your LiveKit agent (Python)
from vozo.collect import attach_livekit

attach_livekit(
    session,
    api_key=os.environ["VOZO_KEY"],
    customer_id="acme-dental",
)
Any other stack: plain HTTP
curl -X POST https://<your-vozo-host>/v0/events \
  -H "Authorization: Bearer $VOZO_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}'

vozo 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.

08

Pricing

Provisional. These prices may change before general availability.

Self-hosted · open source Free

One Docker container, SQLite, your own servers. Same dashboard, alerts and collector.

Hosted beta · provisional Free for design partners

The first design partners use the hosted beta free. After that:

  • Free up to 10,000 minutes a month
  • Then 5% of the provider spend vozo tracks
  • $49/month minimum, capped at $499/month
09

Not there yet

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. The agent builder is in private testing and has not taken a phone call through a real carrier yet.

10

Request hosted beta access

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.