livekit/livekit · error
egress launcher not found
Error message
egress launcher not found
What it means
startParticipantEgress returns a generic errors.New("egress launcher not found") when the room's EgressLauncher is nil — i.e. the egress service is not wired into this node, so auto participant egress cannot be started. It is surfaced through StartParticipantEgress.
Source
Thrown at pkg/rtc/egress.go:85
roomName livekit.RoomName,
roomID livekit.RoomID,
) (*livekit.ParticipantEgressRequest, error) {
req := &livekit.ParticipantEgressRequest{
RoomName: string(roomName),
Identity: string(identity),
FileOutputs: opts.FileOutputs,
SegmentOutputs: opts.SegmentOutputs,
}
switch o := opts.Options.(type) {
case *livekit.AutoParticipantEgress_Preset:
req.Options = &livekit.ParticipantEgressRequest_Preset{Preset: o.Preset}
case *livekit.AutoParticipantEgress_Advanced:
req.Options = &livekit.ParticipantEgressRequest_Advanced{Advanced: o.Advanced}
}
if launcher == nil {
return req, errors.New("egress launcher not found")
}
_, err := launcher.StartEgress(ctx, &rpc.StartEgressRequest{
Request: &rpc.StartEgressRequest_Participant{
Participant: req,
},
RoomId: string(roomID),
})
return req, err
}
func StartTrackEgress(
ctx context.Context,
launcher EgressLauncher,
ts telemetry.TelemetryService,
opts *livekit.AutoTrackEgress,
track types.MediaTrack,
roomName livekit.RoomName,View on GitHub (pinned to ee45c3f0b1)
Solutions
- Deploy/register the egress service so the room receives a non-nil EgressLauncher.
- Remove or disable auto participant egress from room config if egress isn't available.
- At room creation, verify the egress launcher is present before accepting rooms that require egress.
Example fix
// before
if launcher == nil {
return req, errors.New("egress launcher not found")
}
// after
if launcher == nil {
return req, psrpc.NewErrorf(psrpc.Internal, "egress launcher not found: egress service not configured on this node")
} Defensive patterns
Strategy: validation
Validate before calling
if egressLauncher == nil {
return fmt.Errorf("cannot enable auto participant egress: egress service not configured")
}
room.AutoEgress = autoEgress Prevention
- Run and register the egress service whenever room configs use auto egress.
- Validate egress wiring at room creation, not at participant join.
- In dev deployments, strip AutoParticipantEgress from room configs.
When it happens
Trigger: A participant with AutoParticipantEgress configured joins (or egress is started) on a server/room instance where the egress launcher dependency was never set (no egress service configured/running).
Common situations: Running livekit-server without an egress service registered but with room-level auto egress config; single-node dev deployments missing egress wiring; misconfigured room settings enabling egress implicitly.
Related errors
AI-assisted analysis of livekit/livekit@ee45c3f0b1 (2026-09-02).
Data as JSON: /api/errors/191e30c766b2dbbe.
Report an issue: GitHub.