Hold a key. Speak. Release.
Voice-to-text for macOS and Linux — transcribed on-device and injected straight at your cursor, in any app.
- Hold your hotkey (Right Command on macOS, Right Control on Linux)
- Speak — the app records from your mic
- Release — transcription lands at your cursor
Works everywhere you type: browsers, editors, terminals, Slack, email.
Two apps, one product. macOS is Swift and SwiftUI with MLX for speech; Linux is Rust and GTK4 with whisper.cpp. They are not a cross-compile of each other — neither platform's UI toolkit or speech runtime exists on the other — but the dictation lifecycle, hotkey semantics, insertion strategies and settings model are the same, and every release ships both from one tag.
Both platforms are published on the same release.
- Download Whisper-Smart-mac.dmg
- Drag Whisper Smart into Applications
- Launch — it lives as a mic icon in your menu bar
- Grant Accessibility and Microphone permissions when prompted
Requires macOS 14 (Sonoma) or later. Updates arrive automatically through Sparkle.
# Prebuilt tarball (built on Arch, installs under ~/.local, no root)
tar xzf whisper-smart-X.Y.Z-linux-x86_64.tar.gz
./whisper-smart-X.Y.Z-linux-x86_64/install.sh
# Or from source, on any distro
git clone https://github.com/itisrmk/whisper-smart
cd whisper-smart/linux && bash packaging/install.sh
whisper-smart --check # reports anything still missing
systemctl --user enable --now whisper-smartNeeds a GTK 4 desktop and membership of the
inputgroup (sudo usermod -aG input "$USER"), which is how a global hotkey works at all under Wayland.whisper-smart --checkprints the exact command for anything missing. Full setup: linux/README.md.
Pick the engine that fits your workflow in Settings → Provider. Every local engine keeps audio on your machine; cloud is opt-in and never a silent fallback.
| macOS | Linux | |
|---|---|---|
| Default local | Whisper Large-v3 Turbo (MLX) | Whisper Large-v3 Turbo (whisper.cpp) |
| Fast local | Whisper Tiny/Base (MLX) | faster-whisper |
| Alternative local | Parakeet TDT 0.6B (MLX) | Parakeet TDT (ONNX) |
| Cloud | OpenAI Whisper API | OpenAI Whisper API |
| Zero-setup fallback | Apple Speech (built in) | — |
| GPU | Apple Silicon via MLX | NVIDIA via ggml-cuda |
On macOS an unready provider falls back to Apple Speech, so you are never stuck. Linux has no such system engine, so it says what is missing and how to fix it instead — and never silently sends your audio to the cloud.
- Press-and-hold or one-shot — hold the hotkey while speaking, or start dictation from the menu for toggle mode
- Left/right key aware — bind the right-hand modifier without the left one triggering it
- Configurable hotkey — pick a preset or record any modifier combo in Settings
- Terminal-friendly — paste handling tuned for Terminal.app, iTerm2, Kitty, Warp, Ghostty, Alacritty, foot
- Smart silence detection — no speech means instant return to idle, no waiting
- Writing styles — neutral, formal, concise, casual, or developer mode with per-app overrides
- History — recent transcripts, re-insertable with one click
- Privacy-first — local providers keep audio on your machine; cloud is opt-in
Open Settings → Hotkey to pick a preset or record a custom combo. Each physical key is tracked independently, so Right Command and Left Command are different bindings.
| macOS | Linux | |
|---|---|---|
| Default | Right Command hold | Right Control hold |
| Mechanism | CGEvent tap (Accessibility permission) |
/dev/input via evdev (input group) |
| Insertion | Accessibility AXValue, then ⌘V paste |
wtype, then clipboard paste |
# macOS
swift build && .build/debug/Whisper\ Smart
bash scripts/run_qa_smoke.sh
# Linux
cd linux
cargo build --release && ./target/release/whisper-smart --check
bash scripts/run_qa_smoke.shArchitecture, and the file-by-file mapping between the two ports, is in CLAUDE.md, docs/ARCHITECTURE.md and linux/README.md.
One tag, both platforms. Every vX.Y.Z carries the macOS DMG, the Sparkle
appcast, the Linux tarball and its checksum, built from the same commit — the
tag is only created once both builds pass. See
docs/RELEASE.md.
See LICENSE for details.
