Foil

Dictate into your Mac apps.

Hold a key, speak naturally, release, and Foil pastes the transcript where your cursor already is. Use a local whisper.cpp server, Groq or OpenAI hosted transcription, or your own OpenAI-compatible endpoint.

Beta for macOS 14+ ยท Apple Silicon and Intel

Hold-to-talkCapture thoughts without leaving your current app.

Release-to-pasteTranscribe, then deliver text back to the cursor.

Local or cloudChoose localhost, Groq, OpenAI, or custom endpoints.

History recoveryCopy, paste, retry, edit, or export past transcripts.

How Foil works

Foil keeps dictation close to the app you are already using, then leaves recovery paths nearby when macOS automation needs help.

Use the hotkey as the boundary: press to start, release when the thought is finished, and let Foil handle transcription and delivery with less context switching.

Explore the feature set
  1. 01

    Hold a key

    Start capture from the app in front of you, with hold-to-record or toggle recording modes.

  2. 02

    Choose the transcription route

    Start with a local whisper.cpp server on localhost, use Groq or OpenAI, or point Foil at a custom OpenAI-compatible endpoint.

  3. 03

    Clean up when useful

    Optional cleanup modes can rewrite the transcript, while the raw text remains available if cleanup fails.

  4. 04

    Paste or recover

    Foil delivers text back to the active workflow and keeps History plus clipboard fallback available when a target app blocks automation.

Feature details for daily dictation

Foil exposes the parts that affect speed, privacy, and recovery so you can choose the setup that fits your Mac workflow.

Local-first transcription

Start on localhost

Use a local whisper.cpp server before reaching for hosted transcription, or point Foil at another OpenAI-compatible server you already run.

  • Local whisper.cpp does not require a Groq or OpenAI key.
  • Settings includes setup commands plus a connection test.
  • Custom endpoints can use your own base URL, model, and optional API key.

Capture controls

Record only when you mean it

Foil is microphone-first and hotkey-driven, with controls that suit both quick notes and longer thoughts.

  • Hold-to-record and toggle recording modes.
  • Right Command, Right Option, Globe/Fn, and custom key choices.
  • M4A, WAV, and FLAC recording formats, with language hints for Whisper.

Cleanup routing

Polish text without hiding the raw transcript

Cleanup is optional and explicit. If Whisper succeeds but cleanup fails, Foil keeps using the raw transcript instead of losing the result.

  • Raw transcription is the default for local, OpenAI Whisper, and custom transcription routes.
  • Cleanup can use Groq chat models or a custom OpenAI-compatible chat endpoint.
  • Transcript text only goes to the cleanup provider you select.

Paste recovery

Keep the result reachable

macOS paste automation depends on Accessibility permission and target-app behavior, so Foil keeps fallback paths close.

  • Auto-paste sends text to the active app by default.
  • Clipboard restoration is the default, with an option to keep final text on the clipboard.
  • History lets you search, copy, paste, edit, export, delete, and retry past transcriptions.

The menu bar workflow, shown for real

Verified Foil app states captured from deterministic UI tests, not invented marketing UI.

Foil menu control center showing ready status, record controls, setup readiness, and last result
Ready state with recording controls, setup status, and last-result recovery.
Foil Transcription settings with provider configuration and cleanup options
Transcription settings make local, cloud, and custom endpoint choices explicit.
Foil onboarding setup window with API key and permission steps
First-run setup walks through provider credentials and macOS permissions.
Foil setup-needed menu state with recovery actions
Setup checks surface recovery actions before recording starts.

iPhone preview, honestly framed

Foil for iPhone is a closed internal beta that uses a custom keyboard, not a public iOS app yet.

Foil iOS closed beta setup screen showing record controls and keyboard setup checklist
Current Foil iOS setup surface, now smoked on a physical preview iPhone.

Closed beta preview

A keyboard-mediated dictation loop

The iPhone version records in the Foil app, prepares the latest transcript for Foil Keyboard, then inserts it from the keyboard with Insert latest. That architecture requires installing Foil Keyboard and enabling Allow Full Access.

Verified so far

  • Build 12 onboarding on a physical preview iPhone
  • Safari normal text field insertion on build 12
  • Safari secure-field rejection on build 12

