How to use Hex for voice dictation

By

Hex is Anomaly's local voice dictation app for Mac, Windows, and Linux. Hold the shortcut, speak, and the transcript pastes into the focused text field.

~~~

Hex is a voice dictation app. You hold a shortcut, speak, and release. It transcribes on your computer and pastes the text into the app that has focus.

Anomaly publishes it. The same organization publishes OpenCode. The download page is copyright Anomaly, the GitHub repository is anomalyco/hex, and the AUR package describes it as Hex by Anomaly. The MIT license names Christopher Langton as the copyright holder.

On October 31, 2026, the OpenCode account posted that a stable release was available. The post called Hex fast, local, and available on Mac, Windows, and Linux.

This walkthrough follows Hex 3.1.2, checked on November 1, 2026, from the download page, the 3.1.2 release, and the docs in that tag. There is no price on the download page. The repository is MIT licensed.

The download page headline is “Speak. It appears.” Under that, it says local voice dictation for Mac: hold Option, say what you mean, and Hex pastes it where you are. The README describes the same gesture as hold a shortcut, speak, and release.

If you are choosing among Mac dictation apps, the comparison lives in the best voice to text apps for a Mac. Hex is one entry there. This page is the install and daily-use walkthrough.

How a Hex dictation becomes textYou hold the shortcut and speak. After you release, a local speech model transcribes the audio and Hex pastes the text into the focused app.Hold the shortcutSpeakReleaseLocal speech modelPaste into thefocused app

Install Hex

Stable is the current release. Dev is the newest build of the dev branch, and it updates itself from the dev channel. The commands below are the ones on anoma.ly/hex for the stable channel. The 3.1.2 docs still show installer URLs under https://anoma.ly/hex/files/. Both the site script and that older path install the stable release when the release service has one, and the newest dev build when it does not. HEX_INSTALL_CHANNEL=dev stays on the dev channel. HEX_INSTALL_CHANNEL=stable requires the stable release.

macOS

Hex for Mac is an Apple silicon app. It needs macOS 15 or later. The download table has no Intel build.

Download the signed DMG from the site, open it, and drag Hex.app into Applications. Or install the same signed app with Homebrew:

brew install --cask anomalyco/tap/hex

Launch Hex from Applications and finish setup. The cask leaves updates to Hex’s own updater. Homebrew does not replace another app that is already named Hex.app.

You can also check by hand with Hex > Check for Updates…. Each GitHub release has the same signed files if a download is blocked. App releases from 3.0.0 onward use v… tags. Through 2.3.1 they used app-v… tags.

If you still have the original Swift app, install this one manually and set it up again. Settings and history are not transferred. Quit the old app before you dictate, so the two shortcuts do not fight.

Windows

The Windows build is a beta for Windows 10 and 11, on x64 and ARM64. An x64 PC needs a 2013 or newer processor with AVX2, which means Intel Haswell, AMD Excavator, or later. On an older processor Hex shows a message and quits.

The download page offers an installer for x64 and one for ARM64. The PowerShell command on that page is:

powershell -ExecutionPolicy Bypass -Command "iwr https://anoma.ly/hex/install-windows.ps1 -OutFile install-windows.ps1; ./install-windows.ps1"

The installer needs no administrator rights. It installs for the current user, adds a Start menu entry, and opens Hex. The first run downloads a speech model.

The installer is not code-signed yet. SmartScreen may say it protected your PC. The Windows guide says to choose More info, then Run anyway.

x64 transcription uses the GPU through Vulkan, so you need a current NVIDIA, AMD, or Intel graphics driver. ARM64 transcribes on the CPU. Neither build needs the Visual C++ redistributable.

Linux

The Linux build is also a beta. It targets x86_64 and ARM64. An x86_64 machine needs the same AVX2 processor requirement as Windows. Published builds are made on Ubuntu 24.04 and need glibc 2.39 or later, which means Ubuntu 24.04, Debian 13, Fedora 40, current Arch, or newer.

