May 1, 2026
Commits
d790317 — Add checkpointing for Modal preemption, update LiveKit SDKs, fix anon DEK issue
Major livekit and queues update. The COLMAP SfM pipeline (colmap_undistorted_sfm_export.sh) now writes a checkpoint file after each stage so Modal preemption doesn't restart from scratch — completed steps are skipped on resume. LiveKit SDKs bumped from 1.1.2/1.4.2 to 1.1.5/1.5.6. VAD preloading via ctx.proc.userdata["vad"] disabled (upstream livekit prewarm bug causes timeouts with newer SDK); agents now call silero.VAD.load() inline. Session recording asset registration re-enabled. S3 bucket reference corrected from VIDEO_DATA_BUCKET_NAME to ASSET_DATA_BUCKET_NAME (consolidating onto a single bucket). The video_to_gsplat.sh helper script added for ffmpeg frame extraction + COLMAP + splatting. Anonymous DEK creation fixed for the new Supabase instance.
Changed:
dev/queues/colmap_undistorted_sfm_export.sh— checkpoint-based preemption tolerance: each COLMAP step writes to$CHECKPOINT_DIR/checkpoint.txt;step_done/mark_donehelpers skip completed stagesdev/queues/session_to_splat.py— timeout extended from 4h to 6hdev/queues/dockerfile.session_to_splat— build updates for new pipelinedev/livekit_ts/agent/agent.py—noise_cancellationplugin replaced withsilero; VAD loaded inline instead of from prewarm userdata; session recording asset registration un-commented; depth track handling notesdev/livekit_ts/agent/room_agent_worker.py— VAD prewarm disabled (upstream bug)dev/livekit_ts/agent/recorder.py— S3 bucket corrected toASSET_DATA_BUCKET_NAMEdev/livekit_ts/agents/livekit_agent_helpers.py— SDK version bumps in image commentsdev/livekit_ts/agents/dockerfile.livekit_agent— Dockerfile adjustmentsdev/core/core.py—livekit-protocolpinned to 1.1.5dev/core/data.py—VIDEO_DATA_BUCKET_NAMEremoved;upload_to_sparkyusesASSET_DATA_BUCKET_NAMEdev/users/auth.py— anonymous DEK handling fixesdev/requirements.txt,dev/requirements_full.txt,requirements.txt— dependency version bumps
Added:
dev/queues/video_to_gsplat.sh— end-to-end ffmpeg → COLMAP → splatting helper
Removed:
dev/queues/1416529-sd_640_360_30fps.mp4,dev/queues/boot.mp4— test video files cleaned up
434ea24 — Make livekit-recorder write encrypted data
The Go-based livekit-recorder now encrypts video and depth recordings at rest using AES-CBC before writing to S3. The encryption mirrors the Python core.crypto.encrypt_account_data path: base64-encode plaintext → PKCS7-pad → random IV + CBC encrypt → base64-encode blob. The recorder receives the account DEK via a DEK_BASE64 environment variable, loaded by the Python agent before spawning the subprocess.
Changed:
dev/livekit-recorder/pkg/participant/data.go—encryptBytes()(AES-CBC + PKCS7) andencryptAndWriteFile()functions addeddev/livekit-recorder/pkg/participant/processing.go—process()andprocessDepth()now callencryptAndWriteFileinstead ofcopyFiledev/livekit_ts/agent/recorder.py— loads DEK viacore.data.load_dek_in_memory(), passesDEK_BASE64env var to recorder subprocessdev/core/data.py—load_dek_in_memory()now returns the encoded DEK string (was void) with-> str | Nonereturn type