Still caveated

  • Notes needs a blank sterile editor for build 12 rerun
  • Messages remains draft-only and needs a sterile compose surface
  • Mail compose is deferred
  • Keyboard cycling or field refocus may be needed

This is not broad iPhone app support or public App Store availability. Beta access should follow the verified host-app matrix and current TestFlight instructions.

Follow iOS preview work

Built for the app already in front of you

Foil keeps the loop short: capture speech, transcribe it, optionally clean it up, and recover the result when macOS or a target app gets picky.

โŒ˜

Capture

Hold your chosen key while speaking, or switch to toggle mode when a longer thought needs room.

  • Hold-to-record and toggle recording modes
  • Right Command, Right Option, Globe/Fn, and custom key choices
  • M4A, WAV, and FLAC recording formats
  • Language hints for better Whisper accuracy

Transcribe

Pick the transcription route that fits your speed, privacy, and infrastructure needs.

  • Local whisper.cpp through a localhost OpenAI-compatible server
  • Groq Whisper for fast hosted transcription
  • OpenAI Whisper with your OpenAI API key
  • Custom OpenAI-compatible transcription endpoints

Polish

Let Foil clean up dictated text when you want a little help, while preserving the raw transcript if cleanup fails.

  • Optional cleanup and rewrite modes
  • Groq or custom OpenAI-compatible cleanup providers
  • Raw transcript fallback after cleanup failures
  • Provider choices kept explicit in settings

Paste and recover

Foil posts the transcript back to your Mac workflow and keeps recovery paths nearby when the target app blocks automation.

  • Auto-paste into the active app by default
  • Clipboard restoration or final-text clipboard mode
  • Searchable transcription history
  • Copy, paste, edit, export, delete, and retry past results

Choose your provider

Start local, or choose the hosted path that fits your workflow.

Local whisper.cpp

Run an OpenAI-compatible local server on localhost.

  • No hosted transcription required
  • Uses localhost by default
  • Copyable setup commands
Read the local setup guide

Groq Whisper

Fast hosted transcription with a Groq API key.

  • Quick setup
  • Good fit for daily dictation
  • Optional Groq cleanup modes

OpenAI Whisper

Use OpenAI's Whisper endpoint with your OpenAI API key.

  • Uses the whisper-1 transcription model
  • Separate OpenAI key setup
  • Raw transcript by default

Custom OpenAI-compatible

Point Foil at the endpoint and model you already trust.

  • Bring your own endpoint
  • Optional API keys
  • Flexible model routing

Trust details stay visible

Foil is explicit about where text goes, what stays local, and where macOS automation can vary by app. Read the privacy page.

Keys and history

API keys are stored in macOS Keychain. Transcription history stays on this Mac, and retention can be limited or turned off.

Audio lifecycle

Successful audio files are deleted after transcription. Failed audio may be retained locally only for retryable failures.

Redacted diagnostics

Local diagnostics are redacted before writing and should not include API keys, transcript text, raw audio, or clipboard contents.

Paste reality

Accessibility permission and target-app behavior affect paste automation. History and clipboard fallback keep transcripts recoverable.

Questions before installing

Short answers to the setup, provider, and reliability questions that usually matter before trying Foil.

Can Foil run transcription locally?

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.

Do I need a Groq or OpenAI key?

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.

Where does cleanup text go?

Cleanup is optional. It can use Groq chat models or a custom OpenAI-compatible chat endpoint, and transcript text goes only to the cleanup provider you select.

What happens to history and audio?

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.

What if paste does not land in the target 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.

Notes on Mac dictation

Practical comparisons and troubleshooting guides for people choosing a voice-to-text workflow.

Comparison

Wispr Flow alternative for Mac

What to look for if you want local transcription, provider choice, and visible recovery paths.

Read the guide

Local dictation

Does Wispr Flow work offline?

How cloud dictation differs from local transcription, and when a local Mac route matters.

Read the guide

Troubleshooting

Wispr Flow not pasting text?

How to separate transcription failures from paste delivery problems in Mac dictation apps.

Read the guide

View all blog posts

Install Foil

Homebrew is the primary path for the public beta. The cask installs the signed, notarized macOS release.

Install with Homebrew

brew tap mean-weasel/foil https://github.com/mean-weasel/homebrew-foil
brew install --cask foil

Uses the public tap and installs Foil 1.13.4 from the signed macOS DMG published on GitHub.