the dictation button for developers
The key at the bottom-left of your Mac
finally does something.
Hold Fn. Say the thing. Release. Clean text lands at your cursor — in your terminal, your editor, your coding agent.
Transcribed and cleaned entirely on your Mac. No API key. No account. No cloud.
A ~16 MBdownload — not the 1.2 GB we used to ship (or the ~1 GB the bundle-a-model apps ship). The on-device models (Whisper + a cleanup LLM, ~1.1 GB) fetch once on first run, SHA-256-verified and resumable, then it's fully offline forever. GPLv3 — read every line before it reads you.
One command, no warnings. Install with Homebrew — no “damaged” dialog, no xattr, no Apple account:
$ brew install --cask todddickerson/funbutton/funbuttonNo Homebrew? A one-line curl installer and the manual .dmg are right below.
Self-corrections resolved. Fillers gone. “dash m” becomes -m. Code mode knows you meant a flag; prose mode exists for the humans you Slack. It also reads the window you're in, so your identifiers and jargon come out spelled right — and that context stays on your Mac, never logged.
works where you work
- Cursor
- VS Code
- Claude Code
- Terminal
- Slack
- any cursor
No integrations. No plugins. It types wherever your cursor blinks.
how it works
Four steps. All of them on your machine.
01
Hold Fn
Or Right Option. Push-to-talk, so there's no toggle left running while you think out loud.
02
Whisper transcribes
On your Mac, with an on-device model you grab once on first run. Zero key. Works on a plane after that.
03
A local LLM cleans it up
An on-device model kills the fillers, resolves your self-corrections, and reads what's on your screen — the focused window, the file, your selection — so identifiers like getUserById and brand names come out spelled the way your code already spells them. Pin the mode per app or force Terminal; swap the model any time.
04
It types
Pastes at your cursor and restores your clipboard. Feels like you typed it, minus the typing.
Want more horsepower? Point cleanup at your own Ollama, bring a Groq key, or use our paid cloud models. All optional. The default path never phones home.
the honest table
Where this sits, exactly.
Handy and VoiceInk are excellent open-source projects. Go star them. We exist because nobody wakes up thinking about terminals, commit messages, and coding agents.
| FunButton | Handy | VoiceInk | Wispr Flow | |
|---|---|---|---|---|
| Price | $0 · $149 lifetime | $0 | $25–49 lifetime | $12–15/mo, forever |
| License | GPLv3 | MIT | GPLv3 | closed |
| Download size | ~16 MB download | app + model | app + model | cloud |
| Works offline | after first-run models | yes | yes | no |
| AI cleanup on-device | on-device, default | optional | optional (cloud text) | cloud only |
| API key or account | never | never | never | account required |
| Dev-first defaults | the whole point | generic dictation | generic Power Mode | generic prose |
| Stack | Tauri + Rust | Tauri + Rust | Swift | closed |
Wispr Flow raised ~$334M and still can't work on a plane. We hold that against them slightly less than the subscription.
gplv3, built in public
A dictation app hears everything you say. Read its source.
The desktop app is GPLv3. Every commit is public, including the embarrassing ones. If we ever do something shady with your audio, you can catch us in the diff.
github.com/todddickerson/funbutton →install — pick one
$ brew install --cask todddickerson/funbutton/funbuttonNo “damaged” dialog, no xattr, no Apple account. Update anytime with brew upgrade --cask funbutton.
$ curl -fsSL https://funbutton.ai/install.sh | bashNo Homebrew? One line, same result — and you can read exactly what it does first at funbutton.ai/install.sh.
This build is unsigned, so macOS mislabels the download as “damaged” until you clear quarantine on both the .dmg and the app:
$ xattr -cr ~/Downloads/FunButton_0.1.8_aarch64.dmg
$ xattr -cr /Applications/FunButton.appBrew and the one-liner already do this for you — this step is only for the manual download. Real signing is on the way (Developer ID pending): see SIGNING.md.
Then: grant Microphone · Accessibility · Input Monitoring, pick your hotkey, hold it, talk. The on-device models (~1.1 GB) fetch once on first run.
Release notes in your inbox. Nothing else.
New builds, breaking changes, and the occasional apology. No drip campaign — we don't have a marketing team.
pricing
Pay once. Pay monthly. Or don't pay at all.
Free forever on the bundled local models, your own Groq key, or Ollama. Pro adds premium cleanup models and 50K words/mo included. Lifetime is one-time and never goes up after we hit the next ladder rung.
Free
- →Fully local: on-device Whisper + LLM
- →~16 MB download · models fetch on first run
- →Unlimited usage, or BYO Groq / Ollama
- →GPLv3 — open source desktop
Pro
most popularor $9/mo
- →50K premium cleanup words/mo (Haiku 4.5)
- →Sonnet, Opus, GPT-4.1 selectable
- →Metered overage with user-set cap
- →Auto top-up OFF by default
Lifetime
first 1,000 customers
- →Groq fast tier unlimited forever
- →Premium cleanup pay-as-you-go
- →Price climbs to $199 then $249
- →No recurring charges on the base
Premium models priced per 10K words: Haiku $0.40 · Sonnet $0.60 · Opus $0.99 · GPT-4.1 $0.50. Cap defaults to $0 (hard stop, fast-tier fallback). You can raise the cap up to $100/mo at any time.