Skip to main content

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

  1. Install ffmpeg:

    brew install ffmpeg
    
  2. Install BlackHole (for system audio capture):

  3. 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
  4. 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:

  1. Microphone: System Preferences → Privacy & Security → Microphone
  2. Input Monitoring: System Preferences → Privacy & Security → Input Monitoring

Output Files

Each recording session creates:

  • YYYYmmdd-HHMMSS.wav - Audio recording
  • YYYYmmdd-HHMMSS.transcript.txt - Plain text transcript
  • YYYYmmdd-HHMMSS.transcript.json - Transcript with timestamps
  • YYYYmmdd-HHMMSS.summary.md - Meeting summary with decisions and action items

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meetcap-1.1.1.tar.gz (67.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meetcap-1.1.1-py3-none-any.whl (34.9 kB view details)

Uploaded Python 3

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

Hashes for meetcap-1.1.1.tar.gz
Algorithm Hash digest
SHA256 a459854b57888b4ec0bef16dca9401dff24fdd5d572694625ab2a8cfa84dce91
MD5 0d9d1b6113c13078f7873571892090c9
BLAKE2b-256 1a68646b23b720edd60405131dd1b504a058c8c4a427553bc36e2a21e518c601

See more details on using hashes here.

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

Hashes for meetcap-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25dc59bd165d9f7aea5021f8b3f3f38bef792b9bfd9eaba8da9bfb9e64bb7f1c
MD5 11d25c3971be49916e82597920e107ef
BLAKE2b-256 8fb0ae1f3d69ffa4561bcce756e0999306a4c9708a366a749ab15966d868c272

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page