The download page’s script installs a user-local copy that updates itself:

curl -fsSL https://anoma.ly/hex/install-linux.sh | sh

Read the script before you pipe it if you want to see what it does. It verifies the signed release feed, the file size, and the SHA-256. It does not need root. It puts hex on ~/.local/bin, adds a desktop launcher, and can start at login.

On a machine with glibc 2.39, the 3.1.2 x64 executable from the GitHub release printed this:

hex 3.1.2

That was hex --version. hex status while the app is not running prints hex: Hex is not running; run hex start and exits 3. The app is a desktop dictation tool. Those commands do not start a microphone session by themselves, and a headless machine is not a useful place to try a hold-to-talk shortcut.

Debian and Ubuntu can install the .deb. Fedora and openSUSE can install the .rpm. The site’s x64 Debian command is:

curl -fLo /tmp/hex.deb https://anoma.ly/hex/download/linux-x64-deb && sudo apt install /tmp/hex.deb

The ARM64 package is linux-arm64-deb. Fedora uses linux-x64-rpm or linux-arm64-rpm, then sudo dnf install on the downloaded file. openSUSE uses zypper install on the same .rpm. There is no apt or dnf repository. When a new stable release exists, Settings shows the command that installs that package. Hex does not replace a package-installed executable by itself.

Arch can use the AUR package. The download page’s command, once the channel is stable, is:

yay -S hex-bin

The AUR listing for hex-bin was updated on November 1, 2026 and points at the 3.1.2 Linux binaries. The Linux guide inside the 3.1.2 tag still says that package is not on the AUR yet. The package page is the later fact. It is not the official hex package, which is a hex dump tool and installs hx.

Nix is the other package tab on the download page:

nix profile install github:anomalyco/hex

The Nix guide in the same tag is more specific. The flake packages Hex for x86_64-linux. In-app updates do not replace a Nix install. You update the flake input and rebuild. The guide also says its Wayland contract does not cover GNOME and KDE. Those desktops are covered by the Linux guide’s shortcut section instead.

The first launch downloads a speech model. You can also run hex model install after the binary is on your path.

Permissions

macOS

Setup asks for two permissions.

Microphone lets Hex record while you dictate.

Accessibility lets Hex see its shortcut in every app and paste into the foreground app. Drag the Hex tile into the Accessibility list. Hex does not need Input Monitoring.

If you use Annotate, macOS asks for Screen Recording the first time you start it. Nothing is recorded, and that permission is not requested, until you use Annotate.

A permission change can require quitting Hex and opening it again. The bundle id is anomaly.hex. A Mac that still has the older com.kitlangton.hex2 entries, from releases through 2.3.1, is looking at the previous app. Remove those old rows and allow Microphone and Accessibility again for the new one.

Windows

The Windows guide does not document a separate Privacy settings click-path. It says the microphone records only while you dictate, and that the shortcut works system-wide when Settings reads Enabled.

The installer warning is SmartScreen, covered above, because the build is not code-signed yet.

Linux

The Linux guide does not document a system microphone prompt like macOS Accessibility. Audio goes through ALSA, including PipeWire with ALSA compatibility. The window still needs a Vulkan driver even when transcription falls back to the CPU. vulkan-icd-loader alone is not a driver.

Shortcuts are the permission that matters. On X11, Hex grabs the shortcut you record. On Wayland desktops with the GlobalShortcuts portal, including GNOME and KDE, the desktop grants, reassigns, or refuses the shortcut. Settings lists the result under Desktop shortcuts.

Paste on wlroots compositors uses wtype and the virtual keyboard protocol. On KDE and GNOME it uses the RemoteDesktop portal. The first paste there asks you to allow remote control. Install wl-clipboard as well. If paste cannot be delivered, the transcript stays on the clipboard for Ctrl+V.

Do not add your user to the input group to make shortcuts work. That was the 2.3.1 Wayland approach. Current builds use the portal or a keybinding that runs hex.

The hold-to-talk shortcut

