acoustic-pharmacist-34178
03/09/2026, 6:43 PMtall-airline-16756
03/09/2026, 6:43 PMtall-airline-16756
03/09/2026, 6:44 PMlocal_participant and remote_participant. Good question — here's a clear comparison.
• local_participant
◦ Represents the current user connected from your device.
◦ You control this participant: publish/unpublish your media, send data messages, mute/unmute, etc.
◦ Methods/actions are focused on producing media (e.g., publishTrack(), setMuted()).
◦ There is only one local_participant per client connection.
• remote_participant
◦ Represents other users in the same room (everyone except the local participant).
◦ You observe and subscribe to their published media (audio/video) and data.
◦ Emits events when their tracks are added/removed; you can control subscriptions (e.g., setTrackSubscribed()).
◦ There can be multiple remote_participant instances — one for each other connected peer.
Key distinction: ownership and control — the local_participant is what you control and publish from; `remote_participant`s are what you receive and subscribe to.
If you'd like, I can show short example code for your platform (JavaScript, Android, or Flutter) showing how to publish a track from the local participant and subscribe to a remote participant's track. Which SDK are you using?
Sources: Client SDKs | livekit/livekit_composite | DeepWikiacoustic-pharmacist-34178
03/09/2026, 6:46 PMtall-airline-16756
03/09/2026, 6:46 PM