EU-hosted routes exist for every layer of a voice agent: Deepgram, ElevenLabs, Azure Speech and Google for speech and voice, Azure OpenAI, Vertex AI and Bedrock for the language model. Each covers one hop, so all layers must point at the EU. Dograh, the open-source AI voice agent platform we build, can be self-hosted in an EU data center.
Key Takeaways
- A call is only as EU-hosted as its least EU-hosted hop.
- ElevenLabs residency is Enterprise only, and Vertex eu excludes the UK.
- Audio stays fully in-house only with open models on your own EU servers.
This post is part of our guide to the EU AI Act for voice agents, where running the agent on EU servers is a GDPR question. Below, we go layer by layer through providers with EU routes, the limits each states, the Dograh setting for each, and the other hops.
Every hop of the call has its own location
A voice agent platform hosted in the EU does not make the call EU-hosted. The caller's audio goes to a speech-to-text model, the transcript goes to a language model, and the reply goes to a voice model. Each of those runs wherever its provider runs it. A platform can store recordings in Frankfurt and still send every sentence to a model in Virginia.

Bringing your own key does not change that. It moves the contract to you, while the audio still goes to whichever endpoint the key calls. Our post on GDPR and voice AI explains when sending call data outside the EU counts as a transfer and what that requires.
In an IBM study reported by IT Brief, 68% of senior executives said meeting data residency and sovereignty requirements across regions was a challenge. Dograh is the orchestration layer for the call flow, tools and telephony, with the speech and language models in a separate layer you choose. That split is what lets you place each layer in the EU on its own.
EU routes at a glance
The table lists each EU route a self-hosted Dograh install can select today, with the limit the provider states. Each provider's own page is the source for its row.
| Layer | Provider | EU route | Limit to know | Setting in Dograh |
|---|---|---|---|---|
| Speech-to-text and voice | Deepgram | api.eu.deepgram.com | Requests fail rather than leave the EU | Base URL dropdown on the Deepgram connection |
| Voice and speech-to-text | ElevenLabs | api.eu.residency.elevenlabs.io | Enterprise only, separate account and key | Base URL field on the ElevenLabs connection |
| Speech-to-text and voice | Azure AI Speech | An EU Azure region | Set per Speech resource | Region dropdown, such as westeurope |
| Voice | Google Cloud Text-to-Speech | eu-texttospeech.googleapis.com | Chirp 3 HD voices served in eu | Location set to eu |
| Voice | Murf | eu-central.api.murf.ai | Pins the server, check data terms with Murf | Base URL field on the Murf connection |
| Language model | Azure OpenAI | EU Data Zone deployment | Zone can include Norway and Switzerland | Your resource endpoint |
| Language model | Google Vertex AI (Gemini) | eu multi-region | EU member states only, not the UK or Switzerland | Location set to eu |
| Language model | AWS Bedrock | eu. inference profile | Requests can move between Regions inside the EU | eu. model ID and an EU AWS region |
| All layers | Open models on your servers (Dograh Local Models) | Your EU data center | You run and size the servers | Local Models base URL |
Speech-to-text and voice providers
Deepgram has the simplest EU route. Its EU host serves speech-to-text, Flux included, and text-to-speech, and Deepgram says requests are never routed outside the EU. If the EU region is down, requests fail instead of falling back to another region, so an outage stops transcription rather than moving it out of the EU. The same key works on every host, and Dograh's Deepgram connection has a Base URL dropdown that lists the EU host.
ElevenLabs runs an isolated EU environment, but only for Enterprise customers, with a separate account and API key. Data is stored in the EU, and processing for support and moderation can happen elsewhere unless you use the API with Zero Retention Mode. In Dograh, paste the EU residency address into the Base URL field of the ElevenLabs connection, for the voice or for speech-to-text.
Azure AI Speech is set per resource. Create the Speech resource in an EU region such as West Europe, North Europe, France Central or Germany West Central, and pick the same region in Dograh's dropdown. Pick it on purpose, because the Azure Speech connection falls back to East US when no region is set.
Google's voices have an EU endpoint too. Google's Text-to-Speech endpoints page says the eu endpoint keeps data at rest and in use within Europe, and Chirp 3 HD voices are served there. Type eu in the Location field of Dograh's Google connection and calls go to eu-texttospeech.googleapis.com. Murf, a new voice provider in Dograh, can be pinned to its EU-central server through the Base URL field. That pins where requests go, so check Murf's data terms for where they are kept.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
Language model providers
The language model sees every transcript, so its location matters most. On Azure OpenAI, the choice is made in Azure when you deploy the model. Azure's deployment types page says Data Zone deployments process data only within the chosen zone, and the EU zone can include Norway and Switzerland. Global deployments may process data in any Azure region. Dograh's Azure connection takes your resource endpoint, so it follows whatever deployment type you chose.
Gemini on Vertex AI uses a location setting. Vertex AI's data residency page says the eu and us multi-regions keep processing in that geography, while the global endpoint gives no residency guarantee. The eu multi-region covers EU member states only, not the UK or Switzerland. Dograh's Vertex connection has a Location field with global, eu and us, set to global by default, so change it to eu. The same field applies to Gemini Live on Vertex for speech-to-speech agents.
Bedrock keeps requests in the EU through an inference profile. AWS's guide to geographic cross-region inference says an EU profile keeps requests within the EU geography, though they can move between Regions inside it. In Dograh, use the model ID with the eu. prefix and set an EU AWS region, since the field defaults to us-east-1. For speech-to-speech, Amazon Nova 2 Sonic lists eu-north-1 among its regions.
The route where audio stays on your servers
Every route above still sends audio or text to a provider, only to an EU address. The audio stays with you only when the models run on your own servers. Self-host Dograh in an EU data center and run open-weight speech-to-text, language and voice models on the same machines through Local Models, which takes an OpenAI-compatible address for each layer.
Only this setup gives full data sovereignty, since no third party hears the call. A common stack pairs Qwen3.8 27B as the language model with Parakeet TDT 0.6B v2 for speech-to-text, which at about 2 GB can share one 24 GB GPU with a 4-bit Qwen. Magpie TTS or Chatterbox, if you need cloning, covers the voice. The trade is that you run and size the servers yourself. Our guide to Hetzner GPU servers for self-hosted voice agents covers machines for this route.
A mixed setup works too. Run speech-to-text and the voice on your own servers and call the language model on an EU endpoint, and the raw audio stays in-house while only text goes out. Each layer is a separate choice on the Models page, so you can move one layer at a time.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
What else has to sit in the EU
The models are only part of the call. The carrier carries the audio, recordings and transcripts land in storage, call traces go to a tracing service, and staff may log in from outside the EU. Each of those is a hop with its own location, and our data residency checklist goes through every one.
The EU claim belongs to the self-hosted route, with the platform and the models both running in an EU data center, because the managed cloud names no EU data region. Self-hosted Dograh has no per-minute platform fee, but servers, model keys and phone minutes still cost money. Dograh Cloud charges a 1¢-a-minute platform fee.
Pick the layer that sees the most personal data, usually the language model, and move it to an EU route first. For the whole setup in one place, see self-hosted voice agents for the EU AI Act.
Glossary
- Data Zone deployment
- An Azure OpenAI deployment type that processes data only inside a Microsoft-defined zone such as the EU. Azure's EU zone can include Norway and Switzerland, unlike a single-region deployment.
- Multi-region endpoint
- A provider address that keeps processing inside a geography rather than one data center, such as Vertex AI's eu location or Google's eu-texttospeech endpoint. A global endpoint gives no such promise.
- Cross-region inference profile
- An AWS Bedrock model ID with a geography prefix, such as eu., that keeps requests inside that geography while letting them move between its Regions for capacity.
- Fail closed
- When a regional endpoint is down and requests fail instead of being sent to another region. Deepgram's EU host works this way, so an outage stops that layer instead of moving it out of the EU.

