Open Source · Self-Hosted · Privacy First

Meeting intelligence
on your infrastructure

MeetRead joins your Google Meet calls, records audio, captures transcripts, and generates summaries — without sending your data anywhere you don't control.

⭐ Star on GitHub Get started →
meetread — docker compose
# One-command Docker start
$ docker compose up --build
 
[MeetRead] Calendar polling active — interval 300s
[MeetRead] Upcoming event: Weekly Sync @ 14:00
[MeetRead] Joining meet.google.com/abc-defg-hij ...
[MeetRead] Waiting in lobby — admitted by host
[MeetRead] Recording started ✓ — audio + captions
[MeetRead] Meeting ended. Finalizing artifacts ...
[MeetRead] Intelligence generated → meeting_intelligence.md
[MeetRead] Summary email sent ✓

Everything Read.ai does,
on a server you own

No SaaS subscriptions. No data leaving your infrastructure. Full control over every meeting artifact.

📅
Calendar-driven automation
Polls Google Calendar, auto-joins scheduled Google Meet events within your configured buffer window.
🎙️
System audio recording
PulseAudio null-sink per meeting on Linux/Docker. WAV chunks concatenated to final WAV + MP3 via ffmpeg.
📝
Live caption scraping
DOM polling captures Google Meet's live captions in real time. Deduplication cleans repeated incremental entries.
🤖
Meeting intelligence
Local rule-based summaries by default. Optional LLM providers — Ollama, OpenAI, Sarvam AI, any OpenAI-compatible API.
📧
SMTP email delivery
Rich HTML summary emails with plain-text fallback, delivered via your own SMTP server after every meeting.
🔗
Manual join by URL
No calendar needed. Pass a Meet URL directly with optional title, duration, end-time, or --background detach flag.
🛡️
Privacy by default
Audio, transcripts, and summaries stay local. External providers are opt-in adapters, never required for core function.
🔁
Reprocessing support
Regenerate intelligence or resend summary email for any existing meeting folder without re-joining the call.
🧪
Test suite
pytest suite mocking browser and audio boundaries. CI-friendly. No real credentials needed for unit tests.

From calendar event
to intelligence artifact

MeetRead runs as a daemon, watching your calendar and handling the full meeting lifecycle automatically.

📅
Calendar watch
Polls Google Calendar every 5 min. Detects upcoming Meet events within join buffer.
🌐
Browser join
Launches Chrome via undetected ChromeDriver. Signs in, enables captions, blocks camera/mic permissions.
🚪
Lobby admission
Waits for host to admit the bot. Configurable timeout. Handles plugin dialogs with LLM classification.
⏺️
Parallel capture
AudioRecorder + CaptionScraper run in parallel threads. Stop on meeting-end detection or removal.
🧠
Intelligence
Transcript normalized → rule-based or LLM analysis → JSON + Markdown artifacts written to disk.
📬
Delivery
Optional SMTP summary email. Status recorded in metadata.json. Failures don't affect capture artifacts.

Every meeting, fully archived

Each call gets its own folder with every artifact you need — audio, transcripts, intelligence, and logs.

meetings/2026-06-05_Weekly-Sync/
├── metadata.json # title, timestamps, attendees, status, email delivery
├── audio_raw.wav # full meeting audio (WAV)
├── audio_raw.mp3 # compressed MP3 (ffmpeg)
├── transcript_live.json # raw captions as scraped
├── transcript_final.json# deduplicated, normalized
├── transcript_final.txt # plain text transcript
├── meeting_intelligence.json # structured: summary, actions, decisions, risks …
├── meeting_intelligence.md # human-readable intelligence report
└── bot.log # full debug log for this meeting

Local by default,
AI when you want it

Rule-based provider works offline with no API keys. Swap in any OpenAI-compatible LLM with one env var.

Rule-based (default)
Regex patterns for decisions, risks, blockers, actions, questions, topics. No external calls.
100% Local
🦙
Ollama / LM Studio
Self-hosted LLMs via OpenAI-compatible API. Llama 3, Mistral, Phi — full privacy.
Self-Hosted
🤖
OpenAI / vLLM
GPT-4o, Claude via proxy, or any OpenAI-compatible gateway. json_schema structured output.
🌟
Sarvam AI
Native Sarvam provider with reasoning_effort support. Ideal for Indian language meetings.

Run anywhere

Docker Compose is the quickest path. macOS and bare Linux are also fully supported.

🐳 Docker Recommended

Chrome + Xvfb + PulseAudio + ffmpeg bundled. Mount secrets and go.

cp .env.docker.example .env.docker
# fill BOT_GOOGLE_ACCOUNT_EMAIL
docker compose up --build

🐧 Linux (bare)

PulseAudio + Xvfb + Chrome. Works with systemd for production.

python3.11 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
python main.py

🔗 Manual join

Skip the calendar. Join any Meet URL directly, optionally detaching to background.

python join_meeting.py \
  "https://meet.google.com/abc" \
  --title "Quick Sync" --background

Own your meeting data

No subscriptions. No third-party storage. Deploy in minutes with Docker Compose.

View on GitHub → Read the docs