The shortcut is not the same chord on every system. The download page and the 3.1.2 docs agree on these defaults.

SystemDefaultWhat hold does
MacOptionHold Option, speak, release. Hex pastes at the focus.
WindowsCtrl+SpaceHold both keys, speak, release Space.
LinuxAlt+SpaceHold Alt+Space, speak, release.
GNOME, new setupsCtrl+Alt+SpaceGNOME keeps Alt+Space for the window menu, so Hex starts here instead.

On a Mac, double-tap Option to keep recording, then press Option again to finish. A tap under 300 ms records nothing. Escape never cancels. Every dictation finishes and pastes. Option-Shift-V pastes the last completed dictation again.

On Windows, Hold is the mode those keys use out of the box. Toggle is also in Settings: press Ctrl+Space to start and press it again to finish. In Hold mode, tap the shortcut twice within 300 ms to lock recording, then press it again to finish. Paste last is Ctrl+Alt+V. Escape never cancels. Holding a modifier by itself does nothing. Hex consumes Ctrl+Space while the chord matches, so other apps do not see it. Rebind it if you need that chord elsewhere. Share dictation shortcut with other apps, under Advanced, lets another app see the same key, which can also fire that app’s own binding.

On Linux, double-tap the shortcut to keep recording, then press the same chord again to finish. Escape never cancels. Ctrl+Alt+V pastes the last dictation. Toggle mode starts and stops with single presses. Double-tap only waits for two complete taps before it records.

Hyprland accepts the portal shortcut without a key, so nothing happens until you bind one in the Hyprland config. Sway and other Wayland setups without the portal need the same kind of binding. The Linux guide shows hold-to-talk on F9 like this:

bindsym F9 exec hex dictation start
bindsym --release F9 exec hex dictation stop

GNOME 46 and older, including Ubuntu 24.04, have no shortcuts portal. Settings can write custom keyboard shortcuts that run hex dictation toggle, hex paste-last, and, if Annotate is on, hex annotate toggle. Those custom shortcuts fire on the key press only, so dictation toggles.

You can change the shortcut, the microphone, the language, and the model in Settings. On a Mac, the menu bar item Transcription Model switches downloaded models without opening Settings.

Models and settings

The first run downloads a speech model. After that, ordinary dictation does not need a network connection for the transcription itself. Model downloads come from Hugging Face and its CDN. App updates come from anoma.ly.

An English system starts on Parakeet Unified English. That is the catalog default in 3.1.2. You can switch models later. Each model remembers the language you last selected for it. The README’s example is English with Parakeet and French with Whisper, switched from the menu bar.

These are the built-in models in the 3.1.2 catalog. Coverage is the label Hex stores on each one. Streaming means the model can transcribe while you hold the shortcut, on a GPU.

ModelCoverage in the catalogStreams
Parakeet Unified EnglishEnglishYes
Parakeet v2EnglishNo
Parakeet v325 languagesNo
Whisper large-v3-turbo100 languagesNo
Qwen3-ASR 0.6B30 languagesNo
QwenCleo-ASR 1.7BEgyptian Arabic, with English termsNo
ivrit.ai Whisper large-v3-turboHebrewNo
SenseVoice SmallChinese, Cantonese, English, Japanese, KoreanNo
Cohere Transcribe14 languagesNo
Underdog Bark 3.0 ProEnglishNo
Underdog Bark 3.0 CleanEnglish, without filler wordsNo
Parakeet Ultra25 languagesNo
Nemotron 3.5 ASR27 languagesYes
Apple SpeechSystem localesNo

Parakeet Ultra sits behind its own Labs toggle. Apple Speech is ready only on macOS. On Windows and Linux that runtime is off.

With Parakeet Unified English on a GPU, Hex streams audio into the model while the shortcut is held. macOS uses Metal. Windows x64 and Linux use Vulkan. Release then only has to finish the last one or two seconds. Windows ARM64 and other CPU devices transcribe the whole clip. Nemotron 3.5 ASR is the other streaming model in this catalog. If a stream fails, Hex transcribes the whole recording instead.

