EchoLoop — Real-Time Meeting Copilot
Live meeting transcription + AI coaching. Captures dual audio (system speakers + microphone), transcribes in real-time, and feeds rolling transcript to Claude or GPT for tactical insights every ~35 seconds.
When to Use This Skill
- Live meeting coaching: Real-time tactical advice during calls
- Meeting transcription: Dual-stream (you + them) labelled transcript
- Meeting recap: Session logs with markdown export
- Negotiation support: Reads the room and suggests responses
- Multi-user audio: Works with our VNC desktop + virtual audio cables
When Not to Use
- For pre-recorded audio/video processing — use
ffmpeg-processing - For generating podcasts from text — use
notebooklm(audio overviews) - For video production — use
open-montage - For browser-based meeting automation — use
playwright
Architecture
┌───────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐
│ Audio Capture │────>│ Transcriber │────>│ EchoLoop │────>│ UI │
│ (2 threads) │ │ (thread pool)│ │ Engine │ │ (Tkinter) │
│ │ │ │ │ (asyncio) │ │ │
│ system ──┐ │ │faster-whisper│ │ │ │ Always-on- │
│ mic ─────┤ │ │ or Deepgram │ │ Claude / GPT │ │ top overlay│
│ v │ │ │ │ every ~35s │ │ │
│ chunk queue │ │ seg queue │ │ + on silence │ │ insight log│
└───────────────┘ └──────────────┘ └──────────────┘ └────────────┘
Quick Start
# Install dependencies
pip install -r requirements.txt # from the echoloop skill directory
# Set API key (uses existing container keys)
export ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" # Already set for devuser
# Configure audio devices (container VNC)
export ECHOLOOP_SYSTEM_DEVICE="pulse" # PulseAudio virtual cable
export ECHOLOOP_MIC_DEVICE="" # Default mic
# Launch on VNC Display :1
DISPLAY=:1 python3 -m echoloop
Container Audio Routing
Our container has PulseAudio on VNC Display :1. For meeting capture:
- Virtual audio cable: Route system audio through PulseAudio monitor
- Set device:
ECHOLOOP_SYSTEM_DEVICE=<pulse monitor name> - Launch:
DISPLAY=:1 python3 main.py # from the echoloop skill directory
For multi-user scenarios, each user can run their own EchoLoop instance with different audio routing.
Environment Variables
| Variable | Default | Description |
|---|---|---|
ANTHROPIC_API_KEY |
(required) | Claude API key (already set in container) |
OPENAI_API_KEY |
GPT API key (for OpenAI provider) | |
DEEPGRAM_API_KEY |
Deepgram key (for cloud transcription) | |
ECHOLOOP_LLM_PROVIDER |
anthropic |
LLM provider: anthropic or openai |
ECHOLOOP_TRANSCRIBER |
local |
Transcription: local (faster-whisper) or deepgram |
ECHOLOOP_WHISPER_MODEL |
base.en |
Whisper model size |
ECHOLOOP_WHISPER_DEVICE |
cpu |
cpu or cuda for GPU transcription |
ECHOLOOP_PUSH_INTERVAL |
35 |
Seconds between LLM coaching calls |
ECHOLOOP_SILENCE_TRIGGER |
4.0 |
Seconds of silence before early push |
ECHOLOOP_SYSTEM_DEVICE |
System audio device name substring | |
ECHOLOOP_MIC_DEVICE |
Microphone device (None = default) | |
ECHOLOOP_MEETING_CONTEXT |
One-line meeting briefing for sharper advice | |
ECHOLOOP_LOG_DIR |
Directory for session logs (empty = disabled) | |
ECHOLOOP_OPACITY |
0.88 |
Overlay window opacity |
Features
- Dual audio capture: System audio + microphone, labelled
[THEM]and[ME] - Transcription: Local faster-whisper (CPU/CUDA) or Deepgram cloud
- LLM coaching: Claude or GPT every ~35s with nudge button for instant advice
- Silence detection: Skips dead air, saves CPU and API calls
- Session logging: Transcript + insights saved to disk, markdown export
- Auto-reconnect: Audio streams recover if device disconnects
- Pause/Resume: Click or
Ctrl+Shift+Eglobal hotkey - Live stats: Insight count, session duration, talk-time percentage
Integration with Other Skills
| Skill | Relationship |
|---|---|
notebooklm |
Feed meeting transcripts as sources, generate audio overviews |
report-builder |
Generate meeting reports from session logs |
perplexity-research |
Research topics mentioned in meetings in real-time |
codex-companion |
Delegate technical questions from meetings to Codex |
Attribution
EchoLoop by Pete Woodbridge. MIT License.