Hex voice dictation: a free, local way to talk to your coding agent
Hex, Anomaly's free MIT-licensed dictation app with on-device speech recognition: install on Mac, Windows, Linux, alternatives compared, and a Linux engine test.
Hex is a free voice dictation app from Anomaly, the team behind opencode. You hold a key, talk, let go, and the text is pasted into whatever app has focus. Speech recognition runs on your own machine. It is MIT-licensed, the Mac build is the main target, and Windows and Linux builds are labeled beta.
It is for developers who write long prompts to coding agents and are tired of typing them. Our verdict is simple. If you are on an Apple silicon Mac and want local, free dictation, Hex is worth installing next to whatever agent you use. On Windows and Linux, treat it as a beta. We did not test the Mac app. We did run the Linux build’s transcription engine from the command line, and the results are below, labeled our measurements. Everything else is a project claim or a quote, with a link.
What Hex is
The README describes Hex as local-first voice dictation for Apple silicon Macs on macOS 15 or newer, with a Windows beta (x64 and ARM64) and a Linux beta (x86_64 on X11 and wlroots Wayland). The app is written in Rust. Speech recognition runs through transcribe.cpp, Anomaly’s own ggml-based engine, which its README says covers “16+ model families”.
The basic flow on a Mac:
- Hold Option, speak, release. Hex pastes the text where your cursor is.
- Double-tap Option to keep recording hands-free.
- Option-Shift-V pastes the last dictation again.
- A tap shorter than 300 ms records nothing, so a stray key press does no harm.
The README says ordinary dictation “does not require OpenCode or a cloud transcription service.” Model files download from huggingface.co the first time you pick a model.
Hex is young in its current form. The repo was created on July 17, 2026, but co-author Kit Langton says he “first made Hex 2 years ago, and the team has been using it for 10 months or so.” The original was a Swift app. v3.0.0 (October 31) starts fresh: it imports nothing from 2.x, and 2.3.1 does not auto-update to it. The current release is v3.1.1, published November 1. At the time of writing the repo has about 2.6k stars.
Why opencode is promoting it
opencode announced the stable release on October 31 at 23:39 (UTC+8). The post had about 7.2k likes and 705k views when we read it:
no matter what agent you’re using, your voice is the best way to talk to them and hex is the best way to use your voice: - fast - runs locally - works on mac, windows, linux
Dax, one of the authors, followed up two minutes later: “this is my most used app. more than opencode. using it with your agent is a gateway drug… that’s why hex is standalone, it works across your whole computer.” In another reply he wrote that “the moment i started using it in opencode i wanted to use it everywhere.”
The pitch, then, is agent-agnostic. Hex pastes into any focused text field, so it should work with opencode, Claude Code in a terminal, or Cursor’s chat box the same way it works in a text editor. The team’s posts only describe opencode use. Using it with Claude Code or Cursor is our suggestion, not something we or the authors have documented.
Dax also says that “hex was fully vibe coded. the app. the landing page. the animations. sound effects were ai generated. issues people open are fixed by opencode.” That is his description, and we can’t verify how much human review went in. The README does say outside pull requests aren’t accepted, and that the team credits your analysis in the fix instead.
Features that matter for AI coding
Transforms. Dax posted on October 30 (UTC+8) that “hex has transforms now so i can voice prompt and it’ll go in all lowercase so you can’t even tell that this was voice prompted,” and that you can write a custom function. In the repo these live in a hex.config.ts file. There is also an agent skill to set them up:
npx skills add anomalyco/hex --skill hex-personal-commands
Vocabulary. v3.0.0 added a Vocabulary list for names and terms the model gets wrong. Our test below shows why a developer would want it.
OpenCode rewrite. Hex can pass a transcript through a model via OpenCode to clean it up. Since v3.1.0, Hex only talks to an OpenCode instance that is already running and never starts one. This is the one feature that is not local. The README says it sends the transcript, the foreground app name, and, for Brave, the site hostname to whatever model provider you configured.
Annotate. Record your screen, draw on it, and narrate, then send the result to an OpenCode session. It is on the Dev channel, per the v3.0.0 notes.
CLI and MCP. v3.0.0 added a hex CLI. On a Mac you can search your dictation history, for example hex history --since 3d --app 'OpenCode Beta' --grep problems --json. Since app-v2.2.0, hex mcp serves recorded meeting transcripts to agents over MCP. Our Linux build describes it as read-only. Meetings are a macOS beta feature behind Labs.
Install
macOS (Apple silicon, macOS 15+). The Homebrew cask is at version 3.1.1 and requires arm64 and Sequoia:
brew install --cask anomalyco/tap/hex
After installing, grant Microphone and Accessibility. The README says Hex does not need Input Monitoring.
Windows 10/11 (beta): download the x64 or ARM64 installer. It is not code-signed yet, so SmartScreen may warn you. The default shortcut is Ctrl+Space.
Linux (beta, x86_64 Arch with glibc 2.44 or later):
curl -fsSL https://anoma.ly/hex/files/install-linux.sh | sh
The README notes this script currently installs the newest dev build. The Linux guide also lists .deb and .rpm packages, which need glibc 2.39 or later. On x86_64, Windows and Linux builds need a CPU with AVX2 (Intel Haswell, AMD Excavator, or later).
On Linux, Omarchy now offers Hex as a dictation option next to Superwhisper and Voxtype. DHH announced it on November 1 at 05:29 (UTC+8). The PR notes that terminals ignored Hex’s simulated Ctrl+V paste under wtype, so Omarchy calls hex dictation stop --print and types the text itself. If you dictate into a terminal agent on Wayland, check that paste works before you rely on it.
Which model to pick
Hex ships several models and marks a default per language in its model list:
| Language | Recommended | Other picks |
|---|---|---|
| English | Parakeet Unified English | Cohere Transcribe (“Most accurate”) |
| Chinese | Qwen3-ASR 0.6B | SenseVoice Small (“Fastest”), Whisper large-v3-turbo (for Vocabulary) |
Two speed claims come from the release notes. app-v2.3.0 says streaming means “a 2-minute dictation finishes in 0.1 s instead of 0.9 s on an RTX 5070 Ti and 2.8 s on a MacBook Air M4.” v3.0.0 says “local models use about 160 MB of memory instead of about 900 MB.” Both are project claims. Streaming needs Vulkan on Windows and Linux.
What we saw on Linux
We have not used Hex on a Mac. On November 1 we downloaded the Linux x64 binary (it reports hex 3.1.1) and used its hex model transcribe command, which runs a WAV file through an installed model without the GUI. The box was a Debian 13 VM with 8 vCPUs, 15 GB of RAM, and no GPU, so this is CPU-only and does not include streaming, hotkeys, or paste.
The test clips were one 11-second public sample (jfk.wav from whisper.cpp) and two 9-second coding prompts we generated with a text-to-speech voice. Synthetic speech is cleaner than a real person at a desk, so read these as a best case.
The English prompt was: “Refactor the useEffect hook in UserList.tsx so it cancels the fetch on unmount, then run pnpm test and fix any failing Vitest snapshots.”
Our measurements (wall time per run includes process start and model load; three runs each, all three runs produced the same text):
| Model | Clip | Time per run | Output errors |
|---|---|---|---|
| Parakeet Unified English | jfk.wav | 1.3 to 2.4 s | none |
| Parakeet Unified English | EN prompt | 0.9 to 1.1 s | “userlist.tsx”, “PNPM”, “VDIST” for Vitest |
| Whisper large-v3-turbo | EN prompt | 11.5 to 12.3 s | “useEffectHookingUserList.tsx”, “VDIST” |
| Qwen3-ASR 0.6B | EN prompt | 2.2 to 2.8 s | “use effect”, “onUnmount”, “vetest” |
| Qwen3-ASR 0.6B | ZH prompt | 3.0 to 4.1 s | “user list”, “use effect” split into words |
| Whisper large-v3-turbo | ZH prompt | 11.4 to 13.7 s | “Usefact”, “PMPM Test”, no punctuation |
On this CPU, the recommended models were several times faster than Whisper and made fewer mistakes. None of them got “Vitest” right, and camel-case identifiers like UserList and useEffect often came out split or lowercased. That is what the Vocabulary list and transforms are for, and we did not test either. Peak memory of a one-shot CLI run, including model load, was about 1.0 to 1.3 GB. That is a different measurement from the 160 MB figure above, so don’t compare them directly. Model downloads were 731 MB (Parakeet), 850 MB (Qwen3-ASR), and 886 MB (Whisper). The exact commands and output are in our evidence notes.
Hex vs other dictation apps
| Hex | macOS Dictation | Wispr Flow | Superwhisper | MacWhisper | Handy | |
|---|---|---|---|---|---|---|
| Price | Free, MIT | Built in | Free plan; Pro $15/user/mo, or $12 billed annually (pricing) | Free tier and Pro (site) | One-time payment (store) | Free, MIT (repo) |
| Where speech is processed | On device | On device when the Keyboard setting says so (Apple) | “Transcription always occurs on the cloud” (data controls) | Works offline, per its site | “All transcription is done on your device” | Offline |
| Platforms | macOS; Windows and Linux beta | macOS | Mac, Windows, iOS, Android | macOS, Windows, iOS, Android | macOS 14+ | Windows, macOS, Linux |
| Open source | Yes | No | No | No | No | Yes |
| Agent-related extras | opencode rewrite, Annotate, CLI, MCP for meetings | None | n/a | Markets use with Claude Code and Cursor | Pro has a CLI for AI agents | n/a |
We did not confirm Superwhisper’s or MacWhisper’s current prices on an official page, so we left them out. Hex’s own co-author is friendly about the closest open-source rival: “Handy is great too! I prefer Hex for subtle reasons. They’re both free,” Kit Langton wrote.
Privacy
From the README: transcription is local and audio is not saved by default. History keeps text for 7 days by default and never stores audio, full URLs, or window titles. Local logs can contain transcript text and are not uploaded. Anything that goes through OpenCode is sent to the model provider you configured. Dictated text is marked as transient so clipboard managers can skip it (app-v2.2.0).
FAQ
Is Hex free? Yes. It is MIT-licensed, Kit Langton calls it free, and we found no paid tier on anoma.ly/hex.
Does Hex need opencode? No. Plain dictation works without it. opencode is only used for the optional rewrite and Annotate features, and only if it’s already running.
Does it work offline? Transcription runs locally. You need a network connection once to download a model from huggingface.co.
Can I use it with Claude Code or Cursor? Hex pastes into the focused app, so it should. We haven’t tested it, and the authors’ posts only mention opencode. On Wayland terminals, see the Omarchy note above.
Does it support Chinese? Yes. Qwen3-ASR 0.6B is the recommended Chinese model, and the interface has been available in Chinese since app-v2.3.0.
Does it run on Intel Macs? No. The Mac build requires Apple silicon and macOS 15 or newer.
Related posts
More in AI Tools →Ollama: An Introduction and Getting-Started Guide
An introduction to Ollama, exploring how to run open AI models locally or in the cloud with complete privacy, developer APIs, and integrations.
whisper.cpp: High-Performance Speech Recognition in C and C++
An introductory guide to whisper.cpp, a lightweight C/C++ port of OpenAI's Whisper model for running speech transcription locally across diverse devices.
nsh (Native Shell): Longbridge's Rust cross-platform UI, explained for frontend devs
Longbridge's nsh (Native Shell) for frontend devs: TSX with signals, native views, hot reload, AI-agent tooling, and a comparison with React Native, Flutter and Tauri.