- Quickstart - the one setting for speech
- Why model proximity matters - where the time goes
- Choose a location for every model - one review per role
- Separate the regional settings - four locations, four controls
- Choose a speech gateway - the 13 SLNG world parts
- Place the worker near your users and models -
deployment_region - Troubleshooting - what the compiler refuses
Quickstart
On LiveKit and Pipecat, setparams.world_part on each SLNG listen or
speak model to choose its gateway:
agent.yaml
targets.yaml,
and the two do not have to match. The rest of this page is which location each
part of the call has, and how to choose it.
Why model proximity matters
A voice turn crosses several network boundaries: the caller sends audio through a media or telephony edge, the worker sends it to STT, the worker calls the LLM and tools, and TTS produces the audio that returns to the caller. Long trips between these services add delay throughout the conversation, even when the models themselves are fast. Start with where your users are. Keep the media edge, worker, and model services close to them and to one another where your providers offer that choice. Apply the same review to tools and other services the agent waits on. Moving only the worker leaves any long trips to remote models in place. Use geography as a starting point, then measure the time from the caller finishing a sentence to hearing the first reply from your users’ locations. Network routes, model availability, and load can change which choice is fastest. Compare both typical calls and slow calls; a regional endpoint does not change the model’s own processing time.Choose a location for every model
The same review applies whether you use SLNG or bind a provider directly. Choose each model separately, including fallback models where configured:
Unmute supports direct speech providers such as Deepgram, Cartesia, ElevenLabs,
and Soniox, and reasoning providers such as OpenAI, Anthropic, and Mistral. The
linked model pages list the providers supported by each target. Regional
settings depend on the provider, model, account, and framework integration;
there is no shared region parameter for all of them.
For a direct provider, check its current documentation for regional endpoints
or deployments, then use the settings supported by the selected integration.
Do not copy another provider’s parameter names. Some services select their
location automatically or offer no regional choice. Measure the route you
actually use before deciding whether to change providers or model deployments.
Three region settings
SLNG speech, routing, and deployment now share region names. LiveKit keeps its
own worker names. Each setting is still independent of the others. None alone guarantees
data residency: model providers, media, tools, traces, and storage have their
own locations. A nearby speech gateway does not prove where its model runs.
LiveKit’s compute names come from its
agent region list.
string
Accepts the speech gateway values in the table. Omit to use the plugin’s
default endpoint. An empty or unknown value is refused. Do not combine it
with
params.base_url or params.slng_base_url.string
required
Accepts the same 13 world parts as speech. Required on a Context Router
think binding; omission is refused. It selects the router endpoint independently.
The old
world_part_override key is refused; use world_part.Separate the regional settings
Each part of the call has its own location:
Setting one row does not set the others. A gateway location also does not by
itself guarantee where the underlying model processes data. Tools, tracing,
and storage keep their own locations too.
LiveKit configures realtime region pinning
separately from agent deployment regions.
For Pipecat Cloud WebSocket telephony, Unmute derives the regional endpoint
from
deployment_region; that endpoint must match the worker’s region. See
Pipecat’s regions guide.
Carrier routing remains a separate choice.
Choose a speech gateway
SLNG provides 13 regional speech gateways through one model setting. It is set per model, and it gives both speech roles the same configuration shape across the two frameworks.world part code
The SLNG speech gateway an SLNG
listen or speak model connects through.
One of the 13 values below. Set it on each model separately. Omitting it keeps
the existing default URL.{world_part}.api.slng.ai in generated
services. For the eu-north in the quickstart above, it emits
slng_base_url="eu-north.api.slng.ai" on LiveKit and
base_url="eu-north.api.slng.ai" on Pipecat for both speech models. The plugin
receives the host without a scheme or path; Unmute consumes
world_part rather than passing it to the plugin.
This setting changes generated SLNG speech services on LiveKit and Pipecat.
Choose the worker’s deployment_region separately. The SLNG hosted target
keeps its own deployment settings.
Available SLNG world parts
All 13 world parts below work for SLNGlisten and speak models on LiveKit
and Pipecat. Set the world part on each model separately.
Omitting
world_part keeps the existing default URL.
SLNG reasoning uses the same world parts
For athink model with provider: slng, the
Context Router serves the same 13 world parts as
the table above, under the same key: params.world_part. So eu-north on a
speech binding and eu-north on a think binding are the same place, and a
package can keep listening, thinking and speaking in one world part. The LLM
behind the router keeps its own provider settings.
SLNG deployment uses these same 13 region names. The location of each service
is still chosen separately.
Place the worker near your users and models
Set the worker location intargets.yaml, using each platform’s own region
names:
platform region name
Where the generated LiveKit or Pipecat worker runs. Written per target in
targets.yaml, in that platform’s own region names. Pipecat accepts one.
LiveKit accepts one region as a scalar or several as a list.targets.yaml
eu-central can call SLNG speech through eu-north.api.slng.ai.
Choose nearby locations from the platform’s current
LiveKit or
Pipecat region list, then
measure the full call path.
One worker region or several
Pipecat accepts onedeployment_region per target. A second Pipecat region is a
second target and agent name.
LiveKit accepts either one region as a scalar or several regions as a list:
targets.yaml
Troubleshooting
The compiler refuses a world_part value
An empty, non-string, or unknown value is refused. The old speech values na,
eu, and ap are refused too. There is no automatic mapping from the old
broad areas.
Fix: choose one of the 13 values in
the table above explicitly.
The compiler refuses world_part next to a URL
params.base_url and params.slng_base_url cannot be combined with
params.world_part.
Fix: remove the explicit URL or the world part.
The router refuses a world_part_override
The router used to take four names of its own, eu, us, india and
indonesia, under a key of its own. It takes the 13 world parts now, under
params.world_part, like speech.
Fix: rename the key and write a world part. See
SLNG reasoning uses the same world parts.
A nearby worker is still slow
Setting one row of the table above does not set the others, and moving only the worker leaves any long trips to remote models in place. Fix: review the model endpoints each deployment calls, then measure the full call path rather than the worker’s own region.Where to go next
Optimizing your agent
Measure what the caller waits for.
Reasoning model
Choose the model that decides what to say.
Speech to text
Choose the model that listens to the caller.
Text to speech
Choose the model that speaks to the caller.
LiveKit Cloud
Deploy one worker region or several.
Pipecat Cloud
Deploy one worker region per target.