Overview
FreeFlow is a free Mac dictation app inspired by Wispr Flow, Superwhisper, and Monologue. It gives you fast AI transcription, context-aware cleanup, and voice-driven text editing without a monthly subscription.
Quick Start
- Download the app from above or click here
- Get a free Groq API key from groq.com
- Hold
Fn to talk, or tap Command-Fn to start and stop dictation, and have whatever you say pasted into the current text field
Features
- Custom shortcuts: Customize both hold-to-talk and toggle dictation shortcuts. If your toggle shortcut extends your hold shortcut, you can start in hold mode and press the extra modifier keys to latch into tap mode without stopping the recording.
- Context-aware cleanup: FreeFlow can read nearby app context so names, terms, and phrases are spelled correctly when you dictate into email, terminals, docs, and other apps.
- Original-field insertion (opt in): Enable Insert into the original field in Settings → General → Text insertion to keep dictation tied to its starting field when switching windows. This is off by default and applies to new dictations; otherwise dictation pastes into the currently focused field. Changed or unavailable fields and unconfirmed writes leave the transcript available through Paste Again rather than risking a misplaced or duplicate paste. Paste fallback, or Enter when an editor loses background focus, may briefly activate the original app before restoring your previous focus.
- Custom vocabulary: Add names, jargon, and project-specific words that FreeFlow should preserve during cleanup.
- OpenAI-compatible providers: Use Groq by default, or configure a custom model and API URL in settings.
Edit Mode
Edit Mode lets you highlight existing text and transform it with a spoken instruction, like "make this shorter" or "turn this into bullets." Enable it in settings, then use your normal dictation shortcut on selected text, or choose Manual mode to require an extra modifier key.
Privacy
There is no FreeFlow server, so FreeFlow does not store or retain your data. The only information that leaves your computer are API calls to your configured transcription and LLM provider.
Custom Cleanup
If you'd rather keep cleanup more literal and less context-aware, you can paste this simpler prompt into the custom system prompt setting:
Using a Local Model
FreeFlow can use OpenAI-compatible local or self-hosted providers instead of Groq. In settings, configure the API base URL and model IDs for your local LLM provider, such as Ollama, LM Studio, or another OpenAI-compatible server. If your transcription backend uses a different endpoint from your LLM backend, set the transcription API URL separately.
Local models are often slower than hosted providers, especially on cold start, long recordings, or busy hardware.
FreeFlow keeps the default network timeout at 20 seconds, but you can extend it with macOS defaults. One exception applies only to Groq's own endpoint (https://api.groq.com/openai/v1): cleanup of a new dictation waits at most 2.5 seconds. If cleanup misses that, FreeFlow pastes your transcript with local formatting and the Run Log shows "Cleanup timed out, using raw transcript". Any other API base URL, including local models, keeps 20 seconds, and so do Edit Mode, dictations with an Output Language, and Run Log retries.
defaults write com.zachlatta.freeflow transcription_timeout_seconds -float 120
defaults write com.zachlatta.freeflow post_processing_timeout_seconds -float 120
defaults write com.zachlatta.freeflow context_request_timeout_seconds -float 120
The timeout keys are:
transcription_timeout_seconds: audio transcription requests
post_processing_timeout_seconds: transcript cleanup and edit mode requests; a positive value also replaces the 2.5-second Groq dictation cleanup budget
context_request_timeout_seconds: nearby app context requests
Only positive values are used. Remove a custom timeout to return to the defaults:
defaults delete com.zachlatta.freeflow transcription_timeout_seconds
defaults delete com.zachlatta.freeflow post_processing_timeout_seconds
defaults delete com.zachlatta.freeflow context_request_timeout_seconds
Contributing
See CONTRIBUTING.md for how to set up the project, build, test, and submit changes.
License
Licensed under the MIT license.