One-way audio on inbound SIP calls — agent's media connection geolocates to Brazil, not US Central A

Project: p_28p40lg2rr7 (Nerro.si), agent nerro-voice-worker

Inbound calls via our LiveKit native phone number connect fine (room created, SIP participant joins, STT transcribes the caller correctly), and our agent’s TTS output track publishes successfully and shows as active/unmuted in the room, but the caller never hears any audio.

Confirmed via the Cloud dashboard’s own session view: the agent participant’s connection consistently shows Location: Brazil (9 of the last 14 sessions), while the SIP participant and the room itself are correctly anchored to US Central A. Our worker runs on Fly.io in ord (Chicago); this has also reproduced running locally from a US machine, so it isn’t our hosting location.

Ruled out so far (each confirmed fixed/changed, symptom unchanged):slight_smile: - A RecorderIO audio-output wrapping bug on our end (fixed by passing record: false to session.start())

  • An invalid TTS voice id causing silent provider fallback to a different provider than requested (fixed, confirmed exact model now requested via live debug logs)
    • Using LiveKit’s own Inference TTS gateway at all (switched to the direct @livekit/agents-plugin-deepgram plugin, no change)
      • Signaling connection to the generic anycast URL vs the region-pinned *.ochicago1a.production.livekit.cloud host (no change, still shows Brazil)
    • Sample affected rooms: RM_d6hynW3ojvF3, RM_FcMJpHQqvif8, RM_fRBgsacEXdkh, RM_F3Pt2q3dyXNG (job IDs attached to each in the dashboard).
  • Can anyone help check why the agent’s media path is routing through a Brazil relay instead of US Central A, and whether that’s breaking the return audio path to the SIP leg? Happy to share more session IDs or logs as needed.

Do you happen to have egress recording or agent observability for these sessions?

I checked the logs and the PCAP and things look fine there. What do you see in your agent logs?

“Media routes through Brazil” is not happening. Every call’s media — agent and SIP participant — ran on a single ochicago1a media node. There is no Brazil leg and no cross-region relay. The dashboard’s Location is a GeoIP/ASN lookup of the agent’s observed source address, which, for Fly.io, resolves to a Brazilian-registered IPv4.

The audio that reaches the caller is predominantly mixer-generated silence, because the SIP bridge received very little audio from the agent.