Skip to content

Feature Request: Default mute option for participants joining via Ingress #387

@devgustavovasquez

Description

@devgustavovasquez

Context

We use LiveKit’s Ingress (RTMP and WHIP) in a production setup where multiple automated sources join and leave rooms dynamically — mostly for live events, multilingual panels, and hybrid sessions.

In these cases, we often need participants to join muted by default, especially when the Ingress is created automatically by backend orchestration (e.g., when a panel starts or a remote feed reconnects).

Currently, Ingress participants always start with audio and video tracks active immediately upon join.
There’s no option in CreateIngressRequest (or anywhere else) to set a default mute state.
Muting afterward via RoomServiceClient.mutePublishedTrack() or similar calls works, but it’s reactive — a few audio frames usually leak before the mute applies.


Current Behavior

  • Ingress participants (RTMP, WHIP, WHEP) always publish audio/video immediately after joining.
  • The only workaround is to listen for the participant_joined webhook and mute via RoomServiceClient.
  • This approach introduces a race condition and doesn’t guarantee clean silence at join time.
  • SDKs like livekit-react and livekit-client already allow joining muted (audio: false in connect()), but Ingress has no equivalent configuration.

Related issue for reference:
👉 [#370 “how to mute audio via ingress”](#370) — similar request from another user, focused on post-join muting rather than pre-join state.


Proposed Behavior

Allow a configuration flag in CreateIngressRequest to define whether Ingress participants start muted.

Example (API level):

message CreateIngressRequest {
  ...
  bool mute_on_join = 10; // default: false
  bool disable_video_on_join = 11; // optional, same behavior for video
}

Optionally, support a global or room-level config:

room_defaults:
  ingress_mute_on_join: true

When mute_on_join is true, the Ingress should attach tracks with the muted flag already set before starting media publication.


Why it matters

  • Prevents open-mic or unwanted audio leaks in production environments.
  • Simplifies automation and orchestration for platforms managing dozens of live sources.
  • Makes Ingress consistent with SDK-level connection behavior (audio: false, video: false).
  • Reduces the need for backend-side race conditions handling.
  • Improves UX and safety for event moderation pipelines.

This is particularly relevant for multi-room event systems or translation pipelines (e.g., interpreters joining via WHIP), where each Ingress should only go live when explicitly unmuted by the controller.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions