bitter-gold-53424
03/03/2026, 8:08 AMtall-airline-16756
03/03/2026, 8:08 AMtall-airline-16756
03/03/2026, 8:09 AMbitter-gold-53424
03/03/2026, 8:11 AMtall-airline-16756
03/03/2026, 8:11 AMbitter-gold-53424
03/03/2026, 8:11 AMtall-airline-16756
03/03/2026, 8:11 AMbitter-gold-53424
03/03/2026, 8:14 AMtall-airline-16756
03/03/2026, 8:14 AMbitter-gold-53424
03/03/2026, 8:16 AMtall-airline-16756
03/03/2026, 8:16 AMbitter-gold-53424
03/03/2026, 8:17 AMtall-airline-16756
03/03/2026, 8:17 AMbitter-gold-53424
03/03/2026, 8:19 AMtall-airline-16756
03/03/2026, 8:19 AMmetadata string are delivered via LiveKit’s signalling and are accessible on the RemoteParticipant object in the client or agent SDK.
• Forwarding media does not remove those fields — the receiving room/client will still see the participant’s identity and its associated attributes and metadata.
• These values are NOT embedded in the media itself; they come through the participant object and signalling channel.
Things to watch for
• If you create a new synthetic participant when forwarding (instead of keeping the original participant identity), you’ll need to copy any attributes/metadata to that synthetic participant if you want them preserved.
• If you update attributes/metadata dynamically (after forwarding starts), updates propagate via signalling and will be visible to recipients as they occur.
• Access is the same in server SDKs and client SDKs: read the attributes and metadata on the RemoteParticipant object.
If you’d like, I can:
• Show a short code example in your preferred SDK (JS, Python, or Go) for reading participant attributes/metadata in the admin room.
• Explain how to handle copying attributes if you use a relay/synthetic-participant forwarding pattern.
Which SDK would you like an example for?
Sources: Server-side | livekit/livekit_composite | DeepWiki | Handling asynchronous metadata updates in LiveKit | LiveKit | Job lifecycle | LiveKit Documentation | External data and RAG | LiveKit Documentationbitter-gold-53424
03/03/2026, 8:20 AMtall-airline-16756
03/03/2026, 8:20 AMmetadata like source_room: "room-A" or origin_room_id: "<room-id>".
◦ When the admin receives the forwarded participant, the admin can read RemoteParticipant.attributes or RemoteParticipant.metadata to see the original room value.
• Copy attributes when creating a synthetic/relay participant:
◦ If your forwarding creates a new synthetic participant identity in the admin room (instead of reusing the original identity), explicitly copy the source participant’s attributes/metadata into the synthetic participant at the time of forwarding. Without copying, the admin will not see the original room info.
• Use server-side mapping:
◦ Maintain a server-side map that records which participant identity belongs to which source room. When the admin sees a forwarded participant identity, your server can look up the original room from that map.
Important notes
• Attributes/metadata travel with the participant via signalling and are accessible on the RemoteParticipant object in client and server SDKs.
• The original room is not embedded in the media stream; it must be conveyed via attributes/metadata or a server-side record.
• If attributes are updated after forwarding, updates propagate to connected participants via signalling (so admins get the new values).
If you want, I can:
• Provide a short code example in your preferred SDK (JS, Python, or Go) showing how to set `attributes`/`metadata` in the source room and read them in the admin room.
• Show how to copy attributes when creating a synthetic participant during forwarding.
Which SDK would you like an example for?