A lightweight daemon that captures meeting audio, video, and transcripts from every major platform. No meeting bots. No browser extensions. Just native OS-level capture.
System-level audio without meeting bots
MeetCapture captures system audio directly from the OS audio pipeline. On macOS, it uses ScreenCaptureKit for zero-latency audio tapping. On Windows, WASAPI in loopback mode captures all desktop audio. No meeting bots, no browser extensions, no participants added to your call.
[audio]
enabled = true
sample_rate = 48000
channels = 2
format = "pcm_s16le"
silence_threshold = -40 # dB
auto_start_on_meeting = trueH.264 screen recording with configurable FPS
Capture the meeting window or full screen as H.264 video, muxed to MP4. Configurable frame rate (1-30 FPS) and resolution. The daemon automatically identifies and captures the correct window for each meeting platform.
[video]
enabled = true
fps = 15
quality = "balanced" # low | balanced | high
codec = "h264"
output_format = "mp4"
capture_mode = "window" # window | fullscreenLive speech-to-text with speaker diarization
Stream audio to Deepgram or AssemblyAI for real-time transcription with speaker diarization. Each utterance is timestamped and attributed to a speaker. Interim results stream in with sub-second latency; final results include confidence scores.
[transcription]
enabled = true
provider = "deepgram" # deepgram | assemblyai
model = "nova-2"
language = "en"
diarize = true
interim_results = true
# api_key = "your-key" # or use DEEPGRAM_API_KEY envAutomatic upload to Supabase
When a meeting ends, the daemon automatically uploads the recording, transcript, and session metadata to your Supabase project. Recordings go to Supabase Storage with resumable uploads. Transcripts and metadata go to PostgreSQL tables with RLS policies.
[cloud]
enabled = true
supabase_url = "https://xrhwfuquudleamotznzx.supabase.co"
# supabase_anon_key loaded from env
auto_upload = true
upload_recordings = true
upload_transcripts = true
storage_bucket = "recordings"Auto-detects Zoom, Teams, Meet, Slack, Webex
The daemon continuously monitors running processes and window titles to detect active meeting sessions. When a supported platform is detected, recording starts automatically. No manual intervention needed — it just works.
[detection]
auto_detect = true
poll_interval_ms = 1000
platforms = ["zoom", "teams", "meet", "slack", "webex"]
# Optional: only record specific platforms
# allow_list = ["zoom", "teams"]
# deny_list = ["slack"]Your data stays on device until you opt in
MeetCapture follows a local-first architecture. All audio capture, video recording, and transcription happen on the user's device. Data is stored locally in a configurable output directory. Cloud sync is entirely optional and requires explicit opt-in.
[storage]
output_dir = "~/.meetcapture/recordings"
retention_days = 30 # auto-delete after 30 days
max_storage_gb = 50 # pause recording if exceeded
[privacy]
telemetry = false
crash_reports = false
cloud_sync_default = false # user must opt-inA single daemon process handles everything. No separate services to manage.
Rust binary (<20MB) runs as a background service. Handles capture, encoding, transcription, and sync.
PostgreSQL for metadata and transcripts. Storage for recordings. Realtime for live updates. Edge Functions for API.
Next.js web app for managing sessions, API keys, webhooks, team settings, and playback.
Get started with the free tier. No credit card required.