You can also point Hex at a GGUF file, or at a speech model already in the Hugging Face cache on that computer. Catalog models are the ones Hex pins and tests. A file you add is marked as not tested by Hex. Architectures it will consider are Parakeet, Whisper, Qwen3-ASR, Cohere, and SenseVoice, with F32, F16, or Q8_0 tensors.

Settings also cover recording behavior, feedback volume, launch at login, and, on a Mac, Dock visibility. Corrections in Modes fix names and spellings before the paste. Modes can add optional rewriting and text transformations, per app or per site.

Labs, at the bottom of the sidebar, holds experimental features. The 3.1.1 notes say the toggles added there stay off until you turn them on. hex labs list shows the switches in the running app. A dev-branch feature map mixes unfinished work with shipped behavior, so this page does not copy that list.

Custom transformations live in ~/.config/hex/hex.config.ts. Hex runs that file in an embedded engine. The script gets no filesystem, network, or process access. hex commands init creates a starter, and hex commands check reports what it registered.

Dictate a prompt to a coding agent

Hex does not know that the focused app is a coding agent. It pastes into the text field that has focus. That is the whole workflow, in Cursor chat, in a terminal TUI, or in any other box.

Click the prompt. Hold the shortcut for your system. Speak one task. Release. Read the text. Fix paths and product names. Then send.

Say the task, the boundary, and how you will check it. Type a path if the transcript mangled it. src/pages/reading-list.astro is safer from the keyboard. The same check is in dictating coding prompts on a Mac.

This is the kind of thing worth speaking. The first block is the words. The second is what should be on screen before you press Enter.

Fix the empty heading on the reading list page.
Only that bug.
Add a test for an article with no title.
Run the tests and show me the changed files.
Fix the empty heading on the reading list page.
Change only that behavior.
Add a test for an article with no title.
Run the tests and show the changed files.

Don’t dictate a token, a password, or the contents of .env. A local transcript still lands in the prompt, and the agent may send that prompt to a hosted model.

OpenCode

Ordinary dictation does not require OpenCode. Hex never launches it. Optional rewriting uses an OpenCode service that is already running. If that service is missing, Hex says OpenCode isn’t running.

Turn the OpenCode step on in Modes when you want a rewrite before the paste. Hex then sends the transcript, the foreground application, and, in Brave, the website hostname to the model provider you configured. Website-aware modes currently require Brave. If the rewrite fails, Hex keeps the corrected local transcript and still runs any text transformations you selected.

On a Mac, the history command can filter retained transcripts. This is the example from the README:

/Applications/Hex.app/Contents/MacOS/hex history --since 3d --app 'OpenCode Beta' --grep problems --json

That query does not start the microphone. The app has to be running.

Claude Code

Claude Code has its own dictation, documented in the voice to text guide. /voice holds Space to record, on a machine with a microphone, and Anthropic transcribes that audio. Hex is a different path. You focus the Claude Code prompt and use Hex’s shortcut, which is Option on a Mac, not Space.

The terminal has to be the focused app, and the cursor has to be in the prompt. Hex then pastes there the same way it pastes anywhere else.

Codex

In the ChatGPT desktop app, Dictate fills the composer and you edit the text before you send. That control is separate from Hex. The Codex guide walks the rest of the desktop app.

Hex can fill the same composer when it is focused. Hold the Hex shortcut, speak the task, release, and read the result before you send. ChatGPT Voice, the live conversation, is a different feature and bills differently. The voice to text guide has those prices.

Cursor

Cursor’s own voice controls are also in that guide. The prompting docs say to click the microphone in the chat input. The shortcut list includes Command-Shift-Space as Toggle Voice Mode. In the Agents Window, Cursor 3.1 says you press and hold Control-M.

Those chords are not Hex’s Option key on a Mac, so both can be installed. Use Hex when you want the same shortcut in the editor, the terminal, and the chat. Use Cursor’s microphone when you are already in its input and you want its transcription.

