anomalyco/hex

▲ 286 stars today★ 1,105⑂ 92

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

Repository anomalyco/hex · default branch dev · size 190908 KB · watchers 2 · source: GitHub REST API and repository README

README

https://github.com/anomalyco/hex/blob/HEAD/Hex app icon

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.

ordinary dictation does not require OpenCode or a cloud transcription service. corrections, application-specific behavior, and optional text processing.

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.

Hex checks for signed updates automatically. Use Hex > Check for Updates… to check immediately.

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.

you release, it cancels the newest dictation that is still transcribing, so nothing is pasted for it. 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.

Optional OpenCode Features

OpenCode V2 beta (opencode2) is optional. Ordinary dictation does not require it.

paste. Hex sends the transcript, foreground application, and Brave website hostname to the configured model provider. Modes can target applications and websites in Brave Browser.

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.

and tap again to stop. While it records, hold it and move the pointer to draw, no click needed; let go and the mouse is the app's again. macOS asks for Screen Recording the first time; Linux asks through the desktop's screen-sharing dialog once, then remembers the screen. While it records, the dictation shortcut does nothing. to draw until you click it again; Esc stops drawing), stop, and ✕ to discard. On macOS, holding Shift draws too. Ink fades from the screen after about a second but stays in the recording. the capsule offers Paste (the contact sheet, then the summary) and Inspect. With OpenCode running, Send to… lists its sessions (macOS also opens its suggestions by itself): click one to send it there, and Undo takes it back for a few seconds. A send carries the transcript and the pictures inline, so it works with an OpenCode server on another machine. terminal.

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

for seven days by default, including the local transcript, final text, and limited application and timing metadata. It never stores audio, full browser URLs, or window titles. Every retention choice is capped at 10,000 entries and 16 MiB of raw plus final text, with oldest entries evicted first. existing history. Turning retention off does not delete existing entries or disable diagnostic logging. bounded number of owner-only WAV files. foreground application names, and Brave URLs. Hex does not upload these logs. provider. Review and redact diagnostics before sharing them.

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:

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.

GitHub Stars & Activity

1,105Stars
92Forks
14Open issues
RustLanguage

GitHub Popularity

GitHub stars1,105
Forks92
Open issues14
Primary languageRust
LicenseMIT
Stars gained today286
Created2026-07-17
Last pushed2026-10-30

Trending History

Daily boardrank #33 · ▲ 286 stars

Related GitHub Projects

1

rustdesk / rustdesk

Rust★ 127,567⑂ 20,169▲ 160 stars
→
2

ruvnet / RuView

Rust★ 101,668⑂ 13,208▲ 849 stars
→
3

pbakaus / impeccable

Rust★ 96,301⑂ 5,663▲ 2,870 stars
→
4

juspay / hyperswitch

Rust★ 45,567⑂ 6,560▲ 128 stars
→
5

janhq / jan

Rust★ 45,163⑂ 3,117▲ 34 stars
→
6

vercel-labs / agent-browser

Rust★ 44,893⑂ 3,071▲ 83 stars
→
7

magnitudedev / magnitude

Rust★ 7,587⑂ 541▲ 141 stars
→
8

agentgateway / agentgateway

Rust★ 5,797⑂ 1,028▲ 63 stars
→

More Trending Repositories