# wispa — full documentation for LLMs > wispa is an AI voice-to-text dictation app for macOS. Hold a shortcut, speak, and clean, finished text is typed into nearly any app with a standard text field. Transcription can run fully on-device with local models, so your voice and text can stay on your Mac. Free trial of up to 8,000 words (5,000 plus optional feedback), then a one-time €39 lifetime license. No account required. Press and hold a global hotkey (default Option+Space), dictate, and release: wispa transcribes your speech and can optionally clean it up with AI into finished text, then pastes it where you are typing. Speech-to-text can run locally with Whisper models (plus Parakeet on Apple Silicon) for privacy, or you can bring your own cloud API key (OpenAI or Groq). The optional AI clean-up step also uses your own key. A separate Command mode lets you speak an action instead of inserting text, and wispa carries it out. Try wispa free for up to 8,000 words (5,000 base, plus 3,000 once for optional feedback), then a one-time €39 lifetime license on up to 3 Macs. No account or sign-up required. It runs on macOS 13+ (Apple Silicon). The site is available in English (default) and localized in German, Spanish and French. This file inlines the full English text of wispa's pages for grounding; a shorter link index is at https://wispa.it/llms.txt. ## About wispa — questions and answers **Which Macs does wispa run on?** wispa runs on macOS 13 or newer, on Apple Silicon Macs (M1 and newer). On-device transcription runs right on your Mac, with no internet connection needed. **Does it really work offline?** Yes. With a local model, wispa transcribes entirely on your computer, with no internet connection needed. **Which apps does it work in?** Nearly any app with a standard text field: Mail, Slack, Notion, code editors, browsers and more. wispa inserts text wherever your cursor is. (Secure password fields are the main exception.) **Is my audio sent anywhere?** In local mode, never. If you pick a cloud provider, audio is sent there with your own API key. Entirely your choice. **Which languages can it transcribe?** Whisper is multilingual and handles dozens of languages, including English and German, automatically. **What does it cost?** wispa is a one-time €39 purchase, a lifetime license rather than a subscription. Try free for 5,000 words, or up to 8,000 if you complete optional feedback, then buy once. If you use a cloud provider, that provider bills its own usage to your key. **How do I install it?** Download the DMG and drag wispa to Applications. It's signed and notarized by Apple, so it opens with a double-click, no extra steps. **Does wispa learn my vocabulary?** Yes. When you fix a word after wispa pastes it, wispa remembers the term and gets it right next time. That learning runs fully on your Mac, with no cloud. You can also add names and replacements by hand in the vocabulary list, and turn learning off anytime. ## Mac Voice-to-Text Dictation for Apple Silicon AI voice dictation for your Mac. Hold a key, speak, and clean text lands in nearly any app. Built for Apple Silicon, on-device with Whisper. Free trial, no account. **Does wispa run on Intel Macs?** No. wispa is built for Apple Silicon (M1 and newer) on macOS 13 or later. **Does it work offline?** Yes. Choose a local Whisper or Parakeet model and everything is transcribed on your Mac, with no internet connection needed. **How is it different from Apple Dictation?** Apple Dictation transcribes literally. wispa drops the filler and formats the text for where it is going. And you choose the model: local Whisper and Parakeet, or cloud with your own key. **Which languages does it support?** Whisper is multilingual and handles dozens of languages, including English and German, automatically. **How do I install it?** Download the DMG and drag wispa to Applications. It's signed and notarized by Apple, so it opens with a double-click. **What does it cost?** wispa is a one-time €39 lifetime license, with a free trial of up to 8,000 words (5,000 plus optional feedback). Cloud providers bill their own usage to your key. Read online: https://wispa.it/mac/ ## wispa for Claude Code Claude Code runs long, then stops to ask. wispa opens a reply window where you work, so you answer by voice — straight back into the session. **What exactly does the Claude Code integration do?** It installs a Stop hook in your Claude Code settings. When Claude Code stops, finishing a turn or asking a question, wispa shows a reply window where you answer by voice or text, and sends your answer back into the session. **Do I have to edit config files by hand?** No. Flip the Claude Code switch in wispa's Integrations tab and it writes the hook for you; toggle it off to remove it cleanly. Start a new Claude Code session for the change to take effect. **Does it pop up on every single message?** By default wispa only opens when Claude Code's message reads like a question or a request for input — for example when it asks which approach to take, or pauses in plan mode. Routine progress updates stay silent. You can switch it to every turn if you prefer. **Does my answer go back into the same session?** Yes. Continuation mode returns your reply straight into the running session and works even when the terminal is in the background. You can also choose Paste, which types it into the terminal like a normal dictation. **Can I fix a mistake before it sends?** Always. The window opens with a text field, so you can speak or type, correct anything, and nothing is sent until you press Send or Enter. Esc dismisses it without answering. **Does this work with Codex, Antigravity, Cursor, OpenCode and Pi?** Yes. The same reply overlay supports Codex, Antigravity, Cursor, OpenCode and Pi too, each with its own page. This one covers Claude Code. Read online: https://wispa.it/claude-code/ ## wispa for Codex Codex pauses for approvals and questions. wispa opens a reply window where you work, so you answer by voice — straight back into the session. **What exactly does the Codex integration do?** It installs a Stop hook in your Codex config. When Codex stops, finishing a turn or asking a question, wispa shows a reply window where you answer by voice or text, and sends your answer back into the session. **Do I have to edit config files by hand?** No. Flip the Codex switch in wispa's Integrations tab and it writes the hook for you. Start a new Codex session and approve the hook once when prompted, and you're set. **Does it pop up on every single message?** By default wispa only opens when Codex asks for input — an approval, a clarification, or a decision — and stays quiet during ordinary progress. Prefer to see it on every turn? That's one switch in the Integrations tab. **Does my answer go back into the same session?** Yes. Continuation mode returns your reply straight into the running session and works even when the terminal is in the background. You can also choose Paste, which types it into the terminal like a normal dictation. **Can I fix a mistake before it sends?** Always. The window opens with a text field, so you can speak or type, correct anything, and nothing is sent until you press Send or Enter. Esc dismisses it without answering. **Does this work with Claude Code, Antigravity, Cursor, OpenCode and Pi?** Yes. The same reply overlay supports Claude Code, Antigravity, Cursor, OpenCode and Pi too, each with its own page. This one covers Codex. Read online: https://wispa.it/codex/ ## wispa for Antigravity Antigravity asks from the terminal; wispa answers over any app. A reply window opens where you work, you speak, and it lands back in the session. **What exactly does the Antigravity integration do?** It adds a hook to your Antigravity config. When Antigravity finishes a turn or asks a question, wispa shows a reply window where you answer by voice or text, and sends your answer back into the session. **Do I have to edit config files by hand?** No. Flip the Antigravity switch in wispa's Integrations tab and it writes the hook for you; toggle it off to remove it cleanly. Start a new Antigravity session for the change to take effect. **Does it pop up on every single message?** By default wispa only appears when Antigravity's message looks like a question or asks for input, and stays out of the way otherwise. If you'd rather it open on every turn, that's a single toggle. **Does my answer go back into the same session?** Yes. Continuation mode returns your reply straight into the running session and works even when the terminal is in the background. You can also choose Paste, which types it into the terminal like a normal dictation. **Can I fix a mistake before it sends?** Always. The window opens with a text field, so you can speak or type, correct anything, and nothing is sent until you press Send or Enter. Esc dismisses it without answering. **Does this work with Claude Code, Codex, Cursor, OpenCode and Pi?** Yes. The same reply overlay supports Claude Code, Codex, Cursor, OpenCode and Pi too, each with its own page. This one covers Antigravity. Read online: https://wispa.it/antigravity/ ## wispa for Cursor Cursor's agent ranges across your codebase, then stops on the calls that matter. wispa opens a reply window so you answer by voice. **What exactly does the Cursor integration do?** It installs a hook in your Cursor config. When the agent stops, finishing a turn or asking a question, wispa shows a reply window where you answer by voice or text, and sends your answer back into the session. **Do I have to edit config files by hand?** No. Flip the Cursor switch in wispa's Integrations tab and it writes the hook for you; toggle it off to remove it cleanly. Start a new Cursor session for the change to take effect. **Does it pop up on every single message?** By default wispa only opens when Cursor's message reads like a question or a request for input, and stays quiet during ordinary progress. Prefer it on every turn? That's a single toggle. **Does my answer go back into the same session?** Yes. Continuation mode returns your reply straight into the running session and works even when the terminal is in the background. You can also choose Paste, which types it in like a normal dictation. **Can I fix a mistake before it sends?** Always. The window opens with a text field, so you can speak or type, correct anything, and nothing is sent until you press Send or Enter. Esc dismisses it without answering. **Does this work with Claude Code, Codex, Antigravity, OpenCode and Pi?** Yes. The same reply overlay supports Claude Code, Codex, Antigravity, OpenCode and Pi too, each with its own page. This one covers Cursor. Read online: https://wispa.it/cursor/ ## wispa for OpenCode OpenCode runs long build loops in your terminal, then stops for a call. wispa opens a reply window where you work, so you answer by voice. **What exactly does the OpenCode integration do?** It installs a hook in your OpenCode config. When OpenCode stops, finishing a turn or asking a question, wispa shows a reply window where you answer by voice or text, and sends your answer back into the session. **Do I have to edit config files by hand?** No. Flip the OpenCode switch in wispa's Integrations tab and it writes the hook for you; toggle it off to remove it cleanly. Start a new OpenCode session for the change to take effect. **Does it pop up on every single message?** By default wispa only opens when OpenCode's message reads like a question or a request for input, and stays quiet during ordinary build output. Prefer it on every turn? That's a single toggle. **Does my answer go back into the same session?** Yes. Continuation mode returns your reply straight into the running session and works even when the terminal is in the background. You can also choose Paste, which types it into the terminal like a normal dictation. **Can I fix a mistake before it sends?** Always. The window opens with a text field, so you can speak or type, correct anything, and nothing is sent until you press Send or Enter. Esc dismisses it without answering. **Does this work with Claude Code, Codex, Antigravity, Cursor and Pi?** Yes. The same reply overlay supports Claude Code, Codex, Antigravity, Cursor and Pi too, each with its own page. This one covers OpenCode. Read online: https://wispa.it/opencode/ ## wispa for Pi Pi runs a lean agent loop in your terminal and checks in often. wispa opens a reply window where you work, so you answer by voice. **What exactly does the Pi integration do?** It installs a hook in your Pi config. When Pi stops, finishing a turn or asking a question, wispa shows a reply window where you answer by voice or text, and sends your answer back into the session. **Do I have to edit config files by hand?** No. Flip the Pi switch in wispa's Integrations tab and it writes the hook for you; toggle it off to remove it cleanly. Start a new Pi session for the change to take effect. **Does it pop up on every single message?** By default wispa only opens when Pi's message reads like a question or a request for input, and stays quiet during ordinary progress. Prefer it on every turn? That's a single toggle. **Does my answer go back into the same session?** Yes. Continuation mode returns your reply straight into the running session and works even when the terminal is in the background. You can also choose Paste, which types it into the terminal like a normal dictation. **Can I fix a mistake before it sends?** Always. The window opens with a text field, so you can speak or type, correct anything, and nothing is sent until you press Send or Enter. Esc dismisses it without answering. **Does this work with Claude Code, Codex, Antigravity, Cursor and OpenCode?** Yes. The same reply overlay supports Claude Code, Codex, Antigravity, Cursor and OpenCode too, each with its own page. This one covers Pi. Read online: https://wispa.it/pi/ ## Help articles ### How wispa works *Getting started — wispa is a push-to-talk voice keyboard for your Mac. Hold a key, speak, and your words are typed into whatever app you are using.* wispa turns speech into text. You hold a hotkey, talk, and the moment you finish your words are transcribed and inserted into the app in front of you, no copy and paste. It lives in your menu bar, so it is there in every app without opening a window. #### The dictation flow 1. **Hold the hotkey.** The default is `⌥Space`. A small pill appears to show wispa is listening. 2. **Speak normally.** A live waveform follows your voice. You can keep the key held down, or tap once to start and tap again to stop. 3. **wispa transcribes.** Your audio becomes text using the model your current mode is set to, either on your device or through a cloud provider you have added. 4. **The text is inserted.** wispa places the finished text at your cursor in nearly any app with a normal text field, then restores whatever was on your clipboard. > **Tip:** Prefer tapping to holding? A quick tap starts recording and a second tap stops it, so you never have to hold the key down for long dictations. See [Keyboard shortcuts](https://wispa.it/help/keyboard-shortcuts/). #### On your device or in the cloud Every transcription takes one of two paths. **Local models** run entirely on your computer, so your audio never leaves it. **Cloud models** send your audio to a provider you choose using your own API key, and are quick to set up. You pick per mode, and you can use both. See [Local vs cloud models](https://wispa.it/help/local-vs-cloud-models/). **FAQ** **Do I need an internet connection?** Not with a local model, everything runs on your device. You only need a connection if your mode uses a cloud provider for transcription or AI cleanup. **Which apps does it work in?** Nearly any app with a standard text field, because wispa inserts text the same way a paste does. If an app blocks that, wispa still leaves the text on your clipboard. **Does wispa need an account?** No. There is no account and no sign-up, and nothing about your usage is sent to us. Try the full app free for up to 8,000 words (5,000 plus optional feedback). Read online: https://wispa.it/help/how-wispa-works/ ### Installing wispa *Getting started — Download wispa for your Mac, open it once, and grant two quick permissions so it can hear you and type for you.* wispa ships as a normal desktop app: a signed disk image for macOS. No account required. Try free up to 8,000 words (5,000 plus optional feedback), then a one-time €39 license. #### Download and install 1. Download the Mac build from the [download page](https://wispa.it/#download). You need macOS 13 or later on an Apple Silicon Mac (M1 and newer). 2. Open the `.dmg` and drag **wispa** into your Applications folder. 3. Launch it from Applications with a double-click. The app is signed and notarized by Apple, so it opens normally, no right-click needed. #### Permissions it needs wispa asks for **microphone** access so it can hear you. On Mac it also needs **Accessibility** access so it can type into other apps. Grant both when prompted, and after you allow Accessibility, restart wispa once so the change takes effect. > **Warning:** If text is copied but never typed into your app, Accessibility is almost always the cause. The fix is in [Troubleshooting](https://wispa.it/help/troubleshooting/). **FAQ** **Does it run on Intel Macs?** No. wispa is built for Apple Silicon (M1 and newer) on macOS 13 or later. **What does it cost?** wispa is a one-time €39 lifetime license, with a free trial of up to 8,000 words (5,000 plus optional feedback). Cloud providers bill their own usage to your key. Read online: https://wispa.it/help/install-wispa/ ### Keyboard shortcuts *Getting started — wispa is driven by a few global hotkeys. Here are the defaults and how holding differs from tapping.* wispa uses global hotkeys, so they work in every app. These are the defaults, and you can change any of them in **Settings**. | Action | Default shortcut | | --- | --- | | Dictate | `⌥Space` | | Switch mode | `⇧⌥K` | | Voice command | `⇧⌥Space` | | Cancel recording | `Esc` | | Stop and press Enter | `⌘↩` | Each recording hotkey is push-to-talk in a hybrid way by default: hold it down and release to stop, or tap once to start and tap again to stop. That means short phrases and long dictations both feel natural. You can switch a hotkey to **pure hold** or a **toggle** in Settings, and turn on **auto-enter** if you want wispa to press Enter for you after it inserts the text. > **Tip:** You can remap every shortcut under **Settings** if one clashes with another app, and wispa checks for conflicts between its own hotkeys. If a default is already taken, reassign wispa's key and you are set. **FAQ** **Can I change the hotkeys?** Yes. Every shortcut, including dictation, mode switch, command mode, cancel and stop, can be reassigned in Settings. wispa checks for clashes between its own shortcuts. **What is the difference between holding and tapping?** Holding records while the key is down and stops when you release it. Tapping once starts recording and a second tap stops it, which is easier for long dictations. Read online: https://wispa.it/help/keyboard-shortcuts/ ### Troubleshooting *Getting started — The handful of things that trip people up, and how to fix each one in a minute.* Most problems come down to one of four things. Work through the section that matches what you are seeing. #### Text is not being inserted This is almost always **Accessibility** on Mac. Open System Settings, Privacy and Security, Accessibility, and make sure wispa is allowed, then restart wispa once. wispa always tries to paste, so if inserting is blocked your text is still on the clipboard and you can paste it with `⌘V`. #### The mic is not picking up Check that wispa has **microphone** permission, and that the right input device is selected in Settings. If the level meter in the pill does not move while you speak, pick a different microphone or make sure it is not muted in your system settings. #### Transcription fails or nothing happens You need an active model. If you see a **no model** banner, open [Models](https://wispa.it/help/download-and-manage-models/) and download or activate one, or add a [cloud key](https://wispa.it/help/cloud-api-keys/) and pick a cloud provider in your mode. A cloud model also needs an internet connection. #### A warning on first launch wispa is signed and notarized by Apple, so a normal double-click opens it, with no Gatekeeper right-click needed. See [Installing wispa](https://wispa.it/help/install-wispa/) for the full steps. **FAQ** **wispa typed nothing but my clipboard changed. Why?** Insertion was blocked, usually by missing Accessibility permission on Mac. Grant it, restart wispa once, and paste the current clipboard in the meantime. **Where are the logs?** wispa writes a log file in its application support folder. It records whether Accessibility is granted, which is the first thing to check when inserting fails. **The mic indicator stays on after I stop. Is that normal?** wispa stops using the mic when a recording ends. The system may keep a recently-used indicator visible for a short while, which is a platform behaviour, not a recording. **Nothing happens when I press the hotkey.** Another app may have claimed the same shortcut. Reassign wispa's hotkey in Settings, or check that wispa is still running in the menu bar. Read online: https://wispa.it/help/troubleshooting/ ### Transcription models *Models and languages — wispa can transcribe with local models that run on your device or cloud models that use your own API key. Here is the full lineup.* The model is what turns your voice into text. wispa gives you two kinds: models that run on your device, and cloud models you reach with your own API key. Each mode picks one. #### On-device models **Whisper** runs locally in sizes from Tiny to Large, plus a Turbo build, so you can trade speed for accuracy. **Parakeet** runs through Apple MLX and is very fast on Apple Silicon Macs, in a **multilingual** version and a lighter **English** one. With any local model your audio is transcribed and discarded on your computer, offline if you want. #### Cloud models **OpenAI** offers `whisper-1` and the newer `gpt-4o-transcribe` and `gpt-4o-mini-transcribe`. **Groq** runs `whisper-large-v3-turbo` very fast. Cloud models need an internet connection and your own API key, and your audio is sent to that provider. | Model | Where it runs | Best for | | --- | --- | --- | | Whisper Tiny to Base | On your device | Fast and light, low-resource machines | | Whisper Small to Large | On your device | Higher accuracy, fully offline | | Parakeet | On your device (Apple Silicon) | Very fast on a Mac, multilingual or English | | OpenAI | Cloud, your key | Top accuracy without a download | | Groq | Cloud, your key | Very low-latency cloud transcription | > **Tip:** Not sure which to pick? Read [Which model should I choose](https://wispa.it/help/which-model-to-choose/) for a quick decision guide. **FAQ** **Which model is the default?** A local Whisper Base model is the recommended starting point. It downloads quickly and transcribes well on most machines without sending audio anywhere. **Can I use different models for different tasks?** Yes. Each mode sets its own model, so you might use a fast local model for quick notes and a cloud model for long, accuracy-critical dictation. **Is Parakeet better than Whisper?** They are both strong on-device options. Parakeet runs through Apple MLX and is very fast on Apple Silicon, while a large Whisper model can edge it on accuracy. Both keep your audio on your Mac. Read online: https://wispa.it/help/transcription-models/ ### Local vs cloud models *Models and languages — Local models run on your device and keep audio private; cloud models use your API key and are quick to set up. Here is the trade-off.* Both kinds produce text from your voice, but they differ in where your audio goes and what you need to set up. This table sums it up. | Aspect | Local model | Cloud model | | --- | --- | --- | | Privacy | Audio never leaves your device | Audio is sent to the provider | | Setup | Download the model once | Paste an API key | | Speed | Depends on your hardware | Consistent, handled server-side | | Offline | Works with no connection | Needs an internet connection | | Cost | Free forever | Billed by the provider to your key | #### When to use local Choose a local model when privacy matters, when you work offline, or when you would rather not manage an API key. Everything happens on your machine, and there is nothing to pay. The only cost is the one-time model download and your computer doing the work. #### When cloud makes sense Choose a cloud model when you want top accuracy without a large download, when your machine is modest, or when you want the same speed regardless of hardware. You bring your own key, and the provider bills your usage. See [Cloud API keys](https://wispa.it/help/cloud-api-keys/). **FAQ** **Can I mix local and cloud?** Yes. Because each mode sets its own model, you can have a private local mode for sensitive work and a cloud mode for speed, and switch between them. **Does a local model ever send my audio anywhere?** No. With a local model, transcription happens on your device and the audio is discarded there. Audio only leaves your computer if you choose a cloud provider. **Is cloud always more accurate?** Often, but not always. A large local Whisper model is very accurate too. Cloud mainly wins when you want top accuracy without downloading a big model. Read online: https://wispa.it/help/local-vs-cloud-models/ ### Which model should I choose? *Models and languages — Pick a model by what matters most to you, privacy, speed, accuracy or a light footprint. Here is a cheat sheet.* There is no single best model, only the best one for what you are doing. Find your priority in the first column and start there. You can always change it later, per mode. | Your priority | Pick | Why | | --- | --- | --- | | Least setup, good balance | Whisper Base, local | Small download, transcribes on device, the recommended default | | Best accuracy offline | Whisper Large or Turbo, local | Highest quality without sending audio anywhere | | Fastest on a Mac | Parakeet, local | Uses Apple MLX, very fast on Apple Silicon, multilingual or English | | Top accuracy, no download | OpenAI, cloud | Strong models, needs your API key and a connection | | Fastest cloud | Groq, cloud | whisper-large-v3-turbo with very low latency | | A tight, older laptop | Whisper Tiny, local | Smallest and lightest, trades some accuracy | #### Rules of thumb - If privacy matters most, choose a local model. Your audio never leaves your device. - If you want the least fuss, Whisper Base is a solid balance of speed and accuracy. - If your machine struggles, drop to a smaller local model or switch to a cloud provider. - Keep a fast model for quick notes and an accurate one for long dictation, each in its own mode. > **Tip:** Every model works with wispa's AI cleanup step, so you can pair a fast, plain transcription with an optional tidy-up. See [AI text cleanup](https://wispa.it/help/ai-text-cleanup/). **FAQ** **I just installed wispa. What should I start with?** Whisper Base, local. It downloads quickly, runs on your device and is accurate enough for everyday dictation. Move up or to a cloud model if you want more. **My transcriptions are slow. What helps?** Use a smaller local model like Base or Tiny, or switch to a cloud provider such as Groq, which is very fast because the work happens on their servers. **Which is most accurate?** A large Whisper model or a strong cloud model like OpenAI. The gap to a mid-size model is small for clear speech, so try Base first. Read online: https://wispa.it/help/which-model-to-choose/ ### Downloading and managing models *Models and languages — The model library is where you download local models, switch which one is active, and free up space when you no longer need one.* Local models live in wispa's **Models** section, its built-in library. From there you download the models you want, activate one, and remove the rest. 1. Open **Models** from the sidebar. 2. Use the provider filter to narrow the list, then pick a model that fits your machine. 3. Click download and wait for it to finish. Larger models take longer and use more space. 4. Activate the model you want to use, or set it inside a specific mode. > **Tip:** Deleting a model frees its disk space and is safe, you can download it again any time. If no model is active you will see a **no model** banner until you pick one or add a cloud key. #### Where models are stored Downloaded Whisper models are kept in wispa's application support folder. Sizes range from around 40 MB for Tiny up to roughly 1.6 GB for the largest, so keep an eye on space if you download several. **FAQ** **Can I have more than one model downloaded?** Yes. Download as many as you like and switch between them per mode. Only the active model does the work, the rest just sit on disk. **Do cloud models need downloading?** No. Cloud models run on the provider's servers, so there is nothing to download. You only add your API key and pick the provider in a mode. Read online: https://wispa.it/help/download-and-manage-models/ ### Languages *Models and languages — wispa transcribes dozens of languages through Whisper, and its own interface comes in English, German, Spanish and French.* There are two language settings to keep apart: the language you dictate in, and the language wispa's own interface is shown in. #### Dictation languages Whisper is multilingual and handles dozens of languages, including English and German, automatically. On Apple Silicon, the multilingual **Parakeet** model is another fast on-device option. You can leave a mode on automatic detection, or set a specific language in the mode for the most reliable results when you always dictate in the same one. #### The app's interface language wispa's interface is available in **English, German, Spanish and French**. By default it follows your system language and falls back to English. You can set it explicitly in Settings under appearance. > **Tip:** Adding a wordlist to your mode helps with names, brands and jargon that a model might otherwise mis-hear. See [Dictation modes](https://wispa.it/help/dictation-modes/). **FAQ** **Do I have to pick a language before dictating?** No. Whisper can detect the language automatically. Setting a fixed language in a mode can improve accuracy if you always dictate in the same one. **Can I switch languages between recordings?** Yes. Either rely on automatic detection, or keep separate modes for each language and switch modes when you change. **Is the interface language the same as the dictation language?** No, they are independent. You can run the interface in German while dictating in English, or any other combination. Read online: https://wispa.it/help/dictation-languages/ ### Cloud API keys *Cloud keys and providers — wispa lets you bring your own API keys for cloud transcription and AI cleanup. Keys are stored on your device, and you stay in control.* wispa does not resell any cloud service. Instead you bring your own API key from a provider, and wispa uses it on your behalf. That keeps you in direct control of usage and billing. #### What a key unlocks - **Cloud transcription.** With an OpenAI or Groq key you can transcribe in the cloud instead of on your device. - **AI cleanup and commands.** With a key from any supported provider, a mode can run an optional cleanup step, and command mode can interpret free-form phrasing. #### Where your keys are stored Keys are saved locally in wispa's settings on your own computer. They are never sent to us, only to the provider they belong to when you make a request. You can remove a key at any time. > **Tip:** Adding a key does not force cloud use. Your audio only leaves your device when a mode is actually set to a cloud provider. A local model still keeps everything on your machine. See [Local vs cloud models](https://wispa.it/help/local-vs-cloud-models/). **FAQ** **Does wispa see or store my key?** Your key is stored locally on your device and sent only to its own provider when needed. It is never sent to wispa's servers, wispa has no servers for this. **Do I need a key at all?** No. A local model needs no key. You only add a key if you want cloud transcription or the optional AI cleanup and command features. **Who pays for cloud usage?** You do, directly to the provider. wispa is a one-time purchase; cloud providers bill their own usage to the key you add. Read online: https://wispa.it/help/cloud-api-keys/ ### Setting up a cloud key *Cloud keys and providers — Get a key from your provider, paste it into wispa's Cloud keys section, and use the built-in test to confirm it works.* Adding a cloud key takes a minute. You get the key from the provider's own console, paste it into wispa, and test it. 1. Create an API key in your provider's dashboard, see the table below for where. 2. In wispa, open **Models**, then **Cloud keys**. 3. Paste the key next to its provider and save. 4. Use the **test** button. wispa checks the key against the provider and tells you if it is valid. > **Tip:** The test makes a real request to the provider, so a failing test usually means a typo, a key without the right permissions, or no billing set up on that account. #### Where to get each key | Provider | Where to create a key | | --- | --- | | OpenAI | `platform.openai.com`, API keys | | Groq | `console.groq.com`, API keys | | Anthropic (Claude) | `console.anthropic.com` | | Google Gemini | `aistudio.google.com` | | DeepSeek | `platform.deepseek.com` | | Mistral | `console.mistral.ai` | | xAI (Grok) | `console.x.ai` | For transcription you need OpenAI or Groq. For AI cleanup and command interpretation any of these providers works. See [Supported providers](https://wispa.it/help/supported-providers/) for which does what. **FAQ** **My key test failed. What now?** Re-check for a stray space or missing character, make sure the key has the right permissions, and confirm the account has billing enabled. The test reports the provider's own error to help you narrow it down. **Can I add more than one provider?** Yes. Add as many keys as you like. Each mode then picks which provider to use for transcription or cleanup. **Is it safe to paste my key?** The key is stored locally on your device and only sent to its own provider. It is never uploaded to wispa. You can delete it any time. Read online: https://wispa.it/help/set-up-a-cloud-key/ ### Supported providers *Cloud keys and providers — wispa works with several providers. Two transcribe your dictation in the cloud, one handles meetings, and the rest run the optional AI cleanup step, which can also run locally.* wispa supports a handful of cloud providers, but they play two different roles. It helps to know which does what before you pick one in a mode. #### Transcription Only **OpenAI** and **Groq** turn your dictation into text in the cloud. **Deepgram** transcribes meetings with speaker labels. Everything else on the list is for the optional AI step, not transcription. Local Whisper and Parakeet cover on-device transcription. #### AI text cleanup The optional cleanup step, and command interpretation, can use any supported provider: **Anthropic, OpenAI, Groq, Google Gemini, DeepSeek, Mistral, xAI and OpenRouter**. It can also run **locally** through Ollama or LM Studio, with no key. The default is Claude Haiku, a small, fast model. You choose the provider and model per mode. | Provider | Transcription | AI cleanup | | --- | --- | --- | | OpenAI | Yes | Yes | | Groq | Yes | Yes | | Anthropic (Claude) | No | Yes | | Google Gemini | No | Yes | | DeepSeek | No | Yes | | Mistral | No | Yes | | xAI (Grok) | No | Yes | | OpenRouter | No | Yes | | Ollama / LM Studio (local) | No | Yes, no key | | Deepgram | Meetings only | No | **FAQ** **Can I transcribe with Claude or Gemini?** No. Those providers do the AI cleanup step, not transcription. For cloud transcription you need OpenAI or Groq, or use a local model. **Which cleanup provider should I use?** The default Claude Haiku is fast and inexpensive and works well. If you already have a key with another provider, you can use that instead, quality is similar for a tidy-up task. Read online: https://wispa.it/help/supported-providers/ ### Local AI cleanup with Ollama or LM Studio *Cloud keys and providers — wispa's AI cleanup does not have to use the cloud. Run it through Ollama or LM Studio and the whole step stays on your device, with no key and no internet.* wispa's **AI cleanup** usually runs on a cloud model with your key, but it does not have to. Point it at **Ollama** or **LM Studio** and the cleanup runs on your own machine, with no key and nothing sent to the internet. #### Why run cleanup locally The default cleanup uses a cloud provider, so it needs a key and a connection. A **local model** keeps everything on your device: your transcript is never uploaded, there is no per-use cost, and it works offline. The tradeoff is that quality and speed depend on your own hardware and the model you run. > **Tip:** wispa **auto-detects** Ollama and LM Studio while their local server is running, so their models appear in the cleanup picker with no key to paste. #### Set it up 1. Install **Ollama** or **LM Studio** and download a model inside it. 2. Start its local server. Ollama listens on `127.0.0.1:11434`, LM Studio on `127.0.0.1:1234`. 3. In a mode's **AI cleanup**, pick the local provider and the model, which wispa lists automatically. 4. Dictate as usual. The cleanup step now runs on your computer. #### What it can power A local model can drive the same jobs as a cloud one: **AI cleanup** in a mode, **voice command** interpretation, and **Super mode**. The same guardrail applies, so the model formats your transcript and never treats it as an instruction. #### Local or cloud Local models are private, offline and free to run, but they lean on your own CPU or GPU and memory. Cloud models need a key and a connection but use no local compute and can be higher quality. You choose per mode, so you can keep sensitive writing local and use the cloud elsewhere. > **Warning:** The local server must be **running** for wispa to reach it, and local models use your RAM or VRAM. If the picker is empty, start Ollama or LM Studio first, then reopen the mode. **FAQ** **Do I need an API key for local cleanup?** No. Ollama and LM Studio run on your machine with no key. wispa detects their local server and lists the models, and nothing is sent to the internet. **Does local cleanup work offline?** Yes. Once the model is downloaded and the local server is running, cleanup works with no connection, so your transcript stays on your device from start to finish. **Which local model should I use?** Any chat model your machine can run in Ollama or LM Studio works. A small, fast instruct model is plenty for tidying dictation; larger models improve quality if your hardware can handle them. Read online: https://wispa.it/help/local-ai-cleanup/ ### Dictation modes *Modes and cleanup — A mode is a named setup that decides how a recording is transcribed and styled. Keep one per kind of writing and switch in a tap.* A **mode** is a saved setup for how wispa handles a recording. Instead of changing settings each time, you switch to the mode that fits what you are writing. #### What a mode holds - The **model** used to transcribe, local or cloud. - The **language**, either automatic or a fixed one. - An optional **AI cleanup** step that formats the text for where it is going. - Optional extras: a **color**, **auto-stop** on silence, and **apps** that switch to this mode automatically. #### Built-in templates wispa ships templates you can start from: **Default Plus**, **Email**, **Markdown**, **Slack**, **Reply in context** and **Meeting**, plus a blank custom mode. Each is a starting point you can rename and adjust. Two modes are always built in: a plain **Standard** baseline, and **Super** on macOS. > **Tip:** Modes are how you keep dictation flexible: a fast local model for quick notes, a cloud model with cleanup for polished email, and a Markdown mode for docs, each a tap away. See [Create and edit modes](https://wispa.it/help/create-and-edit-modes/). **FAQ** **How many modes can I have?** As many as you like. Most people keep a few, one for quick notes, one for email, one for chat, and switch between them. **Do modes change how I insert text?** No. Every mode still inserts at your cursor. Modes only change how the recording is transcribed and, optionally, how it is cleaned up. **Is the Standard mode special?** Standard is a fixed baseline mode that is always there. Your custom modes sit alongside it and can be reordered. Read online: https://wispa.it/help/dictation-modes/ ### Super mode *Modes and cleanup — Super mode is a built-in macOS mode that reads the app around you to clean up dictation, and when you select text first, your speech becomes an instruction on it.* **Super mode** is a fixed, built-in mode on **macOS**, always in slot two, with no setup. It is dictation that understands the app around you, so the text it inserts already fits the context. #### What Super mode does As you dictate, Super mode reads context from the **active app**: the window text, the field you are focused in, the app name and your freshly copied clipboard. It uses that to clean up the transcript, so names, spellings and terms from what is on screen come out right instead of being guessed. > **Tip:** Super mode always runs an LLM, so it needs a **ready model**: a cloud provider key or a local model through Ollama or LM Studio. Without one, wispa blocks the mode and shows a hint, because there is nothing to do the cleanup. #### Use Super mode 1. Switch to **Super** (slot two) from the menu bar, the mode switcher or the header dropdown. 2. Make sure an LLM is ready, a cloud key or a local model; the mode is blocked otherwise. 3. Dictate as usual. Super mode cleans up the text using the app around you and inserts it. 4. To act on existing text, **select it first**, then dictate your instruction. #### Talk to your selection If text is **selected** when you start recording, your dictation becomes an **instruction on that text** rather than plain dictation. In an editable field, wispa replaces the selection with the result. For a selection you cannot edit, like text on a web page, wispa shows a small **answer panel** at the pill with a copy button instead of changing anything. #### Not a full assistant Super mode is a smarter cleanup, not a chatbot. With **no selection** it never invents content; it only tidies what you actually said, using the context for spellings and tone. It will not answer general questions out of nowhere or write something you did not dictate. > **Warning:** Super mode needs a **ready LLM**: a cloud provider key or a local model through Ollama or LM Studio. Without one, wispa blocks the mode, because there is nothing to do the context-aware cleanup. **FAQ** **Does Super mode send my screen somewhere?** It sends the small context it reads (app name, focused field, nearby window text, clipboard) to the LLM you chose, along with your transcript. Pick a local model through Ollama or LM Studio to keep all of that on your device. **Why is Super mode greyed out?** Because no LLM is ready. Super mode always cleans up with a model, so add a cloud provider key or run a local model with Ollama or LM Studio, and it becomes available. **What happens if I do not select any text?** It behaves as context-aware dictation: it cleans up what you said using the surrounding app, and inserts it. Selecting text first is what turns your speech into an instruction on that text. Read online: https://wispa.it/help/super-mode/ ### Creating and editing modes *Modes and cleanup — Build a mode from a template, set its model and optional cleanup, save it, and switch to it from the menu bar, the mode switcher or the header.* New modes start from a template so you are not staring at a blank setup. A new mode is a draft until you save it, so you can experiment freely. 1. Open **Modes** from the sidebar and start a new one. 2. Pick a template: Default Plus, Email, Markdown, Slack, Reply in context, Meeting, or a blank custom mode. 3. Set the **model** and **language** the mode should use. 4. Optionally turn on **AI cleanup** and describe how the text should be styled. 5. Save. The mode is now available everywhere you switch modes. > **Tip:** A new mode stays a draft until you press save, so nothing changes underneath you while you tweak it. You can reorder your modes by dragging the grab handle, with a live preview. #### Switching modes Switch modes three ways: from the **menu bar**, with the **mode switcher** hotkey `⇧⌥K`, or from the **mode dropdown** in the app header. Whatever you pick becomes the active mode for your next recording. See [Keyboard shortcuts](https://wispa.it/help/keyboard-shortcuts/). **FAQ** **Do I lose my draft if I close the window?** A mode is only stored once you save it. Save before closing if you want to keep a draft you have been editing. **Can I reorder modes?** Yes. Drag a mode by its grab handle to reorder, with a live preview of where it will land. The order is reflected in the switcher and dropdown. Read online: https://wispa.it/help/create-and-edit-modes/ ### AI text cleanup *Modes and cleanup — An optional per-mode step sends your transcript to an AI model to drop filler and format it. A deterministic filler removal runs first, no key needed.* Plain transcription gives you exactly what you said, ums included. The optional **cleanup** step, set per mode, rewrites that raw transcript into finished text: it drops filler, fixes the order, and formats for where the text is going. #### How cleanup works 1. You **speak** and wispa transcribes the raw text. 2. The transcript is sent to the **AI model** in your mode, with your instructions for how to style it. 3. The **cleaned text** comes back and is inserted at your cursor. > **Tip:** Cleanup runs through an AI model. That can be a **cloud model** with your key (the default is Claude Haiku, small and fast), or a **local model** through Ollama or LM Studio, which keeps the whole step on your device with no key. A built-in guardrail wraps your transcript so the model treats it as text to format, never as instructions to follow. Add a key in [Set up a cloud key](https://wispa.it/help/set-up-a-cloud-key/), or see [Local AI cleanup](https://wispa.it/help/local-ai-cleanup/). #### Filler-word removal Separately, wispa can strip filler words like um and uh with a **deterministic** rule that runs before any AI step. It needs no key, works with local models, and saves tokens when you do use cleanup. Turn it on in the Audio settings. **FAQ** **Does cleanup need an internet connection?** Only with a cloud provider. Run cleanup through a local model with Ollama or LM Studio and it works fully offline with no key. Plain transcription and the deterministic filler removal also work offline with a local model. **Will the AI answer my transcript instead of formatting it?** No. A guardrail marks your transcript as data to format, not a prompt to answer, so questions or commands in your speech are cleaned up rather than acted on. **Can I use cleanup without a big cloud bill?** Yes. The default Claude Haiku is inexpensive, and turning on filler removal first trims the text so the AI step handles fewer tokens. Read online: https://wispa.it/help/ai-text-cleanup/ ### Record and summarize meetings *Meetings — Beyond dictation, wispa records long meetings from your mic and the app audio, transcribes them, labels who spoke, and writes an AI summary you can export.* wispa is not only for short dictation. It can **record a full meeting**, transcribe the whole thing, mark who said what, and hand you an AI summary, so a call turns into notes without you typing. #### How meeting recording works You record with a **Meeting mode**. wispa captures long-form audio, transcribes it in chunks so even long calls finish cleanly, and then an LLM writes a **summary and a title**. Each recording is kept in a separate **Meetings** list, apart from your short dictation history. > **Tip:** A Meeting mode can capture three audio sources: your **microphone**, the **system audio** coming out of your apps, or **both** mixed together (the default), so you catch your own voice and everyone on the call. #### Record a meeting 1. Create a mode from the **Meeting** template, or set an existing mode's source to mic, system or both. 2. Grant **Screen Recording** permission once if you want system audio; wispa opens the right settings pane for you. 3. Start the meeting recording, run your call, and stop when you are done. wispa transcribes and summarizes it. 4. Open the meeting from the **Meetings** list to read the transcript, summary and, if enabled, the speaker labels. #### Label who said what Turn on **diarization** and add a **Deepgram** key, and wispa marks each turn with a speaker, so the transcript reads as a real conversation. You can **rename** the speakers afterwards. Without a Deepgram key the meeting still transcribes, just as one unlabelled block of text. #### Summaries and your meetings library Every meeting gets an AI **summary and auto title**, condensed in stages for very long calls. You can **re-summarize**, **re-transcribe**, **rename**, **export** or **delete** a meeting later, and even turn an existing audio file into a meeting. The audio is saved by default to `$HOME/Documents/wispa/Meetings/`, and the Meetings list holds your recent meetings separate from dictation. > **Warning:** Meeting recording with system audio needs **Screen Recording** permission; if that is off, wispa records the microphone only. Very long meetings stop automatically after about three hours. **FAQ** **Can wispa record the other people on a call, not just me?** Yes. Set the meeting source to system or both, and grant Screen Recording permission. wispa then captures the audio your apps play, which includes everyone on the call, alongside your microphone. **Do I need a cloud key to record a meeting?** Not to record and transcribe with a local model. Speaker labels need a Deepgram key, and the AI summary needs a cleanup provider, which can be a cloud key or a local model through Ollama or LM Studio. **Where are my meeting recordings stored?** In the Meetings list inside wispa, and the audio is saved by default under `$HOME/Documents/wispa/Meetings/`. Meetings are kept separate from your short dictation history, and you can export or delete any of them. Read online: https://wispa.it/help/record-meetings/ ### Voice commands *Voice commands — Command mode is a second hotkey that runs actions from your voice instead of inserting text. Nothing is typed, and nothing is saved to history.* Alongside dictation, wispa has **command mode**: a separate hotkey, `⇧⌥Space` by default, that treats what you say as an action to run rather than text to type. #### How it differs from dictation Command mode records with a neutral grey pill instead of the usual one, and when you finish it runs an action. **Nothing is inserted** into your app, and it does not add to your history or stats. The action itself is the feedback. #### How it understands you 1. First it matches your words against the **trigger phrases** of your own commands, offline. 2. It recognises a built-in **mode switch**, for example saying mode followed by a name or number. 3. If nothing matches and you have a key, an optional **AI step** interprets free-form phrasing in any language and pulls out the argument. > **Tip:** The offline phrase match needs no key and no connection. The AI fallback only runs if you have a key and it is enabled, and if it is off, unmatched phrases simply do nothing. See [Create voice commands](https://wispa.it/help/create-voice-commands/). **FAQ** **Does command mode type anything?** No. It runs an action, such as opening an app or running a script. Nothing is inserted into your document and nothing is saved to history. **Do I need a cloud key for commands?** Not for exact trigger phrases or the built-in mode switch, those work offline. You only need a key for the optional AI step that understands free-form phrasing. **Is command mode the same hotkey as dictation?** No. It has its own hotkey, `⇧⌥Space` by default, separate from the dictation key so the two never collide. Read online: https://wispa.it/help/voice-commands/ ### Creating voice commands *Voice commands — Start from a template, set a trigger phrase, and choose what the command does. Types range from opening an app to running a script.* You build commands in the **Commands** section. Each one pairs a trigger phrase with an action, and templates give you a working starting point. 1. Open **Commands** from the sidebar. 2. Pick a template, such as Open Terminal, Open app, a coding agent, a to-do or a note. 3. Set the **trigger phrase** you will say, and any argument the action needs. 4. Save. Say the phrase in command mode to run it. #### Command types | Type | What it does | | --- | --- | | Open app | Launches or focuses an app | | Open URL | Opens a link in your browser | | Run shell | Runs a shell command, your speech can fill in a part | | AppleScript | Runs an AppleScript, e.g. add a note | | Shortcut | Runs a Shortcuts.app shortcut | | Switch mode | Changes your active dictation mode | > **Tip:** Trigger phrases also nudge cloud transcription toward the right words, so distinct, memorable phrases work best. Shell commands insert your spoken argument safely, so a command cannot be tricked into running something else. **FAQ** **Can a command use what I say as input?** Yes. Many templates take an argument, so you can say the trigger plus the content, for example a note followed by its text, and wispa fills it in. **What can AppleScript and Shortcut commands do?** They tap into macOS automation. An AppleScript can add a note or control an app, and a Shortcut runs anything you have built in the Shortcuts app, all from a spoken trigger phrase. **Will a command ask before doing something risky?** A command marked as needing confirmation shows a small overlay first, where you press Enter to run it. Everything else runs immediately. Read online: https://wispa.it/help/create-voice-commands/ ### Voice for coding agents *Coding agents — wispa can drive terminal coding agents by voice, so when Claude Code or Codex pauses to ask, you answer out loud instead of typing.* Beyond plain dictation, wispa has a voice loop for **terminal coding agents** like Claude Code, Codex and Cursor. When the agent stops to ask you something, you reply by voice. #### The voice loop The agent pauses and waits for input, wispa shows a prompt, and you speak your answer. Your reply is sent straight back to the agent as its next message, so a back-and-forth session stays hands-free. 1. Install the agent **hook** from wispa's integrations, a one-click setup. 2. Start your coding agent in the terminal as usual. 3. When it waits for you, speak your reply and it continues. > **Warning:** wispa types your reply into the terminal, so it needs **Accessibility** permission (see [Installing wispa](https://wispa.it/help/install-wispa/)). Grant it once and your spoken reply lands in the session every time, in Terminal, iTerm2, Warp or your editor's built-in terminal. > **Tip:** This works with the terminal agents you already run, wispa just adds the voice layer. Regular dictation still works everywhere else at the same time. See [How wispa works](https://wispa.it/help/how-wispa-works/). **FAQ** **Which agents does the voice loop support?** Terminal coding agents such as Claude Code and Codex, with a one-click hook install. Cursor and similar terminal agents fit the same pattern. **Do I still need to type?** For the agent's questions, no, you answer by voice. You can always fall back to typing, and normal dictation is available in every other app too. **Which terminal should I use?** Any terminal works, Terminal.app, iTerm2, Warp, or the integrated terminal in your editor. wispa inserts your spoken reply into whichever terminal your coding agent is running in, so run the agent where you normally do. Read online: https://wispa.it/help/voice-for-coding-agents/ ### Voice for Claude Code *Coding agents — wispa adds a voice loop to Claude Code in the terminal: when Claude Code stops to ask you something, you answer out loud and your words go back as its next message.* wispa turns Claude Code into a hands-free conversation. On top of normal dictation, it adds a **voice loop**: whenever Claude Code pauses to ask you something in the terminal, you answer by voice instead of typing. #### How the voice loop works with Claude Code Claude Code runs a **Stop hook** at the end of every turn. wispa installs that hook, so the moment Claude Code finishes and waits for you, it hands its last message to wispa. A small prompt appears, you speak your reply, and wispa sends the text straight back to Claude Code as your next message, so the session keeps going without your hands leaving the keyboard. > **Tip:** By default wispa uses **continuation delivery**: your reply travels back to Claude Code over a local connection, so it lands even when the terminal is in the background. You can switch to paste delivery in wispa's settings if you would rather wispa type into the window. #### Set it up 1. Open wispa's **Integrations**, pick **Claude Code**, and click install. wispa writes the Stop hook into `$HOME/.claude/settings.json` and keeps a backup of the old file. 2. Start Claude Code in your terminal the way you normally would. 3. When Claude Code asks a question and waits, hold your wispa hotkey and speak your answer. 4. wispa transcribes it and Claude Code continues with your reply. Repeat for as long as the session runs. #### Terminal or editor? The voice loop is for **Claude Code in the terminal**, which is where it runs, and wispa drives that back-and-forth. Everywhere else, including your editor and its chat box, normal push-to-talk dictation still works, so you can dictate prompts by voice there too. #### What wispa does in the background wispa runs a small listener on your own machine at `127.0.0.1`, protected by a private token, and no web page can reach it. The hook only sends Claude Code's last message and working folder. wispa shows the prompt, records your answer, and transcribes it with the model your voice loop is set to, with no AI cleanup or word replacement on that reply. Your words are handed to Claude Code framed as user input, so the agent treats them as your instruction and nothing in its own output can hijack the loop. > **Warning:** wispa uses **continuation delivery** by default, which lands your reply even when the terminal is in the background. If you switch to **paste delivery**, wispa types into the focused window with `⌘V`, so keep the terminal frontmost and make sure **Accessibility** is granted for that mode. **FAQ** **Do I still type my answers to Claude Code?** No. When Claude Code asks and waits, you answer by voice and wispa sends the text back as your next message. You can always fall back to typing, and it stays available. **Where does wispa put the Claude Code hook?** In your `$HOME/.claude/settings.json`, as a Stop hook. wispa backs up the previous file first and leaves your other settings untouched, and you can remove the hook from wispa's Integrations at any time. **Is my voice sent to wispa's servers?** No. The voice loop runs locally between wispa and Claude Code. Your reply is transcribed with the model you chose, which is on your device with a local model, or through the cloud provider whose key you added. Read online: https://wispa.it/help/voice-for-claude-code/ ### Voice for Codex *Coding agents — wispa adds a voice loop to the Codex CLI: when Codex finishes a turn and waits for you, you answer out loud and your words go back as its next message.* wispa lets you talk to the **Codex CLI** instead of typing every reply. Alongside normal dictation, it adds a voice loop: when Codex finishes a turn and waits for your input in the terminal, you answer by voice. #### How the voice loop works with Codex Codex fires a hook when a turn ends. wispa installs that hook, so when Codex stops and waits, it passes its last message to wispa. A prompt appears, you speak, and wispa returns your answer to Codex as your next message, keeping the session moving without switching back to the keyboard. > **Tip:** wispa uses **continuation delivery** by default, so your reply reaches Codex over a local connection even when its window is not focused. Paste delivery, where wispa types into the terminal instead, is available in settings. #### Set it up 1. In wispa's **Integrations**, choose **Codex** and install. wispa writes the hook into `$HOME/.codex/hooks.json` and backs up any existing file. 2. The first time Codex runs the hook, it asks you to **approve it once**. Confirm, and the loop is live from then on. 3. Use Codex in your terminal as usual. When it waits for you, hold your wispa hotkey and speak. 4. wispa transcribes your answer and Codex continues with it. #### Where it runs The voice loop drives **Codex in the terminal**, which is where the CLI runs. For anything outside that back-and-forth, such as a chat box in your editor, normal push-to-talk dictation still lets you speak your text. #### What wispa does in the background wispa listens only on `127.0.0.1` behind a private token, so nothing on the web can reach it. Codex's hook sends just its last message and working folder. wispa records your spoken reply and transcribes it with your voice-loop model, with no AI cleanup applied to it, then hands it to Codex framed as user input so the reply is treated as your instruction. > **Warning:** **Continuation delivery** is the default and lands your reply even when the terminal sits in the background. Only **paste delivery** types into the focused window with `⌘V`, so keep the terminal frontmost and grant **Accessibility** if you use it. **FAQ** **Why does Codex ask me to approve the hook?** Codex confirms new hooks once before running them, as a safety check. Approve the wispa hook on its first run and it works silently after that. **Do I still need to type in Codex?** No. When Codex waits for you, you answer by voice and wispa sends it back as your next message. Typing stays available whenever you want it. **Where is the Codex hook stored?** In `$HOME/.codex/hooks.json`. wispa backs up the previous file and leaves your other Codex settings alone, and you can uninstall the hook from wispa's Integrations. Read online: https://wispa.it/help/voice-for-codex/ ### Voice for Cursor *Coding agents — wispa adds a voice loop to Cursor, in the terminal and in the Cursor editor: when the agent stops to ask, you answer out loud and Cursor submits your words as the next message.* wispa gives Cursor a voice loop, and this is the one agent where it reaches **both the terminal and the Cursor editor**. When Cursor's agent stops to ask you something, you answer by voice and Cursor picks up your reply as the next message. #### How the voice loop works with Cursor Cursor runs a **stop hook** when its agent finishes a turn. wispa installs it, so when Cursor waits for you it passes its last message to wispa. You speak your answer, and wispa hands the text back as a follow-up message that Cursor submits on its own, so the agent keeps working. > **Tip:** Because Cursor submits the follow-up itself, the voice loop feels the same in the **Cursor editor** as in the CLI. wispa also lifts Cursor's built-in follow-up limit for the loop, so a long spoken back-and-forth is not cut short. #### Set it up 1. Open wispa's **Integrations**, pick **Cursor**, and install. wispa writes the stop hook into `$HOME/.cursor/hooks.json` and backs up any existing file. 2. Use Cursor the way you normally do, in the editor or in the Cursor CLI. 3. When the agent stops and asks, hold your wispa hotkey and speak your reply. 4. wispa transcribes it and Cursor submits it as the next message, then continues. #### Terminal or editor? Both. Cursor's stop hook fires whether you run the agent in the **Cursor editor** or the **Cursor CLI**, and in each case Cursor submits the follow-up wispa returns. That makes Cursor the one coding agent where the voice loop covers the graphical app as well as the terminal. #### What wispa does in the background wispa runs a local listener on `127.0.0.1` behind a private token, unreachable from the web. Cursor's hook sends its last message and workspace folder, read from the session transcript. wispa records your reply and transcribes it with your voice-loop model, with no AI cleanup on it, then returns it as a follow-up framed as user input. If a turn was cancelled rather than finished, wispa stays quiet and no prompt appears. > **Warning:** The follow-up is submitted by Cursor itself, so the voice loop does not depend on your terminal. wispa's optional **paste delivery**, which types into the focused window with `⌘V`, is the exception, so keep that window frontmost if you use it. **FAQ** **Does the voice loop work in the Cursor editor, not just the terminal?** Yes. Cursor's stop hook fires in the editor and the CLI, and Cursor submits the follow-up wispa returns in both. Cursor is the one agent where the loop covers the graphical app too. **What happens if I stop Cursor mid-turn?** Nothing pops up. wispa only shows the voice prompt when Cursor finishes a turn and waits, not when a turn is cancelled, so a cancel will not trigger a recording. **Where does wispa store the Cursor hook?** In `$HOME/.cursor/hooks.json`, as a stop hook. wispa backs up the previous file and leaves your other Cursor settings untouched, and you can remove it from wispa's Integrations. Read online: https://wispa.it/help/voice-for-cursor/ ### Voice for Antigravity *Coding agents — wispa adds a voice loop to the Antigravity CLI: when the agent stops to ask, you answer out loud and your words go back as its next message.* wispa adds a voice loop to the **Antigravity CLI**, Google's terminal coding agent (the `agy` command). When Antigravity stops to ask you something, you answer by voice instead of typing your reply. #### How the voice loop works with Antigravity Antigravity runs a hook when a turn ends. wispa installs it, so the moment the agent stops and waits, it hands its last message to wispa. A prompt appears, you speak, and wispa returns your answer as the next message so the session keeps running hands-free. > **Tip:** wispa uses **continuation delivery** by default, so your reply reaches Antigravity over a local connection even when the terminal is in the background. Paste delivery, where wispa types into the window, is a setting you can switch to. #### Set it up 1. In wispa's **Integrations**, choose **Antigravity** and install. wispa adds its own hook group to `$HOME/.gemini/config/hooks.json`, the config root Antigravity shares with Gemini, and backs up the file first. 2. Run the Antigravity CLI (`agy`) in your terminal as usual. 3. When the agent stops and asks, hold your wispa hotkey and speak your reply. 4. wispa transcribes it and Antigravity continues with your answer. #### Where it runs The voice loop drives the **Antigravity CLI in the terminal**, where the agent runs. For work outside that loop, normal push-to-talk dictation still lets you speak text into any other app, including your editor. #### What wispa does in the background wispa listens only on `127.0.0.1` behind a private token, so nothing on the web can reach it. Antigravity's hook points wispa at the session transcript for the last message and at your workspace folder. wispa records your reply and transcribes it with your voice-loop model, with no AI cleanup on it, then hands it back framed as user input so the agent treats it as your instruction. > **Warning:** **Continuation delivery** is the default and lands your reply even when the terminal is in the background. Only **paste delivery** types into the focused window with `⌘V`, so keep the terminal frontmost and grant **Accessibility** if you switch to it. **FAQ** **Is Antigravity the same as the Gemini CLI?** Antigravity is Google's terminal agent and uses the `agy` command. It shares Gemini's config folder, which is why wispa writes its hook under `$HOME/.gemini/config`, but you run it as Antigravity. **Do I still type my replies?** No. When Antigravity waits for you, you answer by voice and wispa sends it back as the next message. Typing stays available as a fallback. **Where does wispa put the Antigravity hook?** As its own hook group in `$HOME/.gemini/config/hooks.json`. wispa backs up the file first and keeps your other hooks intact, and you can remove it from wispa's Integrations. Read online: https://wispa.it/help/voice-for-antigravity/ ### Voice for OpenCode *Coding agents — wispa adds a voice loop to OpenCode with a small plugin: when OpenCode finishes and goes idle, you answer out loud and your words are sent back as the next message.* wispa adds a voice loop to **OpenCode**. Unlike the hook-based agents, OpenCode uses a small **plugin** that wispa drops in, and from then on you answer OpenCode by voice when it waits for you. #### How the voice loop works with OpenCode OpenCode signals when a session goes **idle** at the end of a turn. wispa's plugin catches that, reads the last message, and passes it to wispa. You speak your reply, and the plugin sends it back into OpenCode as your next message through OpenCode's own interface, so the session continues. > **Tip:** OpenCode is a **plugin integration**, so there is no settings file to edit. wispa writes one small file into OpenCode's plugin folder and OpenCode discovers it automatically the next time it starts. #### Set it up 1. In wispa's **Integrations**, choose **OpenCode** and install. wispa writes a plugin to `$HOME/.config/opencode/plugin/wispa-voice-loop.js`. 2. Start or restart OpenCode in your terminal so it loads the new plugin. 3. When OpenCode finishes and waits, hold your wispa hotkey and speak your reply. 4. The plugin sends your transcribed answer back into OpenCode, which continues. #### Where it runs OpenCode runs in the **terminal**, and that is where the voice loop drives it. For anything outside the loop, normal push-to-talk dictation still lets you speak text into any other app. #### What wispa does in the background wispa runs a local listener on `127.0.0.1` behind a private token, unreachable from the web. The plugin fetches it when OpenCode goes idle, sending the last message and the working folder. wispa records your reply and transcribes it with your voice-loop model, with no AI cleanup on it, and returns the text; the plugin then injects it into OpenCode framed as user input. > **Warning:** Because OpenCode's plugin submits your reply through OpenCode itself, the loop does not depend on your terminal. wispa's optional **paste delivery**, which types into the focused window with `⌘V`, is the exception, so keep that window frontmost if you use it. **FAQ** **Does OpenCode need a config change?** No. OpenCode uses a plugin, so wispa just drops one file into its plugin folder and OpenCode loads it on the next start. There is no settings file to edit. **Why do I need to restart OpenCode?** OpenCode discovers plugins when it starts, so a fresh start loads the wispa plugin. After that the voice loop is live for every session. **Where is the OpenCode plugin stored?** At `$HOME/.config/opencode/plugin/wispa-voice-loop.js`. Removing OpenCode from wispa's Integrations deletes that file again. Read online: https://wispa.it/help/voice-for-opencode/ ### Voice for Pi *Coding agents — wispa adds a voice loop to the Pi coding agent with a small extension: when Pi finishes a turn, you answer out loud and your words go back as the next message.* wispa adds a voice loop to the **Pi** coding agent. Like OpenCode, Pi uses a small **extension** that wispa installs, so when Pi finishes a turn and waits, you answer by voice. #### How the voice loop works with Pi Pi emits an **agent-end** event when a turn finishes. wispa's extension catches it, reads the last message, and passes it to wispa. You speak your reply, and the extension sends it back into Pi as a follow-up message, so the session continues without typing. > **Tip:** Pi is a **plugin integration**, so there is no settings file to merge. wispa writes one small extension file into Pi's extensions folder and Pi picks it up automatically. #### Set it up 1. In wispa's **Integrations**, choose **Pi** and install. wispa writes an extension to `$HOME/.pi/agent/extensions/wispa-voice-loop.ts`. 2. Start or restart Pi in your terminal so it loads the extension. 3. When Pi finishes and waits, hold your wispa hotkey and speak your reply. 4. The extension sends your transcribed answer back into Pi as a follow-up, and Pi continues. #### Where it runs Pi runs in the **terminal**, and that is where the voice loop drives it. Outside the loop, normal push-to-talk dictation still lets you speak text into any other app. #### What wispa does in the background wispa runs a local listener on `127.0.0.1` behind a private token, unreachable from the web. Pi's extension fetches it at the end of a turn, sending the last message and the working folder. wispa records your reply and transcribes it with your voice-loop model, with no AI cleanup on it, and returns the text; the extension then delivers it to Pi as a follow-up message framed as user input. > **Warning:** Because Pi's extension submits the reply through Pi itself, the loop does not depend on your terminal. wispa's optional **paste delivery**, which types into the focused window with `⌘V`, is the exception, so keep that window frontmost if you use it. **FAQ** **Does Pi need a config change?** No. Pi uses an extension, so wispa drops one file into Pi's extensions folder and Pi loads it on the next start. There is no settings file to edit. **Do I still type my replies to Pi?** No. When Pi finishes and waits, you answer by voice and the extension sends it back as a follow-up. Typing stays available whenever you want it. **Where is the Pi extension stored?** At `$HOME/.pi/agent/extensions/wispa-voice-loop.ts`. Removing Pi from wispa's Integrations deletes that file again. Read online: https://wispa.it/help/voice-for-pi/ ## Free browser tools Free browser tools from wispa: test your mic, record your voice, and measure your typing speed. No signup, and nothing leaves your device. - Typing Speed Test (https://wispa.it/tools/typing-speed-test/): Free typing speed test. Type a short passage to see your live words-per-minute and accuracy, then how much faster your voice is. No signup, in your browser. - Mic Test (https://wispa.it/tools/mic-test/): Free online mic test. Check your mic with a live waveform and level meter, then record a few seconds and play it back. Your audio never leaves your browser. - Online Voice Recorder (https://wispa.it/tools/voice-recorder/): Free online voice recorder. Record straight from your browser, play it back, and download a WAV. Nothing is uploaded or stored. Up to 10 minutes per take. ## Privacy and pricing wispa is a one-time €39 lifetime license with a free trial of up to 8,000 words (5,000 plus optional feedback) and needs no account. One license activates on up to 3 Macs. Speech-to-text can run entirely on your device with local Whisper models; cloud transcription (OpenAI or Groq) and the optional AI clean-up step are opt-in and use your own API key. Checkout is via Polar as Merchant of Record. The wispa website itself loads Google Analytics only after you accept the cookie banner. Full details: https://wispa.it/pricing/ and https://wispa.it/privacy/. ## Other languages This documentation is also available localized: Deutsch https://wispa.it/de/, Español https://wispa.it/es/, Français https://wispa.it/fr/.