Skip to content

morellid/trnscrb

 
 

Repository files navigation

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

brew tap ajayrmk/tap
brew install trnscrb
trnscrb install

Or with pip / uv:

pip install trnscrb && trnscrb install
uv tool install trnscrb && trnscrb install

trnscrb install is a guided setup that handles:

  • Xcode Command Line Tools (needed to build the audio capture helper)
  • ScreenCaptureKit audio helper (captures meeting app audio — no virtual driver needed)
  • HuggingFace token for speaker diarization (pyannote)
  • Whisper small model download (~500 MB, one-time)
  • Claude Desktop MCP config
  • macOS permissions (Microphone, Calendar, Screen Recording)
  • 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 ScreenCaptureKit (meeting app) + 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

Anthropic API key

The enrich command and MCP enrich_transcript tool require an Anthropic API key. Add it to your shell profile:

# ~/.zshrc
export ANTHROPIC_API_KEY="sk-ant-..."

Then restart your terminal or run source ~/.zshrc. If trnscrb is already running, restart it with ./restart.sh.


Restarting

After code changes or environment variable updates (e.g. adding ANTHROPIC_API_KEY to .zshrc), restart trnscrb:

./restart.sh

Or manually:

pkill -f "trnscrb"
source ~/.zshrc
trnscrb start

Audio capture

trnscrb uses ScreenCaptureKit to capture meeting app audio directly — no virtual audio driver needed. When a meeting is detected, it captures two streams:

  • ScreenCaptureKit — the meeting app's audio (remote participants), device-independent
  • Microphone — your voice via the default input device

Both streams are mixed into a single recording. This works seamlessly with Bluetooth earbuds, AirPods, or any audio device — you can connect or disconnect devices mid-meeting without interrupting the recording.

Requirements:

  • macOS 14 (Sonoma) or later
  • Screen Recording permission (granted during trnscrb install)
  • Xcode Command Line Tools (to build the audio capture helper on first install)

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 14 (Sonoma) or later
  • Python 3.11+
  • Apple Silicon (M1/M2/M3/M4) recommended — Whisper runs on Metal
  • Xcode Command Line Tools (xcode-select --install)

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

About

Offline macOS meeting transcription that runs in your menu bar, uses Whisper locally, and makes transcripts searchable in Claude Desktop via MCP.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 87.0%
  • Swift 10.2%
  • Shell 2.8%