Skip to content

· · 6 min read

Automating Terminal With Your Voice on macOS

How terminal-by-voice works in Soren: every command appears in your own iTerm, results are read back, and approval gates anything destructive.

Developers have a well-earned reflex against tools that run shell commands out of sight. So the first design decision for terminal-by-voice isn't about speech at all — it's about visibility. Soren doesn't own a hidden shell. It types into your terminal, the one already open on your screen, and presses return. The command lands in your scrollback, the output lands in your scrollback, and your history stays yours. If you'd have seen it typing it yourself, you see it when Soren types it.

That one rule changes the trust math. There is no “what did it actually run?” — you watched it run. And because the output is real terminal output, you can scroll it, grep it, or pipe the next command at it by hand, mid-conversation.

What's actually worth speaking? After months of daily use, three patterns dominate.

The test loop: “run the tests and read me the failures.” Soren types your test command, waits, and reads back what broke — while you keep reading the code you suspect. This is the single highest-frequency command in our own sessions, because it's the one you repeat forty times a day.

The log watch: “tail the API logs and tell me when a 500 shows up.” The tail runs in your visible pane; Soren watches the stream and speaks up when the pattern hits. It's the difference between polling a window and being tapped on the shoulder.

The cleanup with a gate: “clear out the build artifacts.” Anything that removes files stops at an approval prompt and waits for your explicit yes — and file deletion goes through the Trash, not rm, so even an approved mistake is undoable from Finder.

What's not worth speaking: anything interactive. Rebases that open an editor, REPLs, password prompts — voice adds a layer where you want your hands. The honest boundary is the same as the voice-vs-keyboard rule everywhere else: repeatable commands with readable output are voice territory; improvised, interactive work is not.

For long coding sessions there's a dedicated mode: Vibe Mode keeps a push-to-talk line open to your terminal through the dedicated agent hotkey. Hold the key, say “run it again,” release. It's the closest thing to having a pair who only touches the terminal when asked — and who literally cannot touch it without you seeing.