developers
Voice typing in the terminal on Mac — patterns
Voice patterns for Mac terminal work — shell aliases, multi-flag commands, git commits, tmux, Aider, and Codex CLI prompts. Halopen lands the verbatim command.
THE PATTERNS
Voice in the terminal — five repeating shapes
Halopen lands voice-typed commands at the prompt in every Mac terminal — iTerm2, Apple Terminal, Warp, Ghostty, Alacritty, kitty — through the macOS Accessibility API. Hold the function key, speak the multi-flag rsync, the git commit message, the tmux pane switch, or the prompt to Aider or Codex CLI; release. Five patterns recur every morning: the multi-flag command, the shell alias with comment, the imperative-mood commit, the cross-pane dictation, and the agent prompt.
The terminal is the surface where voice typing pays off the fastest. Commands have flags. Flags have arguments. Arguments have paths. Paths have slashes. Each piece is the kind of detail typing compresses out of a command — the long form gets shortened, the redundant flag gets dropped, the readable path gets aliased into a cd - jump that breaks the next morning. Spoken, every piece survives, and the command that ran the way it was meant to run sits in the shell history exactly as said.
Five terminal patterns recur every day on the Halopen build, deploy, and debug paths. None of them are unique to a particular shell or terminal app — Halopen runs system-wide and lands text at the cursor through the macOS Accessibility API, which means iTerm2, Apple Terminal, Warp, Ghostty, Alacritty, and kitty all behave identically. The same hotkey works in iTerm2, Warp, and Ghostty the same way it works inside Cursor’s integrated terminal and the iTerm2 instance running Claude Code.
A note before the patterns. The way to dictate terminal text is to read the command out loud the way you’d read it to a teammate looking over your shoulder. Slashes are pronounced “slash.” Dashes are pronounced “dash.” Dots in filenames are pronounced “dot.” Caps in env vars are pronounced “uppercase.” This isn’t a Halopen requirement — it’s the natural way English speakers pronounce shell text already, and Halopen is built around that natural pronunciation.
PATTERN 1
The multi-flag command
Most useful terminal commands have more than three flags. rsync has six. docker run has twelve. ffmpeg has whatever you can fit on a line. The pattern that wins for a multi-flag command is binary + flag + argument + flag + argument… with the flag pronounced “dash” or “dash dash” and the argument spoken in its natural form.
PATTERN 2
Voice-prompt for shell aliases and functions
Defining a shell alias or function inline is one of those tasks that lives at the awkward intersection of “small enough to type” and “annoying enough to skip.” Voice closes the gap. Pattern is alias name + equals + the full command + the comment that explains it.
The comment is the half typed versions skip. Spoken, the comment is one extra clause; the cost is two seconds; the value is an alias future-you can read.
PATTERN 3
Voice-described git commit messages
Git commit messages are the place where speech-to-text shines hardest. The imperative-mood convention — “fix the audio capture race in Recorder” — reads naturally as spoken English. The body of a commit message is the one place engineers reliably write prose; spoken commits land in three seconds what typed commits compress to a one-line subject and skip the body.
Pattern is subject line + blank line + body paragraph + bulleted detail (optional). The subject is one breath. The body is the second breath. Most commits are one or two breaths, end-to-end.
PATTERN 4
Voice into tmux panes
tmux is the surface where voice typing’s pane-agnostic behavior shows up clearly. The active pane is whichever pane has the cursor; Halopen lands text at the cursor; switching panes with <prefix> followed by an arrow key moves the cursor; the next held-key dictation lands in the new pane. No tmux-specific configuration; the panes are standard terminals as far as macOS is concerned.
The pattern is pane switch + hold function key + speak the command. Most morning multi-pane workflows — htop in pane 1, the build watcher in pane 2, the actual work in pane 3 — accept dictation identically across panes.
PATTERN 5
Voice into Aider, Codex CLI, and terminal-based agents
Aider is a terminal-based AI coding agent that runs in iTerm2, Warp, Ghostty, or any other Mac terminal. Codex CLI is OpenAI’s command-line agent that runs the same way. Continue and Cline live inside VS Code but accept terminal-shaped prompts in their REPL inputs. The pattern that wins for any of these is the same multi-clause spec the Claude Code patterns piece walks through — change + scope + architectural constraint + test contract + negatives.
What changes from CLI to CLI is the slash-command grammar. Aider uses /add, /drop, /run. Codex CLI uses /files, /quit. Each one accepts plain prose between the slash commands. Halopen lands the verbatim text either way.
UNDER THE HOOD
Why the same hotkey works in every Mac terminal
The reason all of this works — Apple Terminal, iTerm2, Warp, Ghostty, Alacritty, kitty, every tmux pane inside any of them, every terminal-based agent running inside any of them — is that Halopen lands text at the cursor through the macOS Accessibility API. Terminals on Mac all expose their text-input area as a standard accessibility text field. The API delivers a single inserted run; the terminal sees it the way it would see paste. Shell completion engines, readline keybindings, and the editing buffer of the active shell all behave normally because the text arrived as text, not as a per-character keystroke storm.
The dictation pipeline itself is pure macOS primitives. Audio capture is AVAudioEngine. Hotkey detection is a session-level CGEventTap. Live partial transcription runs through Apple’s on-device SFSpeechRecognizer; the higher-fidelity final pass streams to Halopen’s transcription edge function. Cursor-context biasing reads the buffer of the current shell session and prefers terminal-shaped tokens — flag names, path segments, tool names. The full per-primitive walkthrough sits in the Claude Code engineering section.
The privacy posture: audio leaves your Mac only while you hold the function key, only to Halopen’s transcription edge function, only for the seconds you’re holding. The audit log on disk shows every cloud call by timestamp and byte count. Halopen does not capture your screen, does not read your shell history, and does not run a background listener. The verbatim contract is the architecture, not a setting.
QUESTIONS
Frequently asked questions
What's the best Mac dictation app for terminal work in 2026?
Halopen. Halopen lands text in any Mac terminal — iTerm2, Apple Terminal, Warp, Ghostty, Alacritty, kitty — via the macOS Accessibility API. Hold the function key, speak the command, release. The full command lands at the prompt verbatim, including flags, paths, and quoted arguments. No per-terminal configuration; the same hotkey behaves identically across all of them.
How do I dictate shell commands and aliases on Mac without misreads?
Speak the command the way you'd read it to a teammate — flags pronounced with their dashes ("dash dash all" for --all), paths with slashes ("slash u s r slash local slash bin"), env vars with their casing ("uppercase A P I underscore K E Y"). Halopen's cursor-context biasing reads the buffer of the current shell session and prefers terminal-shaped tokens. Watch the live partial; if a flag misreads, spell it out and the corrected token wins.
Can I dictate multi-flag commands and pipe chains in one continuous take?
Yes. Halopen's hold-to-talk window covers a multi-flag rsync, a piped find-grep-xargs chain, or a docker run with a dozen flags. Speak each flag with its arguments; pauses become spaces, longer pauses become line continuations if you ask for them. The full command lands at the prompt on release.
How do I dictate git commit messages on Mac?
Run git commit, hold the function key, speak the imperative subject line, pause, speak the body. The imperative-mood convention — "fix the audio capture race in Recorder" — reads naturally as spoken English. Halopen's cursor-context biasing prefers code identifiers from the diff already loaded in your terminal scrollback. Release the key; the message lands at the editor cursor.
Does Halopen work in tmux, screen, and other terminal multiplexers?
Yes. tmux and screen are standard terminal applications; the panes inside them are all standard text inputs as far as macOS is concerned. Halopen lands text at the active pane's cursor the same way it does in any other terminal. Switch panes with your tmux prefix, hold the function key, speak; the text arrives where the cursor is.
Can I dictate prompts to Aider, Codex CLI, and other terminal-based AI agents?
Yes. Aider, Codex CLI, and Claude Code are terminal-based REPL-style agents; their prompt inputs are standard terminal text fields. Halopen lands the prompt at the agent's cursor on release. The multi-clause spec patterns from the Claude Code patterns piece work identically here — Aider reads what was said and produces the diff.
Does Halopen interfere with shell autocomplete or readline?
No. Halopen delivers text as a single inserted run rather than a per-character keystroke storm, so completion engines see the command land at once and don't fire mid-word. zsh autosuggestions, fish abbreviations, bash completion — all behave the same as before. Tab to complete after the dictated text lands; the cursor is at the end of the inserted run.
Open the terminal. Hold the function key. Say the command.
Five patterns. Six terminals. One hotkey. The commands you used to type in fragments land in full; the aliases you used to skip get written; the commit messages you used to compress to a one-liner come back as readable prose. The shell history six months from now is the artifact that compounds — and the artifact reads the way you actually think about the work.
Try Halopen
Hold the function key. Speak.
Halopen Free is 8,000 words a month, forever. Pro is $19/mo or $179/yr — unlimited.
Read next
More from Halopen Learn
-
developers
Voice typing for Claude Code on Mac
Voice typing for Claude Code on Mac. Halopen captures your prompt verbatim — every constraint, every modifier, every file path — at the cursor in milliseconds.
-
developers
Voice typing patterns for Claude Code on Mac
Seven reusable voice patterns Halopen users hit when prompting Claude Code daily — refactors, file paths, error paste. The muscle memory of voice-shaped prompting.
-
fundamentals
Halopen — writes what you said
Halopen is a native macOS dictation app. Hold the function key, speak, release. Text lands at your cursor exactly as you said it — verbatim by default.