RexSystem1 voteoriginally by @mgabor3141 on GitHub OP
4: LiveKit webhooks not configured
Symptom: Users appear stuck in voice channels after leaving. Rejoining shows duplicate entries. The Fluxer server logs show zero webhook events.
Root cause:config/livekit.example.yaml has no webhook section. Without it, LiveKit never sends participant_joined / participant_left / room_finished events to the Fluxer server. The server has a full LiveKitWebhookService that handles these events and updates gateway state, but it never receives anything.
Fix — add to livekit.yaml:
The api_key must match one of the keys in the keys: section. The URL must be reachable from the LiveKit container.
Related:VoiceReconciliationWorker in packages/api/src/voice/VoiceReconciliationWorker.tsx is designed to be a safety net that periodically cross-references LiveKit participants with gateway voice states and cleans up ghosts. However, it's never imported or instantiated anywhere in WorkerDependencies.tsx — it's dead code. Wiring it up would add resilience against missed webhooks.
Thread
Comment by @mgabor3141
4: LiveKit webhooks not configured
Symptom: Users appear stuck in voice channels after leaving. Rejoining shows duplicate entries. The Fluxer server logs show zero webhook events. Root cause:config/livekit.example.yamlhas nowebhooksection. Without it, LiveKit never sendsparticipant_joined/participant_left/room_finishedevents to the Fluxer server. The server has a fullLiveKitWebhookServicethat handles these events and updates gateway state, but it never receives anything. Fix — add tolivekit.yaml:api_keymust match one of the keys in thekeys:section. The URL must be reachable from the LiveKit container. Related:VoiceReconciliationWorkerinpackages/api/src/voice/VoiceReconciliationWorker.tsxis designed to be a safety net that periodically cross-references LiveKit participants with gateway voice states and cleans up ghosts. However, it's never imported or instantiated anywhere inWorkerDependencies.tsx— it's dead code. Wiring it up would add resilience against missed webhooks.