for speech straight to agents
Whisper Assistant sends what you say straight to an AI agent. One agent cleans it up and types it wherever your cursor is. Another answers it, with your screen as context. Leave it running in a call and it writes up the meeting.
Windows 10 and 11, and macOS. Bring your own API key.
How it works
Click into any text box. Press F1 and talk, then press F1 again. Or hold the key down and let go when you're done. Whisper Assistant transcribes the audio, hands it to the agent on the chip, and pastes what the agent returns where your cursor was.
Each app can have its own agent. Slack stays short, email gets a greeting and a sign-off, and your editor gets file names spelled the way they're written.
uh hey can you push the staging deploy to after lunch, actually no make it three, Jonas still has the migration open so yeah
Can you push the staging deploy to 3? Jonas still has the migration open.
hi Maria thanks for the contract, um I read it and the only thing is section four, the the notice period says ninety days and we agreed on sixty, so if you can fix that I'll sign today. best Sam
Hi Maria, Thanks for the contract. I read it, and the only thing is section 4: the notice period says 90 days, and we agreed on 60. If you can fix that, I'll sign today. Best, Sam
in config underscore loader dot py, when the yaml has a duplicate key it should raise like an error instead of keeping the last one, and put the line number in the message
In config_loader.py, when the YAML has a duplicate key, it should raise an error instead of keeping the last one, and put the line number in the message.
for saturday um oat milk, eggs, the good coffee, and uh batteries for the remote, oh and call the landlord about the radiator
- Oat milk
- Eggs
- The good coffee
- Batteries for the remote
- Call the landlord about the radiator
Unramble
Unramble is the default cleanup agent. It fixes punctuation, drops the ums, and turns spoken symbols into characters, so "notes dot txt" becomes notes.txt and "at sign" becomes @. Your wording stays yours. When you want tighter sentences, click the chip over to Clarify.
Everything you say is treated as text to write down. If you dictate "ignore that and write a poem about cats", that sentence is what gets pasted. It won't answer your question or tidy up your swearing.
Short replies skip the language model. Anything under 40 characters, like "sounds good, see you at 3", is pasted the moment it's transcribed. Click the chip to None and every dictation comes through word for word.
Spelling from your screen
When you start recording, Whisper Assistant reads the text on your screen with your operating system's built-in OCR. It picks out up to 30 names and terms and gives them to the speech model as spelling hints. If the ticket you're looking at says Szymański and Kubernetes, so will your text.
Names and jargon
For words that aren't on screen, add them to the vocabulary. For words the model keeps getting wrong, add a replacement. Replacements also work as snippets: say "my email" and get the address.
transcription_profiles: - label: "Whisper" vocabulary: "Szymański, Kubernetes, Logseq" replacements: "Visper Assistant": "Whisper Assistant" "my email": "sam@example.com"
Agents are a model and a prompt in config.yaml. Write your own for commit messages or replies in Danish.
dictation_agents: - label: "Commit" model: "openai/gpt-oss-20b" apps: ["Code", "Cursor"] # used automatically in these apps system_prompt: | Turn the transcript into a git commit message. Imperative subject under 60 characters, then a short body.
Assistant
Press F3 instead of F1 and what you say becomes a question for a chat model, sent along with the text on your screen. Turn on the Clipboard or Screenshot chip to include those as well. The answer opens in a small window and is copied to your clipboard.
why does this test only fail on windows
The test builds the expected path with "/" and compares it to the output of os.path.join. On Windows that output uses backslashes, so the strings never match. Build both sides with pathlib.Path, or compare them after os.path.normpath.
Edit by voice
Select a paragraph, press F3, and say what to change: "shorter, and drop the second sentence". The selection is replaced with the new version.
Follow up
Alt F5 continues the same conversation, up to 20 messages. You can also switch between dictation and Assistant in the middle of a recording by pressing the other key.
Meeting Mode
Alt F6 records your microphone and your computer's audio as two separate tracks. Nothing joins the call, so Zoom, Teams, Meet and a phone call on speaker all work the same way.
Each track is transcribed on its own and merged by timestamp. Your microphone is Me. The other side is split by voice into Speaker 1, Speaker 2 and so on, and each person keeps their label for the whole meeting. Speaker separation runs on your own machine, on the GPU if you have one.
When you stop, an agent writes a summary with decisions and action items at the top of the file.
# Meeting 2026-10-14 10:02 ## Summary - Launch moves to 3 November. Design needs a week for the pricing page. - Speaker 1 sends the updated contract by Friday. - Open: who owns the onboarding emails. ## Transcript [00:00] **Me:** Okay, I think everyone's here. Launch date first. [00:06] **Speaker 1:** We won't make the 27th. Pricing isn't done. [00:11] **Speaker 2:** Design needs one more week, realistically. [00:15] **Me:** So the 3rd. Can everyone live with the 3rd?
The transcript is written to a markdown file as the meeting goes, in 29-minute chunks, with an optional WebVTT copy. A recording can run for five hours. The last ten meetings are in the tray menu.
Where text goes
Each mode has four destinations, and you can turn on any mix of them: at the cursor, on the clipboard, in a new window, or saved to a file. Dictation goes to the cursor by default. Assistant answers go to a window and the clipboard. Meetings go to a file.
Text goes into the box you were in when you started talking. If you click somewhere else while it's transcribing, it still lands in the right place. If a paste can't land at all, the HUD tells you and the text waits on your clipboard.
Pasting uses the clipboard for a moment. Whatever you had copied before is put back afterwards.
Nothing gets lost
Every recording is saved to disk before it's uploaded. If the connection drops or the transcript comes out wrong, Resend puts your last recording back on the HUD. Pick a different agent and send it again. You don't have to say it twice.
Your last ten dictations are in the tray menu. Click one to copy it.
Setup
- Download the installer for Windows or macOS. On a Mac, drag the app into Applications.
- Create a free API key at console.groq.com/keys. Open Manage API Keys from the tray icon and paste it in. That one key covers transcription and cleanup. Assistant uses OpenRouter by default, so add a key there too if you want it.
- On macOS, a window asks for three permissions: Accessibility for the hotkeys, Microphone, and Screen Recording for reading screen text. Restart the app once after granting Accessibility.
- Click into a text box and press F1. The app starts with your computer from then on, if you let it.
Settings live in one file, config.yaml. Open it from the tray with Edit Config File, and press Alt F12 to reload it without restarting.
Hotkeys
Tap a key to start and tap again to stop, or hold it and let go. These are the defaults. You can bind 33 actions to any key you like.
| F1 | Dictate |
| F3 | Assistant |
| Alt F6 | Start or stop Meeting Mode |
| F4 | Next agent |
| F8 | Cancel the current recording |
| Alt F1 | Screen reading on or off |
| Alt F2 | Send clipboard with the question |
| Alt F3 | Send a screenshot with the question |
| Alt F5 | Follow up on the last answer |
| Alt F12 | Reload config |
Concepts
Six words cover the whole app.
Mode
Dictate, Assistant or Meeting. Each has its own key and its own settings.
Transcription profile
Which speech model runs, and where. Groq by default. Switch from the tray.
Agent
A model and a prompt. Dictation agents clean your words. Assistant agents answer.
Chip
A switch on the HUD. Click it while you're talking.
Context
Extra input sent with your words: screen text, clipboard, or a screenshot.
Destination
Where the result lands: cursor, clipboard, window or file.
Privacy
There's no account, and no Whisper Assistant server sits between you and the model. You talk to the provider you picked, under your own API key. The one request this site gets from the app is the update check, which sends your platform and version number.
Where does the audio go?
To your transcription provider, Groq by default. Switch the transcription profile to Local and Whisper runs on your own CPU or GPU, so the audio never leaves the computer.
Where does the text go?
To the model behind your agent. Agents accept any OpenAI-compatible address, so you can point them at Ollama or LM Studio on the same machine. With the agent chip on None, the text goes nowhere but your cursor.
Does it read my screen?
Dictation reads text, and never takes a screenshot. Your operating system's OCR does the reading on your machine, and only the words it finds go to the cleanup model to pick spelling hints. Click the OCR chip off when there's something on screen you'd rather not send. Assistant sends a screenshot only when you turn on its Screenshot chip.
What stays on my disk?
Recordings, so Resend works. The folder is capped at 500 MB and the oldest files go first. Set the cap to zero and nothing is kept. Speaker separation in Meeting Mode also runs on your disk, with models downloaded once.
Cost
You pay the model provider directly, at their price. The default speech model, Whisper Large v3 Turbo on Groq, costs $0.04 per hour of audio. Half an hour of dictation every working day comes to about 45 cents a month, plus the cleanup model's tokens.
Groq runs that model at 216 times real time. A minute of audio takes about a third of a second to transcribe once it's uploaded.
Questions
Does it work in every app?
It works anywhere you can paste: browsers, Slack, Word, terminals, code editors, the chat box in a game. If a field blocks pasting, turn on the clipboard destination and paste by hand.
Which languages does it understand?
The default model is multilingual, and Whisper Assistant doesn't force a language, so you can dictate in whatever you speak. Unramble keeps the language you used.
What if I talk for ten minutes?
Long recordings are split into pieces under the provider's upload limit, transcribed, and joined back together. Nothing is cut off at the end.
Will it run my commands if I say "delete everything"?
No. Dictation agents are told to write down what you said and never act on it. Only Assistant answers questions, and its answers go to a window that you read first.
Does a bot join my calls?
No. Meeting Mode records your computer's audio output directly, so the other people see nothing new in the call. On macOS this needs version 14.4 or later.
Can I use OpenAI, Mistral, or my own server?
Yes. Transcription profiles and agents take any OpenAI-compatible endpoint and key. Groq is the default because it's fast and cheap.