{"record":{"id":"191e30c766b2dbbe","repo":"livekit/livekit","slug":"egress-launcher-not-found","errorCode":null,"errorMessage":"egress launcher not found","messagePattern":"egress launcher not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/rtc/egress.go","lineNumber":85,"sourceCode":"\troomName livekit.RoomName,\n\troomID livekit.RoomID,\n) (*livekit.ParticipantEgressRequest, error) {\n\treq := &livekit.ParticipantEgressRequest{\n\t\tRoomName:       string(roomName),\n\t\tIdentity:       string(identity),\n\t\tFileOutputs:    opts.FileOutputs,\n\t\tSegmentOutputs: opts.SegmentOutputs,\n\t}\n\n\tswitch o := opts.Options.(type) {\n\tcase *livekit.AutoParticipantEgress_Preset:\n\t\treq.Options = &livekit.ParticipantEgressRequest_Preset{Preset: o.Preset}\n\tcase *livekit.AutoParticipantEgress_Advanced:\n\t\treq.Options = &livekit.ParticipantEgressRequest_Advanced{Advanced: o.Advanced}\n\t}\n\n\tif launcher == nil {\n\t\treturn req, errors.New(\"egress launcher not found\")\n\t}\n\n\t_, err := launcher.StartEgress(ctx, &rpc.StartEgressRequest{\n\t\tRequest: &rpc.StartEgressRequest_Participant{\n\t\t\tParticipant: req,\n\t\t},\n\t\tRoomId: string(roomID),\n\t})\n\treturn req, err\n}\n\nfunc StartTrackEgress(\n\tctx context.Context,\n\tlauncher EgressLauncher,\n\tts telemetry.TelemetryService,\n\topts *livekit.AutoTrackEgress,\n\ttrack types.MediaTrack,\n\troomName livekit.RoomName,","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/livekit/livekit/blob/ee45c3f0b1a83bf4352dbccb6607ebf70b2a5de6/pkg/rtc/egress.go#L67-L103","documentation":"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.","triggerScenarios":"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).","commonSituations":"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.","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."],"exampleFix":"// before\nif launcher == nil {\n  return req, errors.New(\"egress launcher not found\")\n}\n// after\nif launcher == nil {\n  return req, psrpc.NewErrorf(psrpc.Internal, \"egress launcher not found: egress service not configured on this node\")\n}","handlingStrategy":"validation","validationCode":"if egressLauncher == nil {\n  return fmt.Errorf(\"cannot enable auto participant egress: egress service not configured\")\n}\nroom.AutoEgress = autoEgress","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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."],"tags":["go","egress","configuration","livekit"],"backgroundTag":"dependency-not-configured","analyzedSha":"ee45c3f0b1a83bf4352dbccb6607ebf70b2a5de6","analyzedAt":"2026-09-02T03:56:08.477Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T06:17:21.866Z"}