Local-first voice dictation for macOS. Hold a shortcut, speak, and paste into any app. Native Rust, on-device speech recognition, and a Linux beta.
187
stars
200
commits
Rust
primary language
Sep 11, 2026
updated
Speak. It appears.
Local-first voice dictation, built in Rust.
Download for macOS · Website · Linux beta · TypeScript SDK · Contributing
HEX is local-first voice dictation for Apple silicon Macs running macOS 15 or newer. Hold a shortcut, speak, and release. HEX transcribes on your Mac and pastes the result into the app you are using.
The macOS app is available now. The Linux beta has a smaller feature set and requires a source build or Nix. See Privacy and local data for what stays on your device and what optional features send to a provider.
With Homebrew:
brew install --cask anomalyco/tap/hex
Then launch Hex from Applications and complete setup.
The cask installs the same signed app and keeps its built-in updater. Existing
DMG installations can keep using Check for Updates; Homebrew does not migrate
or forcibly replace another app already named Hex.app.
Or install manually:
Hex.app into Applications, then launch it.HEX checks for signed updates automatically. Use HEX > Check for Updates... to check immediately.
Download blocked? Alternative download: GitHub — Hex 2.1.17
contains the identical signed DMG for Apple silicon and macOS 15+. App releases
use app-v… tags; the repository also publishes separate TypeScript SDK releases.
If an older installation cannot check for updates on your network, install the
DMG manually over the existing Rust app.
On managed networks, ask IT to allow downloads.hex.kitlangton.dev for the app
and updates. Local model setup separately needs huggingface.co and its model
download CDN; optional Voice Commands needs download.moonshine.ai. A successful
app download does not establish that those model hosts are reachable. After
restoring access, retry model preparation in Settings (or Retry for Commands).
Coming from the original Swift app? Install the new app manually and complete setup. Settings and history are not transferred. Quit the old app before dictating in the new one so their shortcuts do not compete.
Hold Option, speak, then release. HEX transcribes and pastes at the current focus.
Settings let you change the shortcut, microphone, language, local model, recording behavior, feedback volume, launch-at-login behavior, and Dock visibility. Corrections in Modes fix names and preferred spellings before text is pasted; modes can also apply optional rewriting and text transformations.
Use menu bar > Transcription Model to switch between downloaded models without opening Settings. Each model remembers its last selected language and, for Whisper, recognition hints. Choose the language in Settings once, then switch between combinations such as English with Parakeet and French with Whisper from the menu. Manage Models… opens the full picker for downloads and language changes.
OpenCode V2 beta (opencode2) is optional. Ordinary
dictation does not require it.
If OpenCode rewriting fails, HEX keeps the corrected local transcript and still runs any selected text transformations. If that transformation stage fails, HEX keeps the text from before the stage, not partial transformation results. A failed Voice Action pastes nothing.
Voice commands are available on macOS and disabled by default. Enabling them starts continuous local command recognition and requires a separate local command model; HEX prompts to install it when needed. Dictation remains available while command recognition is off or asleep.
The Commands pane lists built-in phrases and filters them by global, application,
and Brave website context. Advanced users can create
~/.config/hex/hex.config.ts for custom TypeScript commands. Custom commands
require Bun; HEX provides an Edit Config action and a prompt
you can paste into a local coding agent.
Custom command files and dependencies are executable local code with your user permissions. Review agent changes and install only dependencies you trust.
To teach a coding agent how to configure personal commands and transformations, install the official HEX skill:
npx skills add anomalyco/hex --skill hex-personal-commands
HEX_RETAIN_DICTATION_AUDIO diagnostic setting can retain a
bounded number of owner-only WAV files.Review and redact diagnostics before sharing them.
| Symptom | Check |
|---|---|
| HEX appears to disappear | Open HEX from its menu-bar hexagon. If the status item could not start, HEX keeps its Dock icon visible. |
| The shortcut does nothing | Open HEX and verify Microphone and Input Monitoring access. |
| Recording works but text does not paste | Verify Accessibility access. |
| Transcription does not start | Confirm that the selected local model is installed. |
| OpenCode features fail | Verify the separate OpenCode installation and model provider. |
| Voice commands do not respond | Confirm Commands is enabled and voice control is awake. |
| Website context does not match | Website-aware modes and commands currently require Brave Browser. |
Permission changes may require quitting and reopening HEX.
Still stuck? Report a bug with your HEX version, operating system, and steps to reproduce. Review and redact any attachments; do not upload private dictation, recordings, or full logs.
Diagnostics are stored at:
~/Library/Application Support/voice-control/logs/~/.local/share/voice-control/logs/, or under XDG_DATA_HOMEThe Linux beta targets x86_64 Linux on i3/X11 and compatible wlroots Wayland compositors. It supports local hotkey dictation, a GPUI settings shell, and signed updates for direct installs. Native Wayland requires explicit input-device access and compositor support for clipboard, virtual-keyboard, and layer-shell protocols. Voice commands and meetings are not included.
Use the Linux installation guide to build from source until the first signed Linux release is published. It also describes the planned user-local installer, requirements, and limitations. For Nix/NixOS packaging and per-user autostart, see the Nix guide.
@kitlangton/hex brings local transcription to your
own application through Promise and optional Effect APIs. Your app supplies the
recorded audio; HEX handles model preparation and transcription.
The SDK is published on npm, but a bundled native helper is not yet published. You must supply a compatible HEX executable. Follow the SDK guide for requirements and examples.
Architecture, development commands, active plans, and historical research are
indexed in docs/README.md. Start with
CONTRIBUTING.md and AGENTS.md before changing
the native application. Report vulnerabilities through the process in
SECURITY.md.
HEX is available under the MIT License. Vendored icon licenses are listed in Third-Party Notices.
Rust
77.7%
HTML
7.8%
TypeScript
7.1%
Shell
2.9%
Swift
2.9%
Local-first voice dictation for macOS. Hold a shortcut, speak, and paste into any app. Native Rust, on-device speech recognition, and a Linux beta.
187
stars
200
commits
Rust
primary language
Sep 11, 2026
updated
Speak. It appears.
Local-first voice dictation, built in Rust.
Download for macOS · Website · Linux beta · TypeScript SDK · Contributing
HEX is local-first voice dictation for Apple silicon Macs running macOS 15 or newer. Hold a shortcut, speak, and release. HEX transcribes on your Mac and pastes the result into the app you are using.
The macOS app is available now. The Linux beta has a smaller feature set and requires a source build or Nix. See Privacy and local data for what stays on your device and what optional features send to a provider.
With Homebrew:
brew install --cask anomalyco/tap/hex
Then launch Hex from Applications and complete setup.
The cask installs the same signed app and keeps its built-in updater. Existing
DMG installations can keep using Check for Updates; Homebrew does not migrate
or forcibly replace another app already named Hex.app.
Or install manually:
Hex.app into Applications, then launch it.HEX checks for signed updates automatically. Use HEX > Check for Updates... to check immediately.
Download blocked? Alternative download: GitHub — Hex 2.1.17
contains the identical signed DMG for Apple silicon and macOS 15+. App releases
use app-v… tags; the repository also publishes separate TypeScript SDK releases.
If an older installation cannot check for updates on your network, install the
DMG manually over the existing Rust app.
On managed networks, ask IT to allow downloads.hex.kitlangton.dev for the app
and updates. Local model setup separately needs huggingface.co and its model
download CDN; optional Voice Commands needs download.moonshine.ai. A successful
app download does not establish that those model hosts are reachable. After
restoring access, retry model preparation in Settings (or Retry for Commands).
Coming from the original Swift app? Install the new app manually and complete setup. Settings and history are not transferred. Quit the old app before dictating in the new one so their shortcuts do not compete.
Hold Option, speak, then release. HEX transcribes and pastes at the current focus.
Settings let you change the shortcut, microphone, language, local model, recording behavior, feedback volume, launch-at-login behavior, and Dock visibility. Corrections in Modes fix names and preferred spellings before text is pasted; modes can also apply optional rewriting and text transformations.
Use menu bar > Transcription Model to switch between downloaded models without opening Settings. Each model remembers its last selected language and, for Whisper, recognition hints. Choose the language in Settings once, then switch between combinations such as English with Parakeet and French with Whisper from the menu. Manage Models… opens the full picker for downloads and language changes.
OpenCode V2 beta (opencode2) is optional. Ordinary
dictation does not require it.
If OpenCode rewriting fails, HEX keeps the corrected local transcript and still runs any selected text transformations. If that transformation stage fails, HEX keeps the text from before the stage, not partial transformation results. A failed Voice Action pastes nothing.
Voice commands are available on macOS and disabled by default. Enabling them starts continuous local command recognition and requires a separate local command model; HEX prompts to install it when needed. Dictation remains available while command recognition is off or asleep.
The Commands pane lists built-in phrases and filters them by global, application,
and Brave website context. Advanced users can create
~/.config/hex/hex.config.ts for custom TypeScript commands. Custom commands
require Bun; HEX provides an Edit Config action and a prompt
you can paste into a local coding agent.
Custom command files and dependencies are executable local code with your user permissions. Review agent changes and install only dependencies you trust.
To teach a coding agent how to configure personal commands and transformations, install the official HEX skill:
npx skills add anomalyco/hex --skill hex-personal-commands
HEX_RETAIN_DICTATION_AUDIO diagnostic setting can retain a
bounded number of owner-only WAV files.Review and redact diagnostics before sharing them.
| Symptom | Check |
|---|---|
| HEX appears to disappear | Open HEX from its menu-bar hexagon. If the status item could not start, HEX keeps its Dock icon visible. |
| The shortcut does nothing | Open HEX and verify Microphone and Input Monitoring access. |
| Recording works but text does not paste | Verify Accessibility access. |
| Transcription does not start | Confirm that the selected local model is installed. |
| OpenCode features fail | Verify the separate OpenCode installation and model provider. |
| Voice commands do not respond | Confirm Commands is enabled and voice control is awake. |
| Website context does not match | Website-aware modes and commands currently require Brave Browser. |
Permission changes may require quitting and reopening HEX.
Still stuck? Report a bug with your HEX version, operating system, and steps to reproduce. Review and redact any attachments; do not upload private dictation, recordings, or full logs.
Diagnostics are stored at:
~/Library/Application Support/voice-control/logs/~/.local/share/voice-control/logs/, or under XDG_DATA_HOMEThe Linux beta targets x86_64 Linux on i3/X11 and compatible wlroots Wayland compositors. It supports local hotkey dictation, a GPUI settings shell, and signed updates for direct installs. Native Wayland requires explicit input-device access and compositor support for clipboard, virtual-keyboard, and layer-shell protocols. Voice commands and meetings are not included.
Use the Linux installation guide to build from source until the first signed Linux release is published. It also describes the planned user-local installer, requirements, and limitations. For Nix/NixOS packaging and per-user autostart, see the Nix guide.
@kitlangton/hex brings local transcription to your
own application through Promise and optional Effect APIs. Your app supplies the
recorded audio; HEX handles model preparation and transcription.
The SDK is published on npm, but a bundled native helper is not yet published. You must supply a compatible HEX executable. Follow the SDK guide for requirements and examples.
Architecture, development commands, active plans, and historical research are
indexed in docs/README.md. Start with
CONTRIBUTING.md and AGENTS.md before changing
the native application. Report vulnerabilities through the process in
SECURITY.md.
HEX is available under the MIT License. Vendored icon licenses are listed in Third-Party Notices.
Rust
77.7%
HTML
7.8%
TypeScript
7.1%
Shell
2.9%
Swift
2.9%