Core loop
Dictate without switching context.
Hold a key, speak, release. Foil transcribes, applies the right app policy, and puts the result where you were typing.
Open-source Mac dictation with local and self-hosted options.
macOS 14+ · Apple Silicon and Intel
Fast capture is the start. Foil also gives you routing, cleanup, recovery, and visibility.
Core loop
Hold a key, speak, release. Foil transcribes, applies the right app policy, and puts the result where you were typing.
Local whisper.cpp, Groq, OpenAI Whisper, or custom OpenAI-compatible transcription.
Raw text for some apps; prompts, corrections, and preferred terms for others.
Auto-paste, clipboard fallback, Paste Last, retry, copy, edit, export, and delete.
Local words, sessions, time saved, daily trends, and top apps without transcript analytics.
Visible recording, transcription, cleanup, and paste states while focus stays in your app.
Keychain keys, local history controls, redacted diagnostics, and explicit provider routes.
Audio and text cleanup are separate routes. Choose each deliberately.
Transcribe through a localhost OpenAI-compatible server.
Fast hosted transcription with your Groq API key.
Use OpenAI Whisper with your OpenAI API key.
Point Foil at your own compatible endpoint and model.
Unassigned apps stay raw by default. Cleanup is explicit, app-aware, and routed through the selected cleanup provider.
Short answers to the setup, provider, and reliability questions that usually matter before trying Foil.
Homebrew is the primary install path. Run brew tap mean-weasel/foil https://github.com/mean-weasel/homebrew-foil, then brew install --cask foil. The cask installs Foil 1.13.13 from the signed, notarized, Sparkle update-signed macOS DMG published on GitHub Releases.
Prefer a manual DMG? Use the latest GitHub Release, or view all releases. SHA-256: 33f682b4...51d2e79.
Yes. Start with a local whisper.cpp server on localhost, then select Local whisper.cpp in Transcription settings. Foil also supports custom OpenAI-compatible transcription endpoints.
Not for the local whisper.cpp route. Groq Whisper and OpenAI Whisper require their own API keys, and custom endpoints only need a key when your server requires one.
Cleanup is optional and group-based. It can use Groq, OpenAI, or a custom OpenAI-compatible chat endpoint, and transcript text goes only to the cleanup provider selected for the matching group.
Cleanup Groups let selected apps use different transcript behavior. The default group handles unassigned apps, while custom groups can use cleanup providers, prompts, vocabulary corrections, and preferred terms.
Transcription history stays on this Mac and can be limited or turned off. Successful audio files are deleted after transcription; failed audio may be retained locally only for retryable failures.
No. Insights is local usage metadata for words, sessions, trends, and top apps. It is separate from transcript text and can be deleted from the app.
Paste automation depends on Accessibility permission and target-app behavior. Foil keeps History and clipboard fallback paths available so you can recover the transcript.