Offline meeting transcription for macOS — auto-detects meetings, transcribes locally, saves to Claude Desktop via MCP
Project description
trnscrb
Offline meeting transcription for macOS — no cloud, no subscription.
trnscrb lives in your menu bar, listens for meetings, transcribes them locally with Whisper, and makes every transcript searchable from Claude Desktop via MCP.
Install
pip install trnscrb
trnscrb install
Or with uv:
uv tool install trnscrb
trnscrb install
trnscrb install is a guided setup that handles:
- BlackHole 2ch audio driver (captures system audio alongside mic)
- HuggingFace token for speaker diarization (pyannote)
- Whisper
smallmodel download (~500 MB, one-time) - Claude Desktop MCP config
- Launch-at-login agent
Quick start
trnscrb start # launch the menu bar app
With Auto-transcribe on (the default), trnscrb detects when a meeting starts — Google Meet, Zoom, Slack Huddle, Teams, FaceTime — and begins recording automatically. When the meeting ends, it stops, transcribes, and saves.
You can also trigger manually from the menu bar: Start Transcribing / Stop Transcribing.
How it works
| Step | What happens |
|---|---|
| Meeting detected | Mic active for 5 s + meeting app found |
| Recording | Audio captured via mic or BlackHole (system + mic) |
| Transcription | Whisper small model, runs locally on Apple Silicon |
| Diarization | Speaker labels via pyannote (needs HuggingFace token) |
| Saved | Plain .txt in ~/meeting-notes/ |
Claude Desktop integration
After trnscrb install, Claude Desktop has these tools available:
| Tool | Description |
|---|---|
start_recording |
Start capturing audio |
stop_recording |
Stop and transcribe in the background |
recording_status |
Check if recording or transcribing |
get_last_transcript |
Fetch the most recent transcript |
list_transcripts |
List all saved meetings |
get_transcript |
Read a specific transcript |
get_calendar_context |
Current or upcoming calendar event |
enrich_transcript |
Add summary + action items via Claude API |
CLI
trnscrb start # launch menu bar app
trnscrb install # guided setup / re-check dependencies
trnscrb list # list saved transcripts
trnscrb show <id> # print a transcript
trnscrb enrich <id> # summarise + action items (needs ANTHROPIC_API_KEY)
trnscrb mic-status # live mic activity monitor — useful for debugging
trnscrb devices # list audio input devices
trnscrb watch # headless auto-transcribe, no menu bar
System audio with BlackHole
To capture both your mic and the other participants' audio:
- Install BlackHole via
trnscrb install(orbrew install blackhole-2ch) - Open Audio MIDI Setup → + → Create Multi-Output Device
- Check BlackHole 2ch and MacBook Pro Speakers
- System Settings → Sound → Output → select the Multi-Output Device
trnscrb auto-detects BlackHole and uses it when available. Without it, only your mic is recorded.
Transcript format
Meeting: Weekly Standup
Date: 2025-02-18 10:00
Duration:23:14
============================================================
[SPEAKER_00]
00:12 Good morning, let's get started.
[SPEAKER_01]
00:18 Morning! I finished the auth PR yesterday.
Running trnscrb enrich <id> replaces SPEAKER_00 / SPEAKER_01 with inferred names and appends a summary and action items block.
Requirements
- macOS 13 or later
- Python 3.11+
- Apple Silicon (M1/M2/M3/M4) recommended — Whisper runs on Metal
Privacy
Everything runs on your machine. No audio or transcripts leave your device unless you explicitly run enrich, which sends the transcript text to the Claude API.
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 trnscrb-0.1.1.tar.gz.
File metadata
- Download URL: trnscrb-0.1.1.tar.gz
- Upload date:
- Size: 25.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59267355b6031204217c4efe86e1679d4ddf9eb359d0f806e1331783450c5a16
|
|
| MD5 |
9669391f7cb72c25799e14574857d5f5
|
|
| BLAKE2b-256 |
97b93cbb7fbe780c9e27adbf7e0500dbce178b717ad7f7a79a22a59a47be6dc8
|
File details
Details for the file trnscrb-0.1.1-py3-none-any.whl.
File metadata
- Download URL: trnscrb-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46e679e19629ebeab6797dc5f254616119b059dc09939ac69fc10fa991fa3f48
|
|
| MD5 |
6abe4e17fe2f8d06e41a213979461ee0
|
|
| BLAKE2b-256 |
ea8093eaa625765be6952d02007bc09f41282c64df56c82f1e03c5ba46d4ade0
|