Opinionated dictation for Mac power users

Become Jarvis. Keep it moving. Not a second of waiting around.

Speak instead of reaching for the keyboard, decide where each transcript belongs, and carry on in another app while transcription, paste, and auto-send finish behind you.

“Either you or the agent is running.”

Stay in the flow.

3intentional destination routes

Parallelrecord while earlier results load

Allconnected monitors show status

0reason to stare at a spinner

Ethan SK

The opinionated path

Ethan's recommended setup

This is not a neutral list of every possible option. It is the setup Ethan actually uses to stay fast: one light programmable mouse, one direct transcription stack, and two buttons that decide where the words go.

01 Equip

Put the workflow under your thumb.

Get a mouse with at least two programmable buttons. Ethan uses the Logitech G502 X LIGHTSPEED: light, comfortable, smooth over its USB receiver, and deeply configurable in Logitech G HUB.

  • Primary side buttonVoiceInk++ toggle shortcut
  • Next buttonmacOS Next Track action
Why this mouse and mapping?

G HUB is the configuration app; G502 X LIGHTSPEED is the mouse. Assign your existing VoiceInk++ shortcut to one button and the standard media action Next Track to your Next button. VoiceInk++ owns that event while its black bar is visible—an eligible press performs the destination action and a late press is a safe no-op—then returns it to media once the bar hides.

02 Configure
TRANSCRIBESoniox V5Realtime · English
AI MODELOpenAI · gpt‑5.5Ready when a Mode needs it
DELIVERYDirect pastePer-app auto-send

Copy the fast path, then make it yours.

Start with Ethan's low-friction defaults: Soniox V5 realtime in English, live partials shown only in the black VoiceInk++ bar, one final direct paste on stop, and an app-specific Mode that presses Return in agent/chat apps but deliberately does not auto-send in Chrome.

  • Language · English
  • Realtime partials · HUD only
  • Paste · Default
  • Enhancement · Off for direct modes
  • Provider account · Required
  • Mic · Your best input
Important provider details

Soniox requires your own provider credentials and funded account. Keep Deepgram or another supported model available as a fallback. Ethan's current modes keep OpenAI gpt‑5.5 selected but leave enhancement off for the quickest direct-paste loop.

03 Move

Two buttons. Three deliberate destinations.

Let final keyboard focus decide, send the result back to where you started, or use the Next button after stopping to latch a new input while transcription runs. Only the two Next routes remember an exact field and its auto-send choice; Primary stays as simple as base VoiceInk.

See every route

Destination control · three routes, two buttons

Never wait for your words to land.

Most dictation tools make “stop” mean one thing. VoiceInk++ turns destination into a one-click decision—without making you babysit the result.

Normal stop · keyboard focus at delivery

Let the current input decide.

Use your normal recording button to stop. VoiceInk++ saves no exact input: base VoiceInk pastes into whichever system keyboard input is focused when final delivery happens, then follows that app's current Mode.

  1. Start recording in Codex.
  2. Move to Terminal while speaking.
  3. Stop normally. Keep Terminal focused through delivery and the transcript lands there.

Next button during recording · recording start

Send it back to where you began.

Move anywhere while dictating, then stop with the Next button. VoiceInk++ preserves the exact input captured at recording start and delivers there without taking over the workspace you moved to when that app exposes a proven path.

  1. Start recording in the Codex composer.
  2. Keep working in VS Code while you speak.
  3. Press the Next button. The result returns to Codex.

Next button while transcribing · second chance

Latch a new input, then leave again.

After a normal stop, focus a new editable input and press the Next button while the newest result is still loading. That exact field and its app-specific auto-send become the pending destination.

  1. Stop normally and let transcription begin.
  2. Focus a new ChatGPT or agent input; press the Next button.
  3. Move on. VoiceInk++ pastes and safely auto-sends there when supported.

Agent destinations, explicitly supported

Talk straight into Codex or Claude Code.

The two exact Next routes can preserve a desktop composer or the terminal/editor input that really hosts a CLI. VoiceInk++ uses only a proven app-specific path and fails closed instead of guessing.

DESTINATION COMPATIBILITY NO PLUGIN REQUIRED
Agent surface VoiceInk++ locks Auto-send path Locked icon
Codex desktop Exact composer when verifiable Surface-specific Send; safe foreground route when already focused Codex
Codex CLI Exact host session when supported Host-native delivery or a safe focused-input route Host app
Claude Code Exact host session when supported Host-native delivery or a safe focused-input route Host app
Claude desktop Exact composer when verifiable App-specific delivery with visible safe failure Claude

The VoiceInk++ workflow

The old rhythm

speakstopwaitpasteresume

The VoiceInk++ rhythm

YOUspeak → latch → keep moving → keep moving

VOICEINK++transcribe → restore → paste → send

Something is always happening.

Built around the flow

The recorder tells you the truth.

No ambiguous toast. No disappearing target. The interface shows what VoiceInk++ knows, on every screen, until delivery is complete.

01 / SEE IT

One recorder panel on every connected monitor.

Start anywhere and the waveform appears everywhere, so you never have to look around to confirm that VoiceInk++ heard you.

02 / KNOW IT

Mode, current app, locked destination.

The Mode icon stays left of the waveform. Current focus and the per-session locked destination stay separate on the right.

03 / STACK IT

Record while another result is loading.

New thoughts do not wait for old network calls. Every session keeps its own input, Mode, destination, and delivery state.

04 / TRUST IT

Base paste or exact background delivery.

Primary stays as simple as base VoiceInk. Next verifies the saved input, delivers without focus theft when the app exposes a proven path, and surfaces a real warning instead of guessing or silently claiming success.

05 / STAY IN CONTROL

Pause the thought—not the session.

Double-press Primary to pause and resume one recording, keep paused audio out of the transcript, or discard instantly and force a one-shot raw result when you need it.

Public, open source, deliberately personal

Build Ethan's workflow on your Mac.

VoiceInk++ currently ships as source, not a notarized public download. You need macOS 14.4 or later, Xcode, and a few minutes to grant Microphone and Accessibility permission. Exact Apple Terminal/iTerm delivery also needs the optional Automation grant described in the build guide.

  1. 1

    Clone the fork.
    Use Ethan's VoiceInkPlusPlus repository—not the upstream VoiceInk download.

  2. 2

    Build the local app.
    The Makefile creates an ad-hoc signed VoiceInk++ app without requiring a paid developer account.

  3. 3

    Grant permission and configure.
    Allow Microphone and Accessibility, add Automation if you use Terminal/iTerm exact delivery, pick your model, then create per-app Modes.

The optional YouTube and Chrome companion is included as source, with its extension, macOS helper, tests and agent setup guide. Install it separately when you want it. It pauses YouTube while you dictate and supports Agentic Mouse's YouTube controls and Chrome shortcuts.

Commands to build VoiceInk++ locally

LOCAL BUILD
$ git clone https://github.com/EthanSK/VoiceInkPlusPlus.git
$ cd VoiceInkPlusPlus
$ make local
$ open ~/Downloads/VoiceInkPlusPlus.app

Output: standalone VoiceInk++ app

Do not use the upstream Homebrew cask for this fork. It installs upstream VoiceInk, not VoiceInk++.

Personal fork. Shared in public.

VoiceInk++ is Ethan SK's opinionated fork of VoiceInk by Beingpax. It keeps the excellent native macOS foundation and pushes hard on destination control, overlapping work, and the no-wait agent workflow. This fork has no Pro purchase, trial, license validation, affiliate promotion, or remote promotional-announcement system. Licensed under GPL‑3.0.

Explore the code