Skip to main content

Offline meeting transcription for macOS — auto-detects meetings, transcribes locally, saves to Claude Desktop via MCP

Project description

trnscrb

Lightweight, fully offline meeting transcription for Claude Desktop. A native macOS alternative to Granola — no cloud, no subscription.

What it does

  • Auto-detects meetings (Google Meet, Zoom, Slack Huddle, Teams, and more)
  • Records your meeting audio (mic + system audio via BlackHole)
  • Transcribes locally with Whisper (small model, Apple Silicon Metal)
  • Identifies speakers with pyannote diarization
  • Reads your calendar to auto-name meetings
  • Saves every transcript as a plain .txt file in ~/meeting-notes/
  • Exposes everything to Claude Desktop via MCP so Claude can search, read, and enrich your notes

Requirements

  • macOS 13+
  • Python 3.11+
  • Apple Silicon recommended (M1/M2/M3) for fast local transcription

Install

# One-liner bootstrap:
bash <(curl -fsSL https://raw.githubusercontent.com/ajayrmk/trnscrb/main/install.sh)

# Or if already cloned:
trnscrb install

The installer checks and optionally installs:

  • BlackHole 2ch audio driver (via Homebrew)
  • Python packages (faster-whisper, pyannote, rumps, sounddevice, mcp, …)
  • HuggingFace token (for pyannote speaker diarization)
  • Whisper small model (~500 MB, downloaded once)
  • Claude Desktop MCP config entry
  • Launch-at-login agent

Usage

Menu bar app

trnscrb start

A mic icon appears in your menu bar with Auto-transcribe on by default — it will automatically start and stop transcribing when it detects a meeting.

Or manually: click → Start Transcribing / Stop Transcribing.

From Claude Desktop

Once the MCP server is configured (done by trnscrb install), Claude has access to:

Tool What it does
start_recording Begin capturing audio
stop_recording Stop, transcribe, save
recording_status Check progress
get_last_transcript Most recent transcript
list_transcripts All saved meetings
get_transcript Full text of one meeting
get_calendar_context Current calendar event
enrich_transcript Summary + action items via Claude API

CLI

trnscrb list               # list all transcripts
trnscrb show <id>          # print a transcript
trnscrb enrich <id>        # run Claude LLM pass (needs ANTHROPIC_API_KEY)
trnscrb mic-status         # live mic activity monitor (debug)
trnscrb devices            # list audio input devices

System audio (BlackHole setup)

After installing BlackHole:

  1. Open Audio MIDI Setup (Spotlight → "Audio MIDI Setup")
  2. Click +Create Multi-Output Device
  3. Check both BlackHole 2ch and MacBook Pro Speakers
  4. Go to System Settings → Sound → Output → select the Multi-Output Device

Transcript format

Meeting: Weekly Standup
Date:    2024-01-15 10:00
Duration:23:14

============================================================

[SPEAKER_00]
  00:12  Good morning everyone, let's get started.

[SPEAKER_01]
  00:18  Morning! I finished the auth PR yesterday.

After running trnscrb enrich <id>, speaker labels are replaced with inferred names and a summary + action items block is appended.

Privacy

All audio processing happens on your device. No data leaves your machine except:

  • If you run enrich, the transcript text is sent to Claude API (Anthropic)
  • Calendar access uses AppleScript locally — no network calls

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

trnscrb-0.1.0.tar.gz (26.2 kB view details)

Uploaded Source

Built Distribution

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

trnscrb-0.1.0-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

Details for the file trnscrb-0.1.0.tar.gz.

File metadata

  • Download URL: trnscrb-0.1.0.tar.gz
  • Upload date:
  • Size: 26.2 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

Hashes for trnscrb-0.1.0.tar.gz
Algorithm Hash digest
SHA256 35f8cd251f7fa003f66d80188b8119db49427f39656b894b30c521c995387e3e
MD5 da2262d99012e61709d78599b42436fc
BLAKE2b-256 9d163b7850876b6c66da58cdc8cd6c0f73704ef09567adf0a2ec3c351882a250

See more details on using hashes here.

File details

Details for the file trnscrb-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: trnscrb-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.2 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

Hashes for trnscrb-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 972fef1f927dafe98e0c77107207d6544251ae6ce12daad8ccf102e8d2a3a72b
MD5 54b2c22c942ba78b259c75543744f5ac
BLAKE2b-256 96025e6f4552f22fb85d7fa96266b6c4241bbce5cac408bc4f543d2e0414d507

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