Skip to content
tuvoz

Self-host vs hosted: running the Tuvoz bridge yourself

The Tuvoz voice bridge is MIT-licensed. Run it on your own Twilio and Gemini accounts for about $0.05 to $0.06 a minute, or use hosted Tuvoz for sign-in, number checks and billing.

· Published Oct 8, 2026 · 2 sources

Illustration: a small home server box on a desk and a purple cloud, both wired to one phone handset sending out sound waves.

Self-host the open-source bridge if you want to call a short list of numbers you control, using your own Twilio and Gemini accounts. Use hosted Tuvoz if you want to call businesses from any of your agents, with sign-in, number checks, billing and the phone fallback run for you.

Both run the same call code. The bridge is MIT-licensed, and the skill and CLI work against either one.

What the bridge is

tuvoz_bridge is the part of Tuvoz that talks on the phone: it connects a Twilio call to a Gemini Live voice session, runs the opener and the consent question, asks your agent mid-call, and calls you when your agent can’t answer. tuvoz-bridge serve runs it as a single-user server with the same call API as hosted Tuvoz, so you point the CLI at it by setting two environment variables:

export TUVOZ_API_URL=https://calls.example.com
export TUVOZ_API_KEY=<your BRIDGE_TOKEN>

What stays the same

  • The opener. “Hi! I’m Jane Doe’s AI assistant, calling through {your operator name} about a dinner reservation.” The operator name is required and can’t contain “Tuvoz”.
  • Consent first. By default the self-hosted bridge asks “Just so you know, {operator} records this call. Is that okay with you?” A no ends the call and the bridge keeps nothing the person said. The Gemini API, which voices the call, processes their words live and Google may keep them for a limited time for abuse monitoring.
  • Honesty rules. No setting makes the voice agent claim to be human or you; the monitor ends the call if it does.
  • Safety blocks. Emergency, N11, crisis and premium numbers are blocked, the calling window is 9 am to 8 pm local time (calls to your own phone aren’t limited to it), and the state table applies.
  • Opt-outs. “Don’t call again” and keypad 9 work the same, stored in your own database.
  • The backchannel. Questions to your agent, and calls to your phone if you set PRINCIPAL_PHONE.

What’s different

Self-hosted bridge Hosted Tuvoz
Who it can call Only numbers in your ALLOWLIST, plus your own phone US listed businesses, your own phone, and people you confirm agreed to AI calls
Number checks None beyond the blocks above; you vet each number you allowlist Line-type and business-listing lookups before the first call to a number
Caller ID Your Twilio number, your reputation Tuvoz’s number, registered and monitored by Tuvoz
Users One person, one static token Google sign-in, any number of agents, keys you can revoke
Consent wording Recording only, unless you set CONSENT_MODE=record_and_train Recording and training on every call
Dashboard None; the call API and a SQLite file Call history, transcripts, approvals, billing
Opt-outs Your database only Shared across every Tuvoz user
Cost Your Twilio and Gemini bills (about $0.05 to $0.06 a minute) $0.12 a minute, billed per second, with a 30-second minimum per answered call leg, including calls to your own phone
Who’s responsible You are the operator placing the calls You agree to Tuvoz’s terms; Tuvoz runs the checks above on every call

What self-hosting costs

Twilio’s US list prices: outbound calls to local numbers $0.0140 a minute, Media Streams $0.0044 a minute, answering-machine detection $0.0075 a call, and a local number $1.15 a month. Twilio bills each started minute (Twilio).

Gemini’s paid tier for native-audio Live models lists $3.00 per million audio input tokens and $12.00 per million audio output tokens (Gemini pricing). Tuvoz’s own estimate for a typical call is $0.03 to $0.04 a minute in model costs, more on long, talkative calls.

So a 5-minute self-hosted call costs roughly 5 × $0.0184 for Twilio, plus $0.15 to $0.20 for Gemini: about $0.25 to $0.30, against $0.60 hosted.

Use a billed Gemini project. Google says content on its unpaid tier “is used to improve our products”, while paid-tier content is “not used to improve our products” (Gemini pricing). On a phone call, that content includes the other person’s voice.

What you take on when you self-host

  • Setup. A Twilio account and number, a Gemini API key, a public HTTPS URL for Twilio’s webhooks, and the .env values (TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_FROM_NUMBER, CALLBACK_NUMBER, GEMINI_API_KEY, OPERATOR_NAME, PRINCIPAL_NAME, PUBLIC_BASE_URL, BRIDGE_TOKEN, ALLOWLIST). CALLBACK_NUMBER is a second Twilio number that every call states when it ends, as federal rules require. The server refuses to start if a required value is missing.
  • The rules. You’re the one placing the calls, so the consent and calling laws apply to you. Read is it legal for an AI to call a business?
  • Upkeep. Updates, uptime, your caller ID’s reputation with carriers, and your keys.

Which should you pick?

Self-host if you’re a developer, you mostly call your own phone or a few numbers you know, and you want the lowest cost per minute and your data in your own accounts.

Use hosted Tuvoz if you want your agent to call businesses you haven’t vetted by hand, use more than one agent, or not run a server. Hosted Tuvoz starts with 15 free minutes. Free plan includes training on your calls.

More on the open-source side: tuvoz.io/open-source. Ready to try hosted? Set up Tuvoz.

Sources

  1. Twilio Voice pricing (United States) (accessed Oct 8, 2026)
  2. Gemini Developer API pricing (accessed Oct 8, 2026)