● REC · macOS 14.2+ · Apple Silicon

Your meetings never
leave your Mac.

Hit record. MeetingNotes captures any app's audio, then transcribes, diarizes, summarizes, and extracts action items — every step on your machine. No cloud, no uploads, no API keys.

100% on-device inference whisper.cpp · pyannote · your LLM MIT licensed
RECORDING SRC · zoom.us 00:12:41
▸ Resolved — Summary & action items

Overview. Q3 roadmap sync — the team locked the migration window and split ownership of the launch checklist.

Ship the v2 API by FridayDAN · JUL 3
Write the migration guidePRIYA · WED
01 — The thesis

Four local services. Nothing on the wire.

The app is an orchestrator. It spawns each engine on demand, runs it against your audio, and shuts it down when idle to keep memory free. Ports are loopback; the network is never touched at inference time.

CoreAudio Tap

Capture

A codesigned Swift helper taps any app's audio + your mic into a mixed M4A.

:8080

whisper.cpp

Metal-accelerated speech-to-text with a hallucination filter on the output.

:8765

pyannote

Speaker diarization in a Python sidecar — who spoke when, aligned to the transcript.

:1234 / :11434

Your LLM

Any chat model in LM Studio or Ollama writes the summary and pulls action items.

◈ Boundary Audio, transcripts, and summaries stay in ~/Documents/MeetingNotes. The Hugging Face token is needed once — for the model download — then never again.
02 — Signal chain

From waveform to action items.

Transcribe and diarize run in parallel off one 16 kHz decode; the rest is sequential. Midway, the pipeline pauses so you can name unknown voices — then bakes real names into the transcript before the LLM ever sees it.

01 · PARALLEL

Transcribe

whisper.cpp over the mixed audio.

:8080

Diarize

pyannote speaker turns.

:8765
02

Merge + Identify

Stitch turns to text; match voice embeddings against your roster.

roster
03 · GATE

Name voices

Pause for unknown speakers. Play an 8-second sample, label, continue — or skip.

awaiting
04

Summarize + Extract

Your LLM writes the structured notes and pulls action items with provenance.

:1234
DONE

Notes on disk

transcript.md · summary.md · action-items.json

✓ saved
03 — In the app

Built for the whole meeting lifecycle.

Trigger anywhere

Auto-detect meetings in browsers and native apps, or fire a URL scheme from a Shortcut, Stream Deck, or calendar hook.

meetingnotes://record?source=zoom.us

Speaker memory

Name a voice once; it's recognized across every future meeting by its embedding. Confirm, skip, or correct anytime.

voice → roster → real names

Editable summaries

Preview / split / edit modes. Fix a hallucination or redact in place — changes write straight to summary.md.

overview · decisions · action items

Action-item provenance

Click any action item to jump to the exact summary line it came from. Edit the summary, hit re-extract, done in seconds.

click → source bullet

Weekly rollup

A Mon–Sun narrative with cross-meeting themes, decisions, and your open action items — cached so re-opening is instant.

themes · owners · export .md

Export & search

Push items to Apple Reminders, Google Tasks/Docs, or any webhook. ⌘K searches every title, summary, and transcript.

reminders · tasks · webhook
04 — Bring your own model

Reasoning models, handled.

Some local models "think" before they answer — and occasionally spiral, burning their whole budget without writing a word. MeetingNotes flags them, canary-tests your pick, strips the <think> blocks, and auto re-samples the rare spiral instead of failing your meeting.

🧠 badge in the pickerreasoning
health-check canary✓ passed
budget-spent-thinking↻ re-sampled
default · qwen3.5-9bfits VRAM
05 — Get running

Three commands.

Clone, install the two Homebrew binaries, and run setup. The app spawns everything else on demand — a five-step wizard walks you through permissions, models, and your token on first launch.

~/Projects/MeetingNotes — zsh
# clone and enter
git clone https://github.com/dbbaskette/MeetingNotes.git
cd MeetingNotes

# the two native dependencies
brew install whisper-cpp ffmpeg

# one interactive setup, then launch
./scripts/setup.sh
./scripts/start.sh
RequirementsmacOS 14.2+ · Apple Silicon · ~16 GB RAM · LM Studio or Ollama
First launchPermissions → Whisper model → HF token → LLM → STT. Every step skippable.
Then⏺ Record → ▶ Process → name voices → read your notes.