How I would use it

I have not installed Hex on my machines. The commands and settings above come from the 3.1.2 docs. The 3.1.2 Linux executable prints hex 3.1.2 for --version.

If I were dictating prompts, I would leave OpenCode rewriting off and keep Parakeet Unified English for English. I would speak one task, then type any path the transcript missed. I would not point it at a chat that auto-sends on Enter until I had read the line.

Privacy

The README’s privacy section is specific.

Speech transcription runs locally. Ordinary dictation does not require OpenCode or a cloud transcription service.

Hex does not save dictation audio by default. History keeps successfully pasted text for seven days by default, including the local transcript, the final text, and limited app and timing metadata. It does not store audio, full browser URLs, or window titles. Retention is capped at 10,000 entries and 16 MiB of raw plus final text. Oldest entries go first.

History > Keep: Off stops new entries. Clear all removes the ones you have. Turning retention off does not delete existing entries, and it does not turn off diagnostic logs.

An environment variable, HEX_RETAIN_DICTATION_AUDIO, can keep a bounded number of WAV files for diagnostics. Local logs can contain transcript text, recognized command speech, foreground app names, and Brave URLs. Hex does not upload those logs.

OpenCode features send the transcript and the context described above to your configured model provider. Model installs and app updates need the network.

Where a Hex transcript can goThe speech model runs locally and the paste stays on the machine. OpenCode rewriting is optional and sends the transcript to the configured model provider.OffOnMicrophoneLocal speech modelPaste into thefocused appOpenCode rewrite on?Model provider

Tips

Speak one task. A wandering sentence becomes a wandering prompt.

Pause between sentences if you want them as separate lines. The docs do not say that the words “new line” insert a break in the default model. A 3.1.0 note moved spoken formatting, including “new line” and “new paragraph”, into Labs, off until you turn it on. Check Settings › Labs on your build before you rely on that phrase.

Add names Hex keeps missing. Modes corrections are the README’s path. The CLI also has hex vocabulary to list, add, and remove terms, against the running app.

On Linux, pick a dedicated microphone if you use Bluetooth earbuds. Recording from the headset switches it into a hands-free profile and the audio quality drops. The Linux guide recommends the laptop microphone or a USB microphone for input, and the earbuds for output only.

Leave Annotate alone until you want it. It is on by default on macOS and Linux, and not on Windows yet. Its key is Option-Shift-S on a Mac and F9 on Linux. While it records, the dictation shortcut does nothing.

If you manage updates yourself, the README documents DisableUpdates for the anomaly.hex preference domain on macOS, and a DWORD of the same name under HKLM\SOFTWARE\Policies\Anomaly\Hex or HKCU on Windows.

Troubleshooting

The README ships this table.

SymptomCheck
Hex appears to disappearOpen Hex from its menu-bar hexagon. If the status item could not start, Hex keeps its Dock icon visible.
The shortcut does nothingOpen Hex and verify Microphone and Accessibility access.
Recording works but text does not pasteVerify Accessibility access.
Transcription does not startConfirm that the selected local model is installed.
OpenCode features failVerify the separate OpenCode installation and model provider.
Website context does not matchWebsite-aware modes currently require Brave Browser.

On Linux, a shortcut that does nothing is often the desktop, not the microphone. GNOME may have refused Alt+Space and be waiting on Ctrl+Alt+Space. Hyprland needs a bind in your config. KDE can keep an older binding after you record a new one. Settings shows what the portal granted.

If the paste never arrives, look at wl-clipboard and wtype, or the RemoteDesktop permission on KDE and GNOME. The transcript should still be on the clipboard.

hex devices lists ALSA inputs. On a machine with no real microphone it can print a dummy device instead of a headset. That output is the device name, not a Hex error string.

Logs are in these folders:

  • macOS: ~/Library/Application Support/hex/logs/
  • Windows: %APPDATA%\hex\logs\
  • Linux: ~/.local/share/hex/logs/, or under XDG_DATA_HOME

