Snoopreme noun — a cheeky meeting transcription tool.

It listens to the whole room. It tells nobody.

A macOS menu-bar app that captures your microphone and the audio of other apps at the same time, transcribes it on-device, and saves the result as plain Markdown in a folder you pick. No servers, no telemetry, no account.

macOS 26 (Tahoe) · Apple Silicon · MIT · source only

Two ears, one file

Your mic and their audio, captured separately on purpose.

Apple's on-device speech has no per-speaker diarization. So Snoopreme splits the recording at the source instead: everything from your microphone is labelled Me, everything coming out of other apps — Zoom, Meet in a browser, anything — is labelled Them. Two capture paths, two transcriber streams, one transcript.

Me

Your microphone

Captured with AVAudioEngine, converted to the format the speech model wants, streamed straight into its own transcriber.

AVAudioEngine → SpeechTranscriber

on-device

Them

Every other app

Captured with ScreenCaptureKit — no virtual audio device to install, no BlackHole, no rerouting your output.

ScreenCaptureKit → SpeechTranscriber

{folder}/2026-08-26-Weekly Sync.md Named from the meeting that's active in your calendar, or the one starting next. Editable before you hit record.

The output

A file, not a platform.

Stop & Save writes one Markdown file. That's the whole storage layer. It opens in any editor, on any OS, long after you've moved on from this app — or from this Mac.

2026-08-26-Weekly Sync.md markdown
# Weekly Sync

- **Date:** 2026-08-26
- **Meeting:** Weekly Sync · 3 attendees
- **Recorded:** 10:03

---

**Them** `00:03` Can everyone see my screen?

**Me** `00:09` Yep, all yours. Start with the
release date?

**Them** `00:17` Two weeks out. Audio capture
is the last blocker.

**Me** `00:26` I'll take that one. Notes land
in the vault when we're done.

Drops straight into Obsidian

Point the output folder at a folder inside your vault and every transcript shows up as a note — searchable, linkable, backlinked alongside everything else you know. No plugin, no import step.

Summarize it with whatever you already use

Because it's just Markdown, you pick the model: an Obsidian AI plugin, a local LLM, Claude, ChatGPT, a shell script. Snoopreme deliberately bakes in no AI service, so you're never tied to one provider or sending a meeting somewhere you didn't choose.

Named the way you'd name it

YYYY-MM-DD-{name}.md, where the name comes from the calendar event's attendees, falling back to its title. Same folder every time, remembered between runs.

Four clicks, start to file

What a recording actually looks like.

STEP 01

Click the menu bar

The popover shows your permission checklist and the meeting it found. Hit Start Transcription.

STEP 02

Confirm the name

Prefilled from your calendar. Change it, pick the output folder, choose a language if it isn't the system one.

STEP 03

Watch it come in

Live transcript in the popover, colour-coded by source, with a running clock. Volatile text settles as it's finalized.

STEP 04

Stop & Save

One Markdown file in your folder. Nothing left running, nothing uploaded, nothing to clean up.

Privacy

Built to keep your meetings yours.

  • On-deviceSpeech-to-text runs locally through Apple's SpeechAnalyzer. Audio and transcripts never leave your Mac.
  • Zero networkNo servers, no telemetry, no analytics, no account. There is nothing to sign into.
  • Your outputPlain Markdown, written only to the folder you chose. Delete the app and the transcripts stay.
  • CalendarRead-only, via EventKit, only the accounts already in Calendar.app. Nothing is ever written back.
  • No bundled AISummaries are between you and whichever tool you trust with them.

Auto-detect meetings

It notices the meeting. It still waits for you.

With the toggle on, Snoopreme polls your calendar every ~20 seconds and steps in at the two moments that matter — without ever starting a recording on its own.

  • at startThe prompt opens, prefilled. It does not record until you press Start. Untouched for 5 minutes, it closes itself.
  • at endIf you're recording, it asks whether to keep going. Continue is the default; untouched for 5 minutes, it continues.
  • toggle offSilence. Manual Start Transcription always works.

Build & install

There are no downloads. Build it yourself.

  • macOS 26 (Tahoe) or laterSpeechAnalyzer doesn't exist before it.
  • Apple Silicon — the project builds arm64.
  • Xcode 26 — the macOS 26 SDK. Xcode 16 cannot compile the speech APIs.
  • Homebrew, for xcodegen.

Four permissions on first run: microphone, speech recognition, and calendar prompt in-app. Screen Recording — which is how ScreenCaptureKit hears other apps — has to be enabled in System Settings, then the app relaunched.

zsh — snoopreme
# get the code
git clone https://github.com/bearonahill/snoopreme.git
cd snoopreme

# point at Xcode 26, then confirm the SDK
sudo xcode-select -s /Applications/Xcode-26.app
xcrun --show-sdk-version            # must report 26.x

# build → sign → install to /Applications
brew install xcodegen
scripts/make-signing-cert.sh
scripts/install.sh
open /Applications/Snoopreme.app