Record meetings with LiveKit Egress instead of browser capture.
Deploy Ladill Meet / deploy (push) Successful in 52s

Server-side room composite egress replaces fragile MediaRecorder DOM capture when enabled, with webhook completion and browser fallback when egress is unavailable.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-04 03:18:28 +00:00
co-authored by Cursor
parent c2cb9cf33a
commit 4e4bed0df3
10 changed files with 674 additions and 10 deletions
+14
View File
@@ -114,6 +114,19 @@ return [
'disk' => env('MEET_RECORDINGS_DISK', 'local'),
'max_mb' => (int) env('MEET_RECORDING_MAX_MB', 512),
'processing_timeout_minutes' => (int) env('MEET_RECORDING_PROCESSING_TIMEOUT_MINUTES', 15),
'egress' => [
'enabled' => (bool) env('MEET_EGRESS_ENABLED', false),
's3' => [
'access_key' => env('MEET_EGRESS_S3_ACCESS_KEY', env('AWS_ACCESS_KEY_ID')),
'secret' => env('MEET_EGRESS_S3_SECRET', env('AWS_SECRET_ACCESS_KEY')),
'session_token' => env('MEET_EGRESS_S3_SESSION_TOKEN'),
'region' => env('MEET_EGRESS_S3_REGION', env('AWS_DEFAULT_REGION', 'us-east-1')),
'bucket' => env('MEET_EGRESS_S3_BUCKET', env('AWS_BUCKET')),
'endpoint' => env('MEET_EGRESS_S3_ENDPOINT', env('AWS_ENDPOINT')),
'assume_role_arn' => env('MEET_EGRESS_S3_ASSUME_ROLE_ARN'),
'assume_role_external_id' => env('MEET_EGRESS_S3_ASSUME_ROLE_EXTERNAL_ID'),
],
],
],
'ai' => [
@@ -129,6 +142,7 @@ return [
'provider' => env('MEET_MEDIA_PROVIDER', 'livekit'),
'livekit' => [
'url' => env('LIVEKIT_URL', ''),
'api_url' => env('LIVEKIT_API_URL', ''),
'api_key' => env('LIVEKIT_API_KEY', ''),
'api_secret' => env('LIVEKIT_API_SECRET', ''),
],