Fast dictation for people who talk in code, commands, and half-finished thoughts.
Natter is a native macOS menu bar app that transcribes speech locally, cleans it up, and types into the app you were already using.
Download for macOS · Report a problem · Apache 2.0 licensed
Double-tap Right Option and start talking. Natter listens through a local speech model and shows the live transcript in a small overlay. Tap Right Option once to stop.
Raw mode shows the live transcript in the overlay, then types it after you stop. Agent mode also waits until you stop, fixes technical terms and sentence boundaries, then types the finished result. Press Tab while listening to switch mode without moving focus out of the text field. Double-tap Left Option to cancel a recording.
The app is designed for the awkward dictation that ordinary macOS speech tools tend to
mangle: GitHub, SwiftPM, --flags, file paths, version numbers, terminal commands, and names
from your own dictionary.
There is no account, cloud transcription, telemetry, Ollama dependency, Homebrew helper, or localhost service. Audio and transcripts stay on the Mac.
Natter downloads model weights only after you choose to install them. They live under Application Support and are never bundled into the app or this repository.
| Model | Used for | Download |
|---|---|---|
| FluidAudio Parakeet Unified 0.6B | Required live speech | 1.16 GB |
| Qwen 3.5 4B MLX 4-bit | Optional fast Agent cleanup | 3.03 GB |
| Qwen 3.5 9B MLX 4-bit | Optional Email and Article rewriting | 5.95 GB |
Raw and Clean do not need a writing model. Agent also has a deterministic fallback when its optional model is missing or rejects an unsafe edit.
- Raw types stable speech live with personal corrections.
- Agent keeps the live transcript in the overlay, applies conservative technical cleanup after stop, and types the result visibly.
- Clean removes explicit filler and repeated fragments without a writing model.
- Email turns the transcript into a direct email body after stop.
- Article restructures longer speech into readable prose after stop.
Every delivery path keeps the original transcript recoverable. If the destination loses focus, rejects keyboard events, or a model returns an unsafe rewrite, Natter stores a local recovery record and copies the complete intended transcript.
Download the latest DMG, drag Natter to Applications, and launch it. Natter supports Apple silicon Macs running macOS 15 or later.
The setup assistant walks through three macOS permissions:
- Microphone lets Natter hear the active recording.
- Accessibility lets it identify the text field that had focus.
- Input Monitoring lets the global dictation shortcut work outside Natter.
The app can open at login. You can change that from Settings at any time.
The dictionary stores preferred spellings locally. Writing rules are plain Markdown files under:
~/Library/Application Support/is.ian.natter/Rules/
You can also teach a correction by voice:
Hey Natter, you just transcribed it as port man but what I said was Portman, p-o-r-t-m-a-n. Add that to my rules.
The correction command is consumed instead of being typed into the destination.
Public builds are signed with Developer ID and notarized by Apple.
codesign --verify --deep --strict --verbose=2 /Applications/Natter.app
spctl --assess --type execute --verbose=4 /Applications/Natter.appEach GitHub release also includes a SHA-256 checksum for its DMG.
shasum -a 256 ~/Downloads/Natter-*.dmgmake check # Swift and product-corpus tests
make build # signed app in dist/Natter.app
make install # install to ~/Applications and enable Open at Login
make dmg # drag-install DMG
make parity # direct MLX writing benchmarkbuild-app.sh uses Xcode because MLX Metal shaders are not compiled by a plain SwiftPM
release build. The script copies every generated resource bundle and Sparkle framework into
the signed app before verification.
The main source areas are:
Sources/DictationCore/ pure models, rules, and pipeline logic
Sources/DictationApp/ AppKit lifecycle, services, and SwiftUI views
Sources/DictationParity/ direct MLX writing benchmark
Tests/ pure Swift regression tests
ProductCorpus/ local workflow test harness
scripts/ build, install, release, and benchmark commands
Read AGENTS.md before changing the app. It records the product contracts and build traps that are easy to reintroduce.
Open a GitHub issue with the macOS version, destination app, selected mode, and what happened to the transcript. Pull request creation is limited to maintainers so fixes can stay tied to the local safety and release checks.
Natter is licensed under Apache License 2.0. Model weights keep their original upstream licences and are downloaded separately after their terms are shown in the app. See THIRD_PARTY_NOTICES.md for the full attribution list.