Hex launches local dictation for macOS, Windows, and Linux
OpenCode released Hex, a cross-platform dictation app that uses local models. Developer replies describe optional microphone warming and planned fixes for OpenCode integration and excessive window wakeups.

TL;DR
- Hex runs speech recognition locally: OpenCode announced a stable release for macOS, Windows and Linux that works independently of any coding agent.
- Microphone warming is optional, and thdxr confirmed it can be disabled in settings.
- Custom functions can transform dictated text, including the lowercase output thdxr demonstrated.
- Launch-day fixes are pending: thdxr promised the next release would address OpenCode integration behavior and excessive idle CPU use.
The Hex 3.0 release notes put local-model memory use at about 160 MB, down from about 900 MB. The same release notes remove Voice Action and spoken commands, along with the Moonshine model those commands used.
Dictation follows focus
On macOS, holding Option records speech; releasing it transcribes and pastes into the focused application, according to the release README. System-wide input is Hex's stronger hook than the agent branding.
Asked about embedding Hex into a harness, thdxr said most app features did not make sense as an SDK and described wanting dictation across the whole computer.
- System-wide paste: Clicking elsewhere while speaking can redirect the eventual text away from an agent's input, as one user pointed out.
- Embedded transcription: The repository separately offers
@kitlangton/hex, a TypeScript SDK. The host application supplies recorded audio, and a compatible Hex executable is required because the native helper is not bundled.
Microphone warming
Keeping the microphone ready reduces capture-start latency, according to thdxr's explanation. The dictation settings expose a switch for that behavior, alongside controls for avoiding Bluetooth headsets' call-quality audio mode.
TypeScript transforms
Custom transformations live in ~/.config/hex/hex.config.ts. The release README describes their execution model:
- TypeScript or JavaScript runs inside an embedded JavaScript engine.
- Saving the file reloads the configuration; no separate runtime installation is needed.
- Scripts have no filesystem, network or process access.
hex commands initcreates the starter workspace;hex commands checkvalidates registration.
Local transcription and optional rewriting
Hex uses local speech models, as thdxr explained in response to a request for a custom API endpoint. Optional OpenCode rewriting introduces a separate provider connection.
The privacy and integration documentation draws these boundaries:
- Ordinary dictation: Requires neither OpenCode nor a cloud transcription service. Dictation audio is not saved by default.
- History: Successfully pasted text is retained for seven days by default, including the local transcript, final text and limited application and timing metadata. Retention is capped at 10,000 entries and 16 MiB of raw plus final text.
- OpenCode rewriting: Sends the transcript, foreground application and Brave website hostname to the configured model provider.
- Diagnostics: Local logs can contain transcript text, application names and Brave URLs. Hex does not upload those logs.
OpenCode integration and idle-CPU fixes
The integration detects an existing OpenCode installation rather than installing it. Its initial implementation worked with a binary instead of reusing a running server, thdxr explained while describing the planned change.
Two fixes were promised for the next release:
- Hex would leave OpenCode alone unless it was already running.
- The microphone level meter would stop waking the window roughly 30 times per second even in silence, which thdxr identified as the cause of excessive CPU use.
An earlier Linux issue pinned the old recording indicator at full brightness with loud microphones. In that development update, thdxr said the fix and a new default animated-dot indicator were headed to the next dev build.
AI-written app and issue fixes
Hex is built in Rust and released under the MIT license, according to its repository README. Thdxr described the development work as fully vibe-coded, covering:
- The desktop app and landing page.
- Animations and onboarding.
- AI-generated sound effects.
- Some creative ideas.
- Ongoing issue fixes through OpenCode.
The feedback loop extends to issue filing: thdxr asked one user to have their agent open an issue.
Installers and Hex 3.0 migration
The download page offers Apple silicon builds requiring macOS 15 or later, Windows x64 and ARM64 installers, and Linux binaries and packages. The release README still labels Windows and Linux support beta.
Upgrading from 2.3.1 has several concrete discontinuities, documented in the 3.0 migration notes:
- No automatic upgrade: Version 2.3.1 does not update itself to 3.0.
- No data import: The data directory changes from
voice-controltohex. Settings, history, meeting recordings and downloaded models start empty. The old directory and previously exported meeting notes remain intact. - New macOS identity: The app becomes
anomaly.hex, signed by Anomaly. Permissions must be granted again, and managedDisableUpdatesprofiles need the new preference domain. - Side-by-side Windows installation: Installing 3.0 leaves 2.3.1 installed as a separate app.