anomalyco/hex
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.
About anomalyco/hex
anomalyco/hex is an open-source project on GitHub, mainly written in Rust. 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. It currently holds 1,105 stars and 92 forks with 14 open issues, and was last pushed on 2026-10-30 (repository created 2026-07-17).
Project Overview
Git Homed tracks it on the Today's Trending board, currently at rank #33 with 286 new stars today.
GitHub Repository Details
README
Hex
Speak. It appears.
Local-first voice dictation, built in Rust.
Download for Mac, Windows, or Linux · Windows beta · 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.
- On-device transcription. Download a local speech model during setup;
- Your words, your way. Choose a shortcut, language, and model. Use Modes for
The macOS app is available now. The Windows beta covers x64 and ARM64 PCs, and the Linux beta covers x86_64 X11 and compatible wlroots Wayland compositors. See Privacy and local data for what stays on your device and what optional features send to a provider.
Install Hex
Downloads
Each link serves the current release: the newest dev build (published on
every change to dev, and updating itself from the Dev channel) until Hex's
first stable release, then the stable release.
| Platform | Download | | --- | --- | | macOS (Apple silicon) | DMG | | Windows x64 | Installer | | Windows ARM64 | Installer | | Linux x86_64 | Executable | | Linux x86_64 (Debian, Ubuntu) | .deb | | Linux x86_64 (Fedora, openSUSE) | .rpm | | Linux ARM64 | Executable | | Linux ARM64 (Debian, Ubuntu) | .deb | | Linux ARM64 (Fedora, openSUSE) | .rpm |
Updater files: macOS ZIP,
Windows x64 EXE,
Windows ARM64 EXE.
Windows links work once Windows signing is configured. On Linux you can also
use yay -S hex-bin or the install script below.
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:
1. Download the signed DMG and open it.
2. Drag Hex.app into Applications, then launch it.
3. Complete the permission and model steps in setup.
- Microphone lets Hex record while you dictate.
- Accessibility lets Hex notice its shortcut in every app and paste into the foreground app. Drag the Hex tile into the list. Hex does not need Input Monitoring.
- Transcription model downloads the speech model that runs locally.
Organizations that manage app versions themselves can turn off in-app updates,
including manual checks, with the DisableUpdates Boolean in the
anomaly.hex preference domain. Deploy it in a configuration profile
(payload type anomaly.hex, key DisableUpdates, value true), or for a
single Mac run defaults write anomaly.hex DisableUpdates -bool true. On
Windows, set the DWORD DisableUpdates to 1 under
HKLM\SOFTWARE\Policies\Anomaly\Hex (Group Policy) or the same path in HKCU.
Relaunch Hex to apply it. Model downloads still work. Releases through 2.3.1
used the com.kitlangton.hex2 domain; profiles for those keep applying only to them.
Download blocked? Each app release on GitHub Releases
has the identical signed files. App releases use v… tags (app-v… through
2.3.1); 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 anoma.ly: Hex downloads and updates
from the Anomaly release service at https://anoma.ly/release (releases up to
2.3.1 use https://anoma.ly/hex/files). Local model setup separately needs huggingface.co and its model
download CDN. A successful
app download does not establish that those model hosts are reachable. After
restoring access, retry model preparation in Settings.
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.
Dictate Anywhere
Hold Option, speak, then release. Hex transcribes and pastes at the current focus.
- Double-tap Option to keep recording; press Option again to finish.
- Press Escape to cancel. While recording, Escape discards the recording; after
- Press Option-Shift-V to paste the last completed dictation again.
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.
Optional OpenCode Features
OpenCode V2 beta (opencode2) is optional. Ordinary
dictation does not require it.
- Post-processing: enable OpenCode in Modes to rewrite a transcript before
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.
Annotate
Annotate records your screen while you draw on it and talk, then hands the recording to an agent: its keyframes, your drawing, and a transcript of what you said. It is on by default on macOS and Linux (Settings › Annotate; not on Windows yet). Nothing is recorded, and no screen permission is asked for, until you first use it.
- One key: Option-Shift-S on macOS, F9 on Linux. Tap it to start
- The bar: the recording bar at the top shows the timer, a pen (click it
- Paste or send: when it stops, the annotation is on your clipboard and
hex annotate list|show|send(alsohex capture …) reads and sends from the
Custom Transformations
Advanced users can create ~/.config/hex/hex.config.ts for deterministic
dictation transformations, written in TypeScript or JavaScript. Hex runs the
config itself in an embedded JavaScript engine and reloads it on save; nothing
else needs installing. hex commands init creates the starter workspace, and
hex commands check reports what the config registers or why it fails.
Config scripts get no filesystem, network, or process access.
To teach a coding agent how to configure personal transformations, install the official Hex skill:
npx skills add anomalyco/hex --skill hex-personal-commands
The skill targets current Hex: dev builds now, and the next stable release.
On Hex 2.3.1, install the matching skill with
npx skills add anomalyco/hex#app-v2.3.1 --skill hex-personal-commands, or
switch to the dev build.
Read Transcripts From The CLI
The macOS release binary provides read-only queries while the app runs:
/Applications/Hex.app/Contents/MacOS/hex history --since 3d --app 'OpenCode Beta' --grep problems --json
/Applications/Hex.app/Contents/MacOS/hex meetings list --since 7d --json
/Applications/Hex.app/Contents/MacOS/hex meetings show latest --md
/Applications/Hex.app/Contents/MacOS/hex meetings search 'release schedule'
History supports --until, --limit, --raw, and --oldest-first; queries
respect the saved retention window. Meetings share the read-only MCP query
layer. No microphone, GUI, model, or app service starts.
See flags and the versioned JSON schema.
Privacy And Local Data
- Speech transcription runs locally.
- Hex does not save dictation audio by default.
- History retains successfully pasted dictation text
- Use History > Keep: Off to stop adding entries, or Clear all to remove
- An explicit
HEX_RETAIN_DICTATION_AUDIOdiagnostic setting can retain a
- Local diagnostic logs can contain transcript text, recognized command speech,
- OpenCode features send the data described above to your configured model
- Model installation and software updates require network access.
Troubleshooting
| 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 Accessibility 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. | | Website context does not match | Website-aware modes 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:
- macOS:
~/Library/Application Support/hex/logs/ - Windows:
%APPDATA%\hex\logs\ - Linux:
~/.local/share/hex/logs/, or underXDG_DATA_HOME
Windows Beta
The Windows beta runs on Windows 10 and 11, x64 and ARM64. It covers hotkey
dictation (Hold or Toggle, Ctrl+Space by default), Modes,
History, a tray icon, and signed self-updates. On x64 with a Vulkan graphics
driver, Parakeet Unified English streams while you speak, so text arrives within
about 100 ms of release even after minutes of talking; ARM64 transcribes on the
CPU. Meetings and the local transcription API are not included.
Download the installer for
x64 or
ARM64
and run it; it installs for your user without administrator rights. It is not
code-signed yet, so SmartScreen may warn: choose More info, then Run
anyway. See the Windows guide for details or to build from
source.
Linux Beta
The Linux beta targets x86_64 Linux on i3/X11 and compatible wlroots Wayland
compositors. It supports local hotkey dictation, Modes, History,
the Hex window, and signed updates for direct installs. With a Vulkan graphics driver, dictation
streams while you speak, as on macOS and Windows. Native Wayland requires
compositor support for clipboard and layer-shell protocols; paste uses wtype
with the virtual keyboard protocol, or the desktop's RemoteDesktop portal (KDE,
GNOME).
Shortcuts come from the desktop's GlobalShortcuts portal, or you bind
hex dictation start / stop / toggle in your compositor; see the
Linux guide. Meetings are not
included.
Install the signed release on x86_64 Arch Linux (glibc 2.44 or later) with:
curl -fsSL https://anoma.ly/hex/files/install-linux.sh | sh
Until Hex has a stable release on the release service, this installs the
newest dev build, which keeps updating from the Dev channel
(HEX_INSTALL_CHANNEL=stable or =dev picks one explicitly).
From the next release on, Arch users can instead install the AUR package
hex-bin (for example yay -S hex-bin), which pacman updates; it is not on the
AUR yet.
The Linux installation guide covers inspecting the installer first, uninstalling, and building from source. It also describes requirements and limitations. For Nix/NixOS packaging and per-user autostart, see the Nix guide.
Testing Builds
Every push to dev produces unsigned test builds for macOS, Windows, and
Linux in the Test builds
workflow. Open the latest green run and download from its summary. The
test build guide explains how to install and remove each
one without disturbing an installed Hex.
Build With Hex
@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.
Contributing
Issues are welcome, including detailed diagnoses and proposed fixes. Hex's team
writes every change, so pull requests from outside the team aren't accepted; we
credit your analysis in the pull request that fixes it. See
CONTRIBUTING.md.
Architecture, development commands, active plans, and historical research are
indexed in docs/README.md, with development rules in
AGENTS.md. Report vulnerabilities through the process in
SECURITY.md.
Hex is available under the MIT License. Vendored icon licenses are listed in Third-Party Notices.