A data residency checklist for voice AI lists every place call data goes and the setting that keeps it in your region: servers and storage, the speech and language models, the phone carrier, telemetry, the quickstart tunnel, tracing, tools and webhooks, and remote access. Call audio stays in-region only when the models run there too.
Key Takeaways
- Hosted models receive the audio, and only open-weight models in your region keep it there.
- Every phone call passes through your carrier, while browser calls do not.
- Telemetry is on by default in Docker, so switching it off is a checklist line.
This post is part of our guide to compliant AI voice agents. The guide's section "Self-hosting: what stays and what still leaves" sums it up: "Self-hosting moves the platform and its records onto your servers, and the audio stays there only when the models run there too." This checklist turns that section into lines to tick off, with the setting for each in Dograh, an open-source, self-hostable voice agent platform.
What data residency means for a voice agent
Data residency is where call data is stored and processed, and for a voice agent that means more than the database. A single call touches the platform, its storage, the speech and language models, the phone carrier and any service the platform reports to.
The GDPR generally sets no rule that personal data must be stored in the EU. Its transfer rules apply when data leaves the EU or is reached from outside it, as our post on GDPR and voice AI explains article by article. Residency itself usually comes from customer contracts, sector rules or your own policy.
Demand is growing anyway. In Cisco's 2026 Data and Privacy Benchmark Study, a survey of 5,200 professionals in 12 markets, 81% reported growing demand for data localization. Yet 85% said localization raises cost, complexity and risk for cross-border services, and 82% believe global-scale providers manage cross-border data flows better. So residency has a price, and it is worth paying only where a contract or rule asks for it.
Storage in your region also does not settle access. DLA Piper's GDPR fines survey calls its TikTok decision "the first that concerns remote access as opposed to data storage". Who can reach the data matters as much as where it sits.
The checklist at a glance
Each line below is one place a call's data can go, with what to check and the setting or decision that keeps it in your region.
| # | Where call data goes | What to check | Setting or decision |
|---|---|---|---|
| 1 | Servers and database | Region of the data centre or cloud account | Self-host Dograh there with Docker Compose |
| 2 | Recordings and transcripts | Region of the object storage | Bundled MinIO, or your own bucket with ENABLE_AWS_S3=true |
| 3 | Speech, language and voice models | Where inference runs | Open-weight models in-region; change the default in Models |
| 4 | Phone carrier | Where calls are carried and whether it records | Carrier region, your own SIP trunk or Asterisk ARI |
| 5 | Telemetry | Usage events sent out | ENABLE_TELEMETRY=false and POSTHOG_API_KEY removed |
| 6 | Quickstart tunnel | Public trycloudflare.com address | Your own domain and ingress |
| 7 | Tracing and integrations | Langfuse, Noveum and similar | Self-host Langfuse, or leave them off |
| 8 | Tools and webhooks | Every endpoint you configure | Each endpoint's region on your list |
| 9 | Remote access | Staff and vendors who can reach the servers | Your access policy |
Servers, storage and the models
The platform and its records are the easy part, because self-hosting puts them where you choose. A Docker Compose install runs on servers in your chosen region. Call records live in PostgreSQL, and recordings and transcripts go to the bundled MinIO storage by default, or to your own S3-compatible bucket with ENABLE_AWS_S3=true. Check that bucket's region and its backups.
The models are where residency usually fails. Dograh is the orchestration layer: it runs the call flow, tools and telephony, and the speech and language models are a separate layer you choose. The call audio stays in-house only when the speech and language models run on your own servers too. Hosted speech-to-text, language and text-to-speech models receive the call's audio or text wherever their provider runs them. Bringing your own key changes whose contract covers that, but the audio still reaches the provider.
Dograh starts every account on its own managed models. To keep call audio away from Dograh, open Models, switch the Organization default to BYOK with your own speech and language providers (or local models), and check that no agent has its own model override. For residency, run those models in your region. How to Build a Voice Agent on Fully Local Open-Source Models shows that setup step by step.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
The phone carrier and the quickstart tunnel
Every call over the phone network passes through your carrier (browser calls do not), so the carrier is always on the list for phone calls. Check where it carries and processes calls, and whether it records or transcribes them. To keep that leg under your own contracts, bring your own SIP trunk or connect your own phone system through Asterisk ARI.

If you use Dograh's Managed SIP, its regions (Global, India, UAE) are phone routing, not data residency.
The quickstart opens a public trycloudflare.com tunnel to the API, so inbound calls can reach a test install. A production install replaces it with a custom domain and your own ingress. Firms that need the strictest setup can run with no outbound internet at all, as On-Prem Voice AI for Law Firms describes.
Telemetry, tracing, tools and integrations
Diagnostics leak quietly, so each one gets its own line. Telemetry is on by default in the Docker setup. Set ENABLE_TELEMETRY=false, and remove POSTHOG_API_KEY from the api service in docker-compose.yaml (or set it to an empty value). The server's usage events carry IDs and call details such as call type and direction, with no audio or transcripts, but they still leave your servers until you do both.
Tracing sends more. If you turn on tracing, each call's trace, with prompts and transcriptions, goes to the Langfuse project you configure, so host Langfuse in your region or leave tracing off. A Noveum node exports each completed call to Noveum as a trace, including the call audio unless you switch off the node's Record audio setting.
Then list your own endpoints. Every HTTP API tool, Pre-Call Data Fetch and Webhook node sends call data to the URL you give it. Write down each endpoint and its region, including any automation service in between.
Recordings, transcripts and remote access
Stored calls need a policy as well as a location. Recording upload is on by default and can be switched off only for the whole server, with ENABLE_CALL_RECORDING_UPLOAD=false. Transcripts are still saved. There is no retention setting and nothing is deleted automatically, so your storage rules decide how long calls stay, and your backups must sit in the same region.
Remote access is the last line. Support staff and outside contractors who can log into the servers from another country can raise the same transfer questions as storage there. Keep that list short and written down. Our post on passing a SOC 2 review with a self-hosted voice agent covers the access controls an auditor checks.
Claim a data location only when Dograh and the models both run there. Dograh Cloud handles the security work for you. For residency, teams can self-host Dograh inside their existing compliance perimeter, or use a private-cloud deployment where Dograh runs the stack inside their own VPC. The Enterprise plan lists "On-premise / private-cloud deployment, data residency & data perimeter". Self-hosted Dograh has no per-minute platform fee (servers, model keys and phone minutes still cost); Dograh Cloud has a 1¢-a-minute platform fee.
This is general information, not legal advice. Confirm your position with counsel, or in the UK, check with a data protection adviser.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Glossary
- Data residency
- Where data is stored and processed. For a voice agent it covers the platform, storage, models, carrier and diagnostics, and it usually comes from a contract or a sector rule.
- Inference
- The moment a model processes input, such as a speech model turning call audio into text. Residency depends on where inference runs as well as where recordings are stored.
- Quick tunnel
- The public trycloudflare.com address Dograh's quickstart opens to the API so a test install can receive calls. Production installs replace it with their own domain.
- Telemetry
- Usage events software sends back to its maker. In Dograh's Docker setup it is on by default; switching it off means ENABLE_TELEMETRY=false and removing POSTHOG_API_KEY from the api service.

