Voice dictation for macOS. Press fn, speak, press fn again — your words appear wherever your cursor is.
Runs entirely on your Mac after setup. No subscription, no cloud transcription, no audio leaving your machine.
- Press
fn— recording starts, a small floating bar appears - Speak for as long as you want (any language, mid-sentence switching is fine)
- Press
fnagain — Flowa transcribes and pastes the text into whatever app you were using
That's it.
- Local transcription — after first setup, speech runs on-device
- Any language — 99 languages supported. Switch languages mid-session; Flowa picks it up automatically
- Works everywhere — dictates into any app: notes, email, chat, code editors, browsers
- Menu bar icon — stays running in the background, always ready
- Recent history — last 100 dictations saved locally, copyable from the Home screen
- Launch at login — optional, toggled from the app
- macOS 14 or later
- Apple Silicon (M1 or later) recommended — runs on Intel but first-time preparation takes longer
- Internet once on first launch if you built from this repo (to fetch the ~1.5 GB speech engine)
The speech engine is not committed to git (it is ~1.5 GB). Anyone can still use the repo:
git clone https://github.com/maxkongerskov/Flowa.git
cd Flowa
open Flowa.xcodeproj- In Xcode, select your Team under Signing & Capabilities
- Build and run (⌘R)
- On first launch, grant Microphone, Input Monitoring, and Accessibility
- System Settings → Keyboard → set "Press 🌐 key to" → Do Nothing
- Flowa will download the speech engine once (~1.5 GB from the WhisperKit CoreML hub), then prepare it for your Mac (~10 minutes). Keep the app open.
After that, Flowa works offline.
If you want the engine inside the .app (no first-run download for end users):
- Place a complete copy at
Flowa/Models/openai_whisper-large-v3-v20240930_turbo/
(same layout as on Hugging Face) - Archive / notarize as usual — the model is copied into the app bundle
- First launch only specializes CoreML for that Mac (still ~10 minutes, offline)
scripts/notarize.sh verifies the bundled model is present before export.
- WhisperKit — Swift package (Xcode package manager)
- Speech engine weights from argmaxinc/whisperkit-coreml (
openai_whisper-large-v3-v20240930_turbo)
MIT — see LICENSE