A lightweight macOS menu bar app for voice-to-text dictation powered by Groq's Whisper API. Hold a hotkey, speak, release — your words are transcribed and pasted at your cursor instantly.
- Hold-to-dictate — Hold your hotkey to record, release to transcribe
- Instant paste — Transcribed text is automatically inserted at your cursor position
- Custom hotkeys — Use preset keys (Option, Control, Fn) or set any custom key combination
- Menu bar app — Lives in the menu bar, no dock icon clutter
- Fast transcription — Powered by Groq's Whisper Large V3 Turbo (free tier available)
- Sound feedback — Adjustable audio cues for recording start, stop, and completion
- Clipboard fallback — Works with or without Accessibility permission
- Zero dependencies — Pure Swift, no external packages
- macOS 13.0 or later
- Free Groq API key
Open Terminal and paste:
curl -fsSL https://raw.githubusercontent.com/joymadhu49/FlowDictation/main/scripts/install.sh | bashThis downloads, installs to Applications, and launches automatically. No Gatekeeper issues.
- Download
FlowDictation.dmgfrom Releases - Open the DMG, drag FlowDictation to Applications
- Go to Applications in Finder
- Right-click FlowDictation > click Open
- Click "Open" on the dialog that appears
- If still blocked: go to System Settings > Privacy & Security > scroll down > click "Open Anyway"
Why the extra steps? macOS blocks apps downloaded from the internet that aren't notarized by Apple. Right-click > Open bypasses this. Alternatively, run
xattr -cr /Applications/FlowDictation.appin Terminal.
brew tap joymadhu49/tap
brew install --cask flowdictationgit clone https://github.com/joymadhu49/FlowDictation.git
cd FlowDictation
bash scripts/build-app.sh
open build/FlowDictation.app- Launch the app — a microphone icon appears in the menu bar
- Set API key — Click the mic icon, paste your Groq API key in the field
- Grant permissions when prompted:
- Microphone — for audio recording
- Accessibility — for global hotkeys and auto-paste
- Place your cursor where you want text inserted
- Hold your configured hotkey (default: Right Option)
- Speak clearly
- Release the hotkey — text is transcribed and pasted
| Preset | Key |
|---|---|
| Option | Either Option key |
| Right Option | Right Option key only (default) |
| Control | Control key |
| Fn | Function key |
| Custom | Any key + modifier (e.g. ⌘⇧D) |
Set your hotkey in Settings > General > Hotkey.
FlowDictation/
├── Package.swift
├── Sources/FlowDictation/
│ ├── FlowDictationApp.swift # App entry point
│ ├── AppDelegate.swift # Menu bar setup
│ ├── Models/
│ │ └── DictationState.swift # State & hotkey models
│ ├── Services/
│ │ ├── AudioRecorder.swift # WAV recording (16kHz mono)
│ │ ├── GroqAPIClient.swift # Whisper API client
│ │ ├── GlobalHotkeyManager.swift # Global hotkey monitoring
│ │ ├── DictationManager.swift # Core orchestrator
│ │ ├── TextInserter.swift # Clipboard + paste simulation
│ │ └── SoundFeedback.swift # Audio feedback
│ ├── Views/
│ │ ├── MenuBarView.swift # Popover UI
│ │ └── SettingsView.swift # Settings window
│ └── Resources/
│ ├── Info.plist
│ ├── AppIcon.icns
│ └── FlowDictation.entitlements
└── scripts/
└── build-app.sh # Build .app bundle + DMG
- Audio is recorded as 16kHz mono WAV (optimized for Whisper)
- Sent to Groq's
whisper-large-v3-turbomodel via multipart upload - Transcribed text is placed on the clipboard
Cmd+Vis simulated via System Events to paste at the cursor- Original clipboard contents are restored after 1 second
MIT License — see LICENSE for details.