Local-first voice transcription for macOS. Record, transcribe, organize — all on your machine. No cloud. No subscription. No telemetry.
WhisperNotes is a native macOS app that turns audio recordings into searchable, organized text using whisper.cpp. Built entirely with Swift and SwiftUI — no Electron, no web views, no external dependencies. Just a fast, lightweight Mac app that respects your privacy.
Most transcription tools send your audio to someone else's server. WhisperNotes doesn't. Everything — recording, transcription, storage — happens on your Mac. Your meetings, notes, and ideas stay yours.
- Truly private — Audio never leaves your machine. No accounts, no API keys, no data collection.
- Native performance — Pure SwiftUI app. Launches instantly, uses minimal resources, feels like it belongs on your Mac.
- Zero cost — Free and open source. No subscription, no usage limits, no "premium tier".
- Obsidian-ready — Auto-syncs transcriptions as Markdown files with YAML frontmatter. Point Obsidian at the folder and you're done.
One-click recording with live waveform visualization. Organize with custom folders, color-coded tags, favorites, and full-text search. Drag and drop transcriptions between folders.
Every transcription is automatically saved as a .md file with YAML frontmatter. Works as an Obsidian vault out of the box — just point Obsidian at your notes folder.
- 30 languages — Set a default or choose per-recording. Auto-detect works great for most cases.
- Keyboard-driven —
Cmd+Nrecord,Cmd+Shift+Nnew folder,Cmd+Ssave,Cmd+Fsearch,Cmd+Dfavorite - Edit in place — Modify titles and transcription text directly in the app with autosave
- Smart folders — All, Favorites, Recent (last 7 days), and Uncategorized — always up to date
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
cmake -B build
cmake --build build --config Release
# Download a model (large-v3-turbo recommended)
./models/download-ggml-model.sh large-v3-turbogit clone https://github.com/reidemeister94/whisper-notes.git
cd whisper-notes
./build.sh
# Optional: copy to Applications
cp -r WhisperNotes.app /Applications/First launch: Right-click the app > Open (to bypass Gatekeeper for unsigned apps).
Open Settings (Cmd+,) and point WhisperNotes to your whisper-cli binary and model file. Green indicators confirm the paths are valid.
| Setting | Description | Default |
|---|---|---|
| whisper-cli path | Path to the whisper-cli binary |
~/Documents/whisper.cpp/build/bin/whisper-cli |
| Model path | Path to the GGML model file | ~/Documents/whisper.cpp/models/ggml-large-v3-turbo.bin |
| Notes folder | Where Markdown files are saved | ~/Documents/Whisper Notes/ |
- macOS 14.0+ (Sonoma)
- Apple Silicon (M1/M2/M3/M4)
- Xcode 15+ (for building from source)
No external dependencies. The entire app is built on system frameworks: SwiftUI, AVFoundation, and SQLite3.
- Single state object — One
AppStateObservableObject manages everything - SQLite + WAL — Fast concurrent reads, reliable persistence, batch tag queries
- Markdown sync — Every save writes a
.mdwith YAML frontmatter (SQLite is source of truth) - Process-based transcription — whisper-cli runs as a subprocess with configurable timeout
See ARCHITECTURE.md for detailed diagrams.
| What | Where |
|---|---|
| Database | ~/Library/Application Support/WhisperNotes/whisper-notes.db |
| Audio | ~/Library/Application Support/WhisperNotes/ |
| Markdown | ~/Documents/Whisper Notes/ (configurable) |
swift build # Debug build
swift build -c release # Release build
swift test # Run all testsmake setup-dev-env # Install SwiftLint, SwiftFormat, pre-commit hooks
make lint # Run SwiftLint
make format # Run SwiftFormatSee CONTRIBUTING.md for code style and PR guidelines.
| Problem | Fix |
|---|---|
| "whisper-cli not found" | Check the path in Settings. Make sure whisper.cpp is built. |
| "Model not found" | Verify the model path in Settings. Re-download if corrupted. |
| Transcription timeout | Large files may exceed the 300s default. Check model file integrity. |
| No audio input | Grant microphone access in System Settings > Privacy & Security > Microphone. |
| App won't open | Right-click > Open on first launch to bypass Gatekeeper. |
Contributions are welcome. See CONTRIBUTING.md for setup instructions, commit conventions, and how to submit a PR.
MIT — see LICENSE.
- whisper.cpp by Georgi Gerganov
- OpenAI Whisper — the original speech recognition model


