Your invisible AI meeting assistant — Live captions and smart summaries, right in your browser.
Quick Start • How It Works • Features • API
ghostmeet silently captures audio from any browser tab — Google Meet, Zoom, Teams, or anything with sound — and transcribes it in real-time using Whisper. When the meeting ends, click Summarize and AI extracts key decisions, action items, and next steps.
It runs as a Chrome Extension side panel. Other participants can't see it. Like a ghost in your meeting. 👻
- 100% local — audio never leaves your machine
- No accounts — no sign-up, no cloud, no subscriptions
- Works everywhere — any tab that plays audio
- 🎙️ Real-time transcription — Whisper STT, updates every 10 seconds
- 📋 AI-powered summaries — Key decisions, action items, next steps
- 📎 Meeting context — Add agenda or attach files before the meeting
- 🔒 Self-hosted — your audio stays on your machine
- 🐳 One-command setup —
docker compose upand you're ready - 👻 Invisible — side panel UI, no one in the meeting knows
Browser Tab (Zoom / Meet / Teams)
│
├── Chrome Extension captures tab audio (chrome.tabCapture)
│
▼
WebSocket ──→ Local Backend (FastAPI + Whisper)
│
├── Real-time STT ──→ Live Captions (Side Panel)
│
└── Claude AI (on demand) ──→ Meeting Summary
Everything runs on your machine. The only external call is to Claude API when you click Summarize (optional — transcription works without it).
- Docker (recommended) or Python 3.10+
- Chrome browser
git clone https://github.com/Higangssh/ghostmeet.git
cd ghostmeet
# Copy and edit config (add your Anthropic API key for summaries)
cp .env.example .env
# Start with Docker
docker compose up -dBackend is ready when you see http://0.0.0.0:8877 in the logs.
Manual install (without Docker)
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python -m backendNote: First run downloads the Whisper model (~150MB for base).
- Open chrome://extensions in Chrome
- Enable Developer mode (toggle in top-right)
- Click Load unpacked
- Select the
extension/folder from this repo - Pin the 👻 icon in your toolbar
- Join a meeting — Open Google Meet, Zoom, Teams (or any tab with audio)
- Click 👻 — Side panel opens on the right
- Click ▶ Start — Live captions appear as people speak
- Click ■ Stop — When the meeting ends
- Click 📋 Summarize — AI generates a structured summary
That's it. No sign-up, no config, no cloud.
Set these in .env or docker-compose.yml:
| Variable | Default | Description |
|---|---|---|
GHOSTMEET_MODEL |
base |
Whisper model size (tiny / base / small / medium / large) |
GHOSTMEET_DEVICE |
auto |
Compute device (auto / cpu / cuda) |
GHOSTMEET_LANGUAGE |
auto-detect | Force language (en / ko / ja / etc.) |
GHOSTMEET_CHUNK_INTERVAL |
10 |
Seconds between transcription updates |
GHOSTMEET_ANTHROPIC_KEY |
— | Required for AI summaries |
GHOSTMEET_HOST |
0.0.0.0 |
Server bind address |
GHOSTMEET_PORT |
8877 |
Server port |
Model size guide:
tiny— fastest, least accurate (~75MB)base— good balance (recommended, ~150MB)small— better accuracy, slower (~500MB)medium/large— best accuracy, needs GPU
| Endpoint | Method | Description |
|---|---|---|
/api/health |
GET | Health check + model info |
/api/sessions |
GET | List all sessions |
/api/sessions/{id} |
GET | Session details |
/api/sessions/{id}/transcript |
GET | Full transcript |
/api/sessions/{id}/summarize |
POST | Generate AI summary |
/api/sessions/{id}/summary |
GET | Get generated summary |
/ws/audio |
WS | Audio ingest (binary) |
/ws/transcript/{id} |
WS | Live transcript stream |
ghostmeet/
├── extension/ # Chrome MV3 Extension
│ ├── manifest.json # permissions + side panel config
│ ├── background.js # tab audio capture → WebSocket
│ ├── sidepanel.html/js # live captions UI
│ ├── popup.html/js # start/stop controls
│ └── icons/ # extension icons
├── backend/ # Python backend (FastAPI)
│ ├── app.py # HTTP + WebSocket server
│ ├── audio_processor.py # Whisper transcription pipeline
│ ├── transcriber.py # faster-whisper wrapper
│ ├── summarizer.py # Claude API integration
│ └── models.py # session + segment models
├── assets/ # logo, demo GIF
├── docker-compose.yml # one-command deployment
├── Dockerfile # backend container
└── requirements.txt # Python dependencies
ghostmeet works as an OpenClaw skill. Control your meetings from chat.
# Install the skill
clawhub install ghostmeetThen just ask your AI assistant:
- "Summarize my last meeting" → generates AI summary from latest session
- "How many meetings did I have today?" → lists all sessions
- "What was discussed?" → fetches full transcript
- "Extract action items" → pulls tasks from the summary
The skill handles session listing, transcript retrieval, and summary generation via the ghostmeet API. Recording start/stop is done through the Chrome Extension.
- Real-time transcription (Whisper)
- Chrome Extension side panel UI
- AI meeting summaries (Claude)
- Meeting context input + file attach
- Speaker diarization (who said what)
- Export to Markdown / PDF
- Multi-language support
- Agent Mode — AI speaks in the meeting for you

