Skip to content

rselbach/jabber

Repository files navigation

Jabber

A macOS menu bar app for local speech-to-text transcription using on-device ASR models.

All audio is processed entirely on-device — nothing leaves your Mac. (Optional transcript refinement via OpenRouter sends the transcript text to a cloud provider you choose; this is off by default.)

⚠️ Personal Project Notice

This code was written for my own use. It is not supported in any way. No issues, no PRs, no questions answered, no guarantees it works. You're welcome to use it, fork it, modify it, sell it, burn it, whatever. Just don't expect anything from me. Good luck.

Requirements

  • macOS 26.0+ (Tahoe)
  • Apple Silicon required

Installation

Download the latest DMG from Releases, open it, and drag Jabber to Applications.

Building from Source

swift build

For a release build with signing:

./scripts/release.sh --skip-notarize  # local testing
./scripts/release.sh                   # full signed + notarized DMG

Usage

  1. Launch Jabber — it lives in your menu bar
  2. Click the icon or use the global hotkey to start dictation
  3. Speak, and text appears wherever your cursor is

Model options are available in Jabber's main window (menu bar → Open Jabber, or Cmd-, while Jabber is active):

  • Parakeet TDT v2 (~443MB) — fast, accurate English transcription on the Neural Engine
  • Nemotron (~600MB) — NVIDIA Nemotron Speech Streaming, English-only with native punctuation & capitalization
  • Apple Speech — built-in macOS 26 speech recognition, recommended for non-English dictation

During onboarding, you'll pick a language and Jabber recommends the best model for it.

Permissions

Jabber requires two macOS permissions to provide the full experience:

  • Microphone: required to capture speech.
  • Accessibility: required for type-into-active-app mode.

On first launch or first use, macOS may ask for microphone permission and may open a system permission prompt for accessibility when you type into the active app.

If permission prompts do not appear:

  • Open System Settings > Privacy & Security
  • Enable Jabber for Microphone
  • Enable Jabber for Accessibility

Auto-Updates

Jabber uses Sparkle for auto-updates. On first launch (after the second run), it will check for updates automatically.

Setting up EdDSA keys (maintainers)

  1. Download Sparkle from releases
  2. Run ./bin/generate_keys to create a keypair (stored in Keychain)
  3. Export the private key: ./bin/generate_keys -x sparkle_private_key
  4. Add the private key as SPARKLE_EDDSA_PRIVATE_KEY secret in GitHub
  5. Add your public key to SUPublicEDKey in Info.plist

Appcast

The workflow generates appcast.xml as an artifact. Host it at: https://rselbach.github.io/jabber/appcast.xml

License

MIT — see LICENSE.

Acknowledgements

Jabber uses the following open-source models and libraries:

Models

Model Creator License Link
Parakeet TDT 0.6B v2 NVIDIA CC BY 4.0 huggingface.co/nvidia/parakeet-tdt-0.6b-v2
Nemotron Speech Streaming NVIDIA OpenMDW-1.1 huggingface.co/nvidia/nemotron-speech-streaming-en-0.6b
Apple Speech Apple Apple SLA Built-in macOS 26 Speech framework

Parakeet's CoreML conversion is maintained by FluidInference. Nemotron's CoreML conversion is by aufklarer.

Libraries

Library License Link
FluidAudio Apache 2.0 Parakeet ASR for Apple platforms
speech-swift Apache 2.0 ASR/TTS models for Apple Silicon
Sparkle MIT Software update framework
mediaremote-adapter MIT Media remote control

About

An open-source dictation tool for macOS

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages