Voice Dictation for the macOS Terminal

Why dictate into a terminal

Terminals are where the typing load moved. Agent CLIs like Claude Code live there, and driving them means writing paragraph-length prompts into a shell input dozens of times a day. Long commands, commit messages, and instructions to an agent are all faster to speak than to type — if the text can survive the trip into a TTY.

That's the catch. Terminals are hostile territory for naive text insertion: what works fine in a text editor can arrive mangled in a shell. Most dictation tools weren't built with this in mind. Keebye was — terminal insertion is the workload it was designed around.

How it works

Focus your terminal, hold Right ⌘, speak, and release. Keebye detects that the focused app is a terminal and switches to chunked synthetic typing: instead of pasting one large block, it types the text as keystrokes in measured chunks, so a long multi-sentence prompt arrives intact instead of overflowing or garbling the input.

Because synthetic typing is just keystrokes, it doesn't matter what's on the other side of the prompt — a local shell, an SSH session, a tmux pane, or an agent CLI waiting for instructions all receive the text like normal typing.

There is no per-app integration to configure and none is needed. Terminal.app, iTerm2, Warp, Ghostty — Keebye treats them all as what they are: a terminal. Speech-to-text runs on-device (Parakeet for English by default), works offline after the one-time model download, and sends no telemetry.

Setup in two minutes

Install Keebye and grant it Accessibility (so it can type into your shell) plus microphone access. The hotkey defaults to Right ⌘; Fn and Right ⌥ are the built-in alternatives if that key is taken. Turn on launch-at-login so it's ready when your first shell is.

Then feed the custom dictionary. Terminals are jargon-dense: repo names, branch names, CLI tools, and flags you say all day. A minute spent adding them up front means the transcript gets them right.

Limits, honestly

The transcript lands only after you release the key — Keebye transcribes in batch, not as live captions scrolling into your shell while you talk.

Keebye types text; it is not a voice-command layer. There are no spoken commands or macros — what you say becomes text at the cursor, and running it stays your call.

Keebye is macOS only.

FAQ

Which terminal apps does Keebye support?
Any of them. There is no per-app integration — Keebye detects that the focused app is a terminal and switches to chunked synthetic typing. Terminal, iTerm2, Warp, and Ghostty all receive text the same way.
Why chunked typing instead of paste?
Terminals are a special case for text insertion, and long pasted text can get mangled on the way in. Chunked synthetic typing sends the text as keystrokes in measured pieces, so a long prompt arrives intact.
Does it work over SSH or inside tmux?
It does — Keebye inserts the text as synthetic keystrokes into whichever terminal has focus, so an SSH session or a tmux pane receives it exactly as it would your own typing.
Can I run commands by voice?
No — Keebye is dictation, not voice control. It has no voice commands or command modes; it transcribes what you say into text at your cursor, and you decide what to run.
Does it work offline?
Fully. Once the model download completes (a one-time step), speech-to-text runs on-device, dictation needs no network connection, and there is no telemetry.

Last updated July 14, 2026