Hey I got an issue. When I start my LiveKit demo, ...
# ask-ai
f
Hey I got an issue. When I start my LiveKit demo, I do the following: Terminal 1 (Agent): PYTHONPATH=src uv run python agent.py dev Terminal 2 (API): PYTHONPATH=src uv run python web/backend/server.py Terminal 3 (ngrok): ngrok http 8080 Then I share the ngrok url to everyone. The issue this time was I shared the ngrok url to someone that has a mobile device. The moderator couldn’t hear the participant in a smartphone device. The voice agent didn’t acknowledge his audio at all. So what I do to get the voice agent to hear people via smartphone/IPad/Android device?
✅ 1
t
Thanks for reaching out, Ganesh. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
Thanks — I hear you: you started the demo locally, shared an ngrok URL, and a moderator couldn’t hear a participant joining from a smartphone. I’ll walk through the most likely causes and the quickest checks you can run so the voice agent can hear mobile users. First, quick checklist (fast to verify) • Ask the mobile user to confirm the browser asked for microphone permission and that they tapped “Allow.” If permission is denied the microphone won’t publish. • Open the browser/dev tools (or the LiveKit participant list UI) and confirm the mobile participant has an active audio track published — you should see a published audio track for their identity. • Have the moderator or you join from a desktop and confirm you can hear the mobile user locally. If you can’t hear them in the room at all, the problem is on the mobile side (permissions or publishing), not the agent. • Check the mobile browser console for errors like “Microphone permission denied” or track publish failures. Common root causes and what to do • Microphone permissions: Mobile browsers must request mic access. If the user blocked it, the browser won’t publish audio. Ask them to re-load the page and allow microphone access. • Track not published: Some app flows require an explicit “start audio” or “join with audio” action. Confirm the client code actually creates and publishes an audio track for mobile clients. • Network / NAT issues: WebRTC can fail to connect media if ICE (STUN/TURN) isn’t configured. Because you’re using ngrok for signaling, ensure your LiveKit server and client are using working STUN/TURN servers for media relay. If the mobile client is on cellular or a restrictive network, TURN is often required. • Agent configuration: Agents process audio from room participants by default. There’s no special mobile-only config required. However, if you explicitly restricted audio input when starting the agent (for example set
audio_input=False
), enable audio input in the session.start call. • Multiple participants / speaker switching: If the agent is expected to process one specific participant’s audio and there are multiple speakers, you can set the agent to process a fixed participant identity using RoomIO to avoid confusion. If you want step-by-step checks, do this next 1. On the mobile device: ◦ Reload the demo page, allow microphone access when prompted. ◦ Verify the UI shows “microphone on” or similar and that audio is being published. 1. In your LiveKit room UI or server logs: ◦ Confirm the mobile participant appears with an audio track. ◦ Look for any publish/ICE errors in the client or server logs. 1. If audio track is absent or ICE fails: ◦ Ensure your clients are configured with STUN/TURN servers (TURN is required on some networks). ◦ If you’re using a local demo setup behind ngrok, make sure TURN is reachable by clients (TURN must be publicly reachable). If you’d like, tell me: • Which mobile browser and OS the participant used (Safari iOS, Chrome Android, etc.) • Whether the mobile participant’s audio track shows up in the room participant list or in logs • Whether you have STUN/TURN configured (and the TURN server host if so) With one of those details I can give exact troubleshooting commands and snippets (for checking published tracks or adding TURN) or show how to set a fixed participant for the agent via RoomIO. Sources: How to set a fixed participant for agent audio processing | Understanding "silence detected on local audio track" Warning | LiveKit | Agent speech and audio | LiveKit Documentation, with interactive elements