- Swift 97.3%
- Shell 2.7%
| Assets | ||
| LocalFlow | ||
| Scripts | ||
| .gitignore | ||
| Package.resolved | ||
| Package.swift | ||
| prompt.md | ||
| README.md | ||
LocalFlow
LocalFlow is a native macOS 26+ menu-bar dictation utility. Audio transcription (WhisperKit) and text refinement (MLX) execute on-device after the one-time model downloads. Refined text is copied to the clipboard so you can paste it wherever you need it.
Models
LocalFlow downloads its models from Hugging Face the first time each stage runs:
| Stage | Model | Purpose |
|---|---|---|
| Transcription | argmaxinc/whisperkit-coreml — large-v3-v20240930_626MB |
Converts recorded speech to text with WhisperKit. |
| Refinement (default) | mlx-community/Llama-3.2-1B-Instruct-4bit |
Cleans up the transcript using the faster, smaller MLX model. |
| Refinement (optional) | mlx-community/Llama-3.2-3B-Instruct-4bit |
Cleans up the transcript using the larger, more accurate MLX model. |
You can select either refinement model in LocalFlow's settings. All inference remains on the Mac after the model files have been downloaded.
Open and run
Open Package.swift in Xcode 26 or later, let Swift Package Manager resolve its dependencies, select LocalFlow, and Run. The first dictation downloads the Whisper model; the first refinement downloads the selected MLX model. macOS will request microphone access when needed.
For normal use, build and launch LocalFlow as a macOS application bundle instead of using swift run:
./Scripts/build-app.sh
open .build/apps/release/LocalFlow.app
The application appears as LocalFlow in the menu bar. Its Audio settings list all Core Audio input devices and remember the selected microphone. The Shortcut settings let you record a custom key combination for starting and ending dictation; the default is ⌘⌥R. To install it, copy LocalFlow.app to /Applications. Set CODE_SIGN_IDENTITY when invoking the build script if you have an Apple Development or Developer ID certificate; otherwise the script applies an ad-hoc signature suitable for local testing.
Each completed dictation is appended as a JSON record containing its timestamp, raw transcript, and refined text to ~/Library/Logs/LocalFlow/localflow.log.
The project targets Swift 6 with actor-isolated speech and LLM services. Its only runtime dependencies are the requested Apple-Silicon-local WhisperKit and MLX packages.