Skip to content

Repository files navigation

Natter

Natter

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


What Natter does

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.

Nothing you say leaves your Mac

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.

Dictation modes

  • 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.

Install Natter

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.

Teach it your words

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.

Verify a downloaded build

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.app

Each GitHub release also includes a SHA-256 checksum for its DMG.

shasum -a 256 ~/Downloads/Natter-*.dmg

Build it locally

make 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 benchmark

build-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.

Report bugs and request features

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.

License

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.

About

Fast, local-first dictation for macOS

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages