Support for MoveParticipant in self-hosted LiveKit

This question originally came up in our Slack community and the thread has been consolidated here for long-term reference.

Hi LiveKit team
We’re currently using self-hosted LiveKit and ran into a limitation around the move_participant API, which is currently LiveKit Cloud–only.


await lkapi.room.move_participant(MoveParticipantRequest(
room="<CURRENT_ROOM_NAME>",
identity="<PARTICIPANT_ID>",
destination_room="<NEW_ROOM_NAME>",
))```
In our use case (agent-assisted **warm transfer** with SIP participants), the ability to *move an already-connected participant between rooms without dropping the media session* is critical for UX.
We understand that similar behavior can be approximated with permissions, subscriptions, or re-dialing, but none of these fully replicate the semantics of `move_participant`:
• no seamless transfer of an existing SIP call
• higher latency / re-dial UX
• more complex orchestration at the application layer
**Question / Request**
Are there any plans to support `move_participant` (or an equivalent room-handoff primitive) in **self-hosted LiveKit** as well?
Even a constrained or opt-in implementation would unlock a lot of advanced workflows (warm transfer, supervised calls, consult → merge patterns) for self-host users.
Happy to share more details about our architecture or contribute feedback/design discussion if helpful.
Thanks for building an awesome realtime platform

Please see https://github.com/livekit/livekit/issues/4203.

As the room a participant is moved to could be on a different mode, it is not possible to do this in self-hosted version.