Offline meeting recorder & summarizer for macOS
Project description
meetcap
Offline meeting recorder & summarizer for macOS
Features
- Records both system audio and microphone simultaneously
- 100% offline operation - no network connections
- Local transcription using Whisper
- Local summarization using Qwen3-4B via llama.cpp
- Simple CLI workflow: start recording → stop with hotkey → get transcript & summary
Installation
Prerequisites
-
Install ffmpeg:
brew install ffmpeg
-
Install BlackHole (for system audio capture):
- Download from: https://github.com/ExistentialAudio/BlackHole
- Install the 2ch version
-
Configure Audio Routing:
a. Create Multi-Output Device (for monitoring):
- Open Audio MIDI Setup
- Click "+" → Create Multi-Output Device
- Add: Built-in Output + BlackHole 2ch
- Set as system output device
b. Create Aggregate Input Device (for recording):
- Click "+" → Create Aggregate Device
- Add: BlackHole 2ch + Your Microphone
- Set microphone as clock source
- Enable drift correction
-
Models (selected and downloaded during setup):
- Whisper models: large-v3 (default), large-v3-turbo, or small
- LLM models: Qwen3-4B-Thinking (default), Qwen3-4B-Instruct, or GPT-OSS-20B
Install meetcap
# Clone repository
git clone https://github.com/yourusername/meetcap.git
cd meetcap
# Create virtual environment with hatch
hatch env create
# Install ML dependencies (required for transcription/summarization)
hatch run pip install faster-whisper
CMAKE_ARGS='-DLLAMA_METAL=on' hatch run pip install llama-cpp-python
# Run interactive setup wizard (first time only)
# This will test permissions and let you choose models to download
hatch run meetcap setup
# Quick verification (check status without downloads)
hatch run meetcap verify
# Run meetcap
hatch run meetcap --help
Usage
Basic Recording
# Start recording (uses default/best audio device)
hatch run meetcap record
# Press ⌘+⇧+S or Ctrl-C to stop recording
Process Existing Audio Files
# Transcribe and summarize an existing audio file
hatch run meetcap summarize path/to/meeting.m4a
# Specify output directory
hatch run meetcap summarize recording.m4a --out ./results
Commands
# First-time setup (interactive wizard)
hatch run meetcap setup
# List available audio devices
hatch run meetcap devices
# Quick system verification
hatch run meetcap verify
# Start recording a meeting
hatch run meetcap record --device "Aggregate Device" --out ~/MyRecordings
# Process existing audio file (m4a, wav, mp3, etc.)
hatch run meetcap summarize samples/meeting.m4a --out ./processed
Configuration
Edit ~/.meetcap/config.toml to customize:
- Default audio device
- Model settings (defaults to auto-downloaded models)
- Hotkey combinations
- Output directories
Models are automatically downloaded to ~/.meetcap/models/ on first use.
Permissions
Grant these permissions to your terminal app:
- Microphone: System Preferences → Privacy & Security → Microphone
- Input Monitoring: System Preferences → Privacy & Security → Input Monitoring
Output Files
Each recording session creates:
YYYYmmdd-HHMMSS.wav- Audio recordingYYYYmmdd-HHMMSS.transcript.txt- Plain text transcriptYYYYmmdd-HHMMSS.transcript.json- Transcript with timestampsYYYYmmdd-HHMMSS.summary.md- Meeting summary with decisions and action items
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meetcap-1.1.1.tar.gz.
File metadata
- Download URL: meetcap-1.1.1.tar.gz
- Upload date:
- Size: 67.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a459854b57888b4ec0bef16dca9401dff24fdd5d572694625ab2a8cfa84dce91
|
|
| MD5 |
0d9d1b6113c13078f7873571892090c9
|
|
| BLAKE2b-256 |
1a68646b23b720edd60405131dd1b504a058c8c4a427553bc36e2a21e518c601
|
File details
Details for the file meetcap-1.1.1-py3-none-any.whl.
File metadata
- Download URL: meetcap-1.1.1-py3-none-any.whl
- Upload date:
- Size: 34.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25dc59bd165d9f7aea5021f8b3f3f38bef792b9bfd9eaba8da9bfb9e64bb7f1c
|
|
| MD5 |
11d25c3971be49916e82597920e107ef
|
|
| BLAKE2b-256 |
8fb0ae1f3d69ffa4561bcce756e0999306a4c9708a366a749ab15966d868c272
|