Meeting notes should not require sending the meeting to a third-party dashboard first. Meeting Transcriber takes the more direct route: it watches for a call on your Mac, captures the app and microphone channels, transcribes them locally, separates speakers and writes a structured Markdown protocol.
The project is a Swift 6.2 macOS menu bar app from pasrom, currently at v0.8.1. It is not a browser recorder with a bot joining the call; the repository describes a local-first pipeline that can use WhisperKit or Parakeet for speech recognition and your chosen Claude, Ollama, LM Studio or OpenAI-compatible provider for the final protocol step. The project repository and project website are the right places to check the current release notes.
What It Does
Meeting Transcriber can watch Teams, Zoom and Webex through window-title detection. Browser meeting detection for services such as Google Meet is opt-in, and several call apps can be enabled through opt-in microphone-input detection when they do not expose a reliable meeting signal. That gives the app an automatic mode without making every audio application a recording trigger by default.
The recording is dual-track: app audio is captured through Apple's CATap audio capture path while the microphone is recorded at the same time. The result keeps your voice and the remote conversation separable, which is much more useful for speaker labels than a single mixed recording. Existing WAV, MP3, M4A, MP4, FLAC, AMR, 3GP, OPUS and OGG files can also enter the same pipeline; MKV and WebM need ffmpeg.
After transcription, FluidAudio handles on-device speaker diarization and can match known voices through embeddings. The last step is protocol generation: choose Claude Code CLI, an OpenAI-compatible endpoint such as Ollama or LM Studio, or no provider at all if a raw transcript is enough. The output is a Markdown meeting record with summary, participants, topics, decisions, tasks and open questions.
How to Install It
There is no official App Store listing for pasrom's Meeting Transcriber. Use the latest GitHub Release and download its DMG, mount it, and move MeetingTranscriber.app to Applications. The supported floor is macOS 14.2+, because CATapDescription is required for app-audio capture; Apple Silicon is the sensible target for the local models.
# Download the latest DMG:
open https://github.com/pasrom/meeting-transcriber/releases/latest
# Mount it and drag MeetingTranscriber.app to /Applications.Homebrew is an optional alternative if you prefer a cask: brew tap pasrom/meeting-transcriber followed by brew install --cask meeting-transcriber. The release page also publishes a SHA256 value for v0.8.1. On first run, the app downloads its speech models automatically; no Hugging Face token is required. For a fully local workflow, configure Ollama or LM Studio. Claude Code CLI and other OpenAI-compatible endpoints are supported choices, but their own processing and privacy terms still apply.
How to Use It
Launch the app and leave it in the menu bar. When a supported meeting is detected, recording starts according to the selected app and detection settings. Microphone permission is needed for your channel; Accessibility is used for mute detection and participant reading in supported apps. Screen Recording is optional: it sharpens the meeting title and serves as an audio-tap fallback, but detection itself does not depend on it.
You do not have to wait for an automatic meeting. The menu can start a manual recording, and ⌘P opens batch processing for existing audio or video. Record-only mode is useful when you want Meeting Transcriber to create dual-source recordings and metadata sidecars for another processing machine without running the local post-recording pipeline immediately.
Meeting detected
├─ app audio + microphone
├─ 16 kHz mono conversion
├─ WhisperKit / Parakeet
├─ speaker diarization
└─ Markdown protocol via Claude CLI / OpenAI-compatible / noneSettings are divided into the controls you actually need while using the app: General chooses watched applications and record-only behavior; Audio selects the microphone, VAD, silence indicator and optional echo cancellation; Transcribe chooses WhisperKit or Parakeet, model, language, vocabulary and terminology normalization; Speakers manages diarization and known voices; Output chooses the provider, protocol language, transcript retention, output folder and custom prompt.
~/Library/Application Support/MeetingTranscriber/protocols/
├─ 20260225_1400_meeting.txt # raw transcript, when enabled
└─ 20260225_1400_meeting.md # structured protocolThe Screenshots
The repository's hero animation presents the full idea in one pass: a meeting is captured, the waveform moves through local transcription and the result becomes a Markdown protocol. The menu bar icon is also a compact status display. Its animated waveform moves through Idle, Recording, Transcribing, Diarizing and Protocol, while a permission badge or record-only dot stays visible when a setting changes the meaning of the current state.
How It Works Under the Hood
The important architectural decision is the split between the two inputs. CATap captures application audio and the microphone is recorded separately, then both paths are converted to 16 kHz mono before they reach the speech engines. That makes the same pipeline work for live recordings and imported files, while preserving enough separation to reason about who said what.
WhisperKit is the broad-language option, with 99+ languages and a model around 1 GB. Parakeet TDT v3 is the smaller path at roughly 50 MB and is aimed at 25 European languages, with the README describing it as around ten times faster. FluidAudio then supplies CoreML/ANE diarization, including a standard mode and an overlap-aware Sortformer path for people speaking at the same time.
The Repository and Its Releases
The GitHub repository contains the Swift app, model and audio pipeline code, documentation for automation and Stream Deck control, and the release workflow. The project also exposes a local automation API in its Homebrew build, so a local script can submit an audio file and receive a diarized transcript without turning the menu bar app into a cloud service.
Release v0.8.1 is the current checked release. Its notes include the About settings tab, clearer unclean-exit and output-folder errors, improved Accessibility diagnostics, speaker-name field fixes and signing/TCC fixes. The repository documents unit tests, linting and analysis in CI, plus self-hosted Apple Silicon end-to-end jobs that run the real production models and a simulated meeting against the actual app.
What You Can Verify Before Installing
A cautious installation is straightforward: start from the v0.8.1 release page, verify the DMG against the published SHA256, confirm macOS 14.2 or newer, and make room for the selected model. Then decide whether your protocol provider is local or remote, and grant only the permissions required for the capture mode you intend to use. The app's Advanced settings expose permission health and diagnostics after installation.
Where It Falls Short
Local processing still has a first-run cost. WhisperKit's model is roughly 1 GB, Parakeet is smaller, and transcription plus diarization will use the Mac's CPU, GPU or Neural Engine while it works. The project targets macOS 14.2 and later; older Macs and older macOS versions do not have a supported app-audio path behind a hidden compatibility switch.
Automatic detection is deliberately conservative and permission-sensitive. A meeting app may have a title the detector cannot recognize, an Accessibility grant can become out of sync, and an imported recording can have a damaged or missing audio track. Echo bleed from speakers is handled and reported, with optional cancellation and transcript de-duplication, but no diarizer can turn a noisy room into perfect speaker attribution.
There is also an important privacy boundary in the phrase “local-first.” Recording, transcription and diarization can stay on the Mac, and the provider can be disabled. If you choose Claude Code CLI or a remote OpenAI-compatible endpoint for protocol generation, the transcript or prompt may leave the machine according to that provider's behavior. For a strict no-upload policy, use a local provider such as Ollama or LM Studio and review the output settings before a sensitive meeting.
The Licence: What You Can Do
Meeting Transcriber is MIT licensed. You may inspect, modify and reuse the app code, including in a commercial or closed-source application, as long as the copyright and licence notice travel with the substantial code you redistribute. There is no copyleft requirement to publish your changes.
That permission covers the repository's code, not automatically every model, dependency, service or recording. WhisperKit, FluidAudio, downloaded model files, Claude Code, an OpenAI-compatible provider and ffmpeg each have their own terms. Recording a meeting also requires an appropriate notice or consent under the rules that apply to the participants and the place where the meeting occurs.
Should You Install It
If you want meeting notes without handing every audio file to a SaaS recorder, Meeting Transcriber is a focused macOS option. Start with the signed GitHub Release DMG, use Parakeet when a small fast model fits your language, switch to WhisperKit for broader language coverage, and keep protocol generation local when privacy is the deciding constraint. It is a useful menu bar utility for people who want the complete capture-to-Markdown path to remain inspectable and configurable on their own Mac.
Project facts
- License
- MIT
- Platform
- macOS 14.2+; Apple Silicon recommended for local model performance
- Written in
- Swift 6.2, SwiftUI, CoreML/ANE
- Version reviewed
- v0.8.1 (2026-09-11)
- Repository
- github.com/pasrom/meeting-transcriber
Install
# Download the latest DMG:
open https://github.com/pasrom/meeting-transcriber/releases/latest
# Mount it and drag MeetingTranscriber.app to /Applications.License summary
The app code is MIT licensed. WhisperKit, FluidAudio, Claude Code, OpenAI-compatible providers, model packages and other third-party components retain their own terms.



