I have created something for people that don't like to type-in so much or that have their hands full. And it's something that I use very much in my everyday workflow, and that I like to share with you today. It's open-source and MIT, and you can download it, set it up yourself, see what you can do with it, and let me know if you find it useful.
Gwen is a macOS menu bar app that pastes speech into the app where your cursor is. Hold a key, talk, and release it. Gwen also translates selected text, or speech, in place.
Macs already ship a usable local transcription and translation stack. whisper.cpp can run on 127.0.0.1, and macOS 15 and later includes Apple's on-device Translation framework. Gwen does not add another speech model. It adds the UI and hotkeys that make that stack usable in any app, without a Whisper Flow subscription or another paid dictation service.
Speech-to-text stays on the local whisper.cpp server. Punctuation uses local rules. Translation stays on the device. Gwen has no account, no cloud API, and no subscription.
Prerequisites
- A Mac
- macOS 15 or later, if you want translation
- Git
- The tools that
./bin/gwen setupinstalls. The published steps do not list exact versions.
Install and run
Clone the repo, then set up, build, and open the HUD:
git clone https://github.com/mblancodev/gwen
cd gwen
./bin/gwen setup
./bin/gwen build
./bin/gwen install
License: MIT. Source: https://github.com/mblancodev/gwen - View Gwen
Key bindings
| Key | Action |
|---|---|
| Hold ⌃ | Dictate, then paste when you release the key |
| ⌃⌃ or "Hey Gwen" | Start hands-free dictation |
| Tap ⌃⇧ | Translate the selected text in place |
| Hold ⌃, then tap ⇧ twice | Translate what you say |
Dictation works in any app that accepts pasted text.
"Hey Gwen", in your voice
The first time Gwen runs, she asks you to say "Hey Gwen" three times and remembers how the recognizer writes it when you say it. Accents turn a fixed wake word into "hey when" or "hey Glenn"; teaching it once fixes that. A small sound confirms the wake word landed, so you know when to start talking. You can retrain it, or switch it off, in Settings.
Other languages
- One Language setting decides what Gwen translates into. It is the same value in Settings, in the menu, and on the chip in the bar.
- When you dictate in a language other than English, the bar shows only the waveform while you talk and pastes the finished text at the end, instead of showing half-recognized words along the way.
How it is built
A Swift menu bar app owns the UI and hotkeys. A Python process owns the microphone, Whisper, and pasting.
Most of the code was written with AI coding agents. Three project rules kept that workable:
-
AGENTS.mdmaps each change to a file and a symbol to grep, so an agent does not have to rediscover the repo. -
gwen mock barplays a scripted dictation through the real UI without a microphone. Use it to check a UI change. - The rule "Nothing leaves the Mac by default" is written into the project, so a later change is less likely to add a cloud dependency.
Troubleshooting
The source post does not list error text. If a step fails, capture the command and the full terminal output before changing anything.
| Symptom | Likely cause | What to do |
|---|---|---|
| Paste does not appear | The front app does not accept paste, or the cursor is not in an editable field | Click an editable field, then dictate again |
| Translation does nothing | macOS is older than 15, or no text is selected | Check the macOS version. Select text before tapping ⌃⇧ |
| No speech is captured | Microphone permission is denied | Allow microphone access for Gwen in System Settings, then retry |
Top comments (0)