Discord on Windows can show “Playing HEX: Shards of Fate” while Hex is running, because it matches hex.exe to that game. The Windows guide says to hide the entry under Discord’s Settings › Registered Games, or turn activity sharing off. Hex keeps working either way.

Report a bug with the version, the operating system, and the steps. The issue template is on the GitHub repository. Redact transcripts and logs before you attach them.

Hex and the other dictation apps

Prices for the other apps were checked on October 30, 2026, in the Mac voice to text comparison, against each company’s site. Hex was checked on November 1, 2026. Windows voice typing is from Microsoft’s voice typing page.

AppPlatformsAudioPrice
HexApple silicon Mac on macOS 15+, Windows 10 and 11, LinuxOn the machine. Optional OpenCode rewrite sends the transcript to your model providerNo price on the download page. MIT license
Superwhisper FreeMac, Windows, iPhone, AndroidOn device with local Whisper$0 for unlimited local dictation
Superwhisper ProSame devices, one licenseLocal or cloud$8.49/month, $84.99/year, or $249.99 once
MacWhisperMac. iPhone and iPad use a different appLocal models. Cloud only if you add a key€0, or €64 once for Pro
Wispr FlowMac, Windows, iOS, AndroidWispr’s cloud$0 with weekly word caps. Pro is $15/user/month or $144/user/year
macOS DictationMacOn device when Keyboard settings say soIncluded with macOS
Windows voice typingWindows 10 and 11Online, through Azure Speech servicesIncluded with Windows

Superwhisper’s free plan is the one that stays on the device. Pro adds cloud models and AI modes that rewrite what you said. Its hold key starts as Right Command, and Option-Space toggles recording.

MacWhisper is aimed at files, meetings, and dictation on a Mac. The €64 license is the direct download. The Mac App Store app is a different product.

Wispr Flow transcribes in Wispr’s cloud and needs a network connection. That stays true if you opt out of training. The free plan meters words per week.

macOS Dictation is already installed. You turn it on under Keyboard. The microphone key or your chosen shortcut starts it. Holding the microphone key calls Siri when Siri is on. Read the on-device line in Dictation settings before you dictate anything private.

Windows voice typing needs an internet connection, a microphone, and the cursor in a text box. Windows key+H starts it on a hardware keyboard. You stop by saying “Stop listening” or by pressing the microphone button on its menu.

Handy, which the Mac comparison uses as the daily local app, is the closest cousin. It is also free, local, and cross-platform. Hex is the one tied to Anomaly and to an optional OpenCode rewrite. I have not run them side by side.

FAQ

What is Hex?

Hex is a desktop dictation app from Anomaly. You hold a shortcut, speak, and it pastes a transcript into the focused app. Version 3.1.2 is the stable release checked for this page.

Is Hex free?

The download page does not list a price. The GitHub repository is MIT licensed, which allows use without a license fee. There is no subscription in the install docs.

Does Hex work on Linux and Windows?

Yes, as betas, beside the Apple silicon Mac app. Windows is 10 and 11, x64 and ARM64. Linux is x86_64 and ARM64, with glibc 2.39 or later. Intel Macs are not in the download table.

Does Hex send my voice to the cloud?

Speech transcription runs on the machine. The first model download and later app updates use the network. If you turn on OpenCode rewriting, that feature sends the transcript to the model provider you configured. The audio of ordinary dictation is not saved by default.

What is the Hex keyboard shortcut?

Hold Option on a Mac. Hold Ctrl+Space on Windows. Hold Alt+Space on Linux, or Ctrl+Alt+Space on a new GNOME setup. You can change the chord in Settings.

Can I dictate into Claude Code, Codex, or Cursor?

Yes, whenever their prompt field is focused. Hex pastes text. It does not replace Claude Code’s /voice, Codex Dictate, or Cursor’s microphone button. Those are separate controls, covered in the voice to text guide.

Tagged: AI · All topics

Want me to talk about your product? You can sponsor this site.

~~~

Related posts about ai: