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

  1. Deploy/register the egress service so the room receives a non-nil EgressLauncher.
  2. Remove or disable auto participant egress from room config if egress isn't available.
  3. 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

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.