Push-to-talk dictation is a short loop: record from the microphone, run a Whisper model on the device, paste the text where the cursor is. A Mac menu bar app that does this, plus a cleanup pass through a language model, is an afternoon for an agent, and the open-source field (Handy, VoiceInk, FluidVoice) shows that it works. Plan an hour for macOS permissions: Accessibility and Microphone grants follow the app's code signature, so a rebuilt app can lose them. The phone and Windows apps, Superwhisper's cloud models and its screen-aware Super mode are not part of the copy.
Before you buildSuperwhisper Free already gives unlimited local Whisper dictation, and Handy is a free open-source option. Build only if you want your own modes or code.
Build me a Mac dictation app to replace Superwhisper. Requirements: - A macOS 14+ menu bar app in Swift 6 and SwiftUI, built with Swift Package Manager; `make app` produces Dictate.app in ./build/ and signs it ad hoc with the fixed bundle id com.local.dictate. - Hotkey: hold to talk with the `KeyboardShortcuts` package (default Right Option, rebindable in settings). Recording starts on key down and stops on key up; Esc cancels. A small floating pill shows "recording" and "transcribing". - Audio: AVAudioEngine at 16 kHz mono, kept in memory. Nothing is written to disk unless KEEP_AUDIO is switched on in settings, then to ~/Dictate/audio/ with the date in the name. - Transcription: the `WhisperKit` package with a model picker (base, small, large-v3-turbo) that downloads on first use into ~/Library/Application Support/Dictate/models. Language set to auto or a fixed code from settings. - Cleanup, off by default: send the raw text to an OpenAI-compatible endpoint (LLM_BASE_URL, LLM_MODEL, LLM_API_KEY in ~/.config/dictate/.env; local Ollama works) with the prompt of the active mode: Plain (no change), Message (short, casual), Email (greeting and sign-off) or Notes (bullets). A mode can be bound to an app by bundle id. - Insert: put the text on NSPasteboard, send Cmd+V with CGEvent, then restore the previous clipboard after 300 ms. Without Accessibility permission, leave the text on the clipboard and show a notice. - Vocabulary: ~/Dictate/vocabulary.txt (names and terms, one per line) goes to Whisper as the initial prompt, and ~/Dictate/replacements.txt holds "heard => written" pairs applied afterwards. - History: the last 200 results in ~/Dictate/history.json, listed in the menu to copy a past one. - No accounts, no telemetry, local-first. Network only for the model download and the optional LLM endpoint. - Out of scope: Windows, iOS, Android, meeting recording, speaker labels, reading the screen. - README: granting Microphone and Accessibility in System Settings, why a rebuild with a different signature loses Accessibility (remove and re-add the app), and a 30-second test.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Superwhisper.
Add live transcription to the dictation app in this folder. Requirements: - While the hotkey is held, run WhisperKit on the audio so far every second and show the running text in the floating pill. - On release, run one final pass over the whole recording and paste only that result. - If a live pass takes longer than the interval, skip the next one instead of queueing. - Add a settings switch to turn live text off on slower Macs. - Update the README.
Add voice commands to the dictation app in this folder. Requirements: - After transcription, translate these phrases at the end or middle of a sentence: "new line", "new paragraph", "period", "comma", "question mark", "scratch that" (delete the last dictation by selecting it with Shift+Left and pressing Delete). - A commands.txt in ~/Dictate/ lets me add my own "heard => text" pairs. - Commands only apply in the Plain mode unless a mode turns them on. - Unit-test at least 15 sentences; update the README.
Add translation to the dictation app in this folder. Requirements: - A second hotkey (default Right Option + Right Command) records as usual, then asks the configured LLM endpoint to translate the transcript into TARGET_LANGUAGE from settings. - Paste only the translation; keep both texts in the history list. - If no LLM endpoint is configured, show a notice instead of failing silently. - Update the README.
Add file transcription to the dictation app in this folder. Requirements: - Dropping an audio or video file on the menu bar icon, or a menu item "Transcribe file", extracts the audio with `ffmpeg` (check it exists at start-up) and runs WhisperKit. - Write ~/Dictate/transcripts/<file name>.md with timestamps every 30 seconds. - Show progress in the menu and a notification when done; run one file at a time. - Update the README with the ffmpeg install step.
People pay for the finish: modes that follow the app in front, context from the screen, dictation on every device and a team that adds new speech models as they appear. The free plan already runs local Whisper without a cap, so Pro buys the AI layer and the extra devices. Threads we read show a lifetime owner moving to the free FluidVoice and others staying for the mode system.
Estimate · Local transcription costs nothing. Cleanup through a hosted model is a fraction of a cent per dictation, or free with a local model. The build is token usage on your agent plan.
Checked 2026-10-14 against Superwhisper's docs: 1, 2, 3, 4, 5
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Local Whisper models without a cap, vocabulary, text replacements, two modes with no AI processing. Nothing dictated leaves the device. |
| Pro | $8.49 | $7.08 | Cloud models, the Parakeet and Cohere Transcribe local models, file transcription, unlimited modes, AI modes, context awareness, speaker separation, system audio recording, your own AI API keys. One licence covers unlimited Macs and Windows PCs plus an iPhone and an Android phone. |
| Pro Lifetime | custom | — | Same Pro features for a single payment. |
| Enterprise | custom | — | SOC 2 Type II, central billing and sign-in, model access control, enterprise-hosted models, volume discounts. |
Free covers unlimited dictation with local Whisper models, custom vocabulary, text replacements and up to two modes without AI processing.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $8.49 a month on the Pro plan, $101.88 a year (checked 2026-10-14).
The iPhone, Android and Windows apps that share one licence; Cloud models and the extra on-device models such as Parakeet; Super mode, which uses what is on screen to pick the style; Meeting recording, file transcription and speaker separation; Modes that switch on their own for each app, tuned and maintained for you. If any of those matter to you, keep paying.
Yes: Handy (open source), VoiceInk (open source), OpenWhispr (open source).