Keha

How Keha decides which agent you mean.

You run five agents on three Macs. You say “fix that”. Keha has to pick one, and show you its pick before anything is sent. Here is how it decides, and when it refuses to guess.

5 sessions · 3 machines
apiRunning migration tests · 14/31claude · mbp
webForm.test.tsx failing (1)codex · mbp
infraterraform plan · staging-2claude · studio
docsUpdated 4 pagespi · mini
New sessionStart something new · copied, never auto-sent

“infra, run the plan against staging two first”

Named project. “infra” matches one session, so there is nothing to guess.

The receipt shows here within 700 ms of letting go, with two seconds to undo.
Scripted demo. Your microphone is never used.

By name

Say a project or machine, like “infra, run the plan against staging two first”, and Keha routes there directly. Names come from your own sessions, so spoken names are recognised the way you say them.

Typing works the same way in the panel: @infra or @studio/infra.

Open question

When one agent is waiting on you, an answer like “yes, but dry run first” goes to it and is mapped onto its options. You see “Answer 2 · Yes, dry run first” before it is sent.

Inbox numbers are never addresses. Saying “two” answers a question; it never picks the second session.

What you see

“Fix that” only makes sense next to what is on your screen. With your permission, Keha reads the visible text of the window you're looking at, from developer apps only, and uses it to resolve “that”.

  • Password managers and private apps are never read. Secure fields are skipped.
  • Other apps are asked about once.
  • A picture of the window is sent only if you turn on that one switch. It is off by default.

Not sure

When two sessions are close, Keha shows both and waits. Click or press Tab to switch, then send. A low-confidence route never sends on its own.

The same goes for anything that stops work or starts something new: deny, stop and interrupt commands, and new sessions, always wait for an explicit send. So does every route while VoiceOver, Switch Control or Full Keyboard Access is running.

The receipt

Every route shows a receipt within 700 ms of letting go: the target, the instruction, and a two-second countdown ring.

  • Send now: press the talk hotkey again, Return in Keha, or click.
  • Undo: ⌥⇧Space, Esc in Keha, or click.
  • Plain keys never act on a receipt while another app is in front.

Keha rewrites your words only when they need it. “Fix that” becomes a full instruction; a clear sentence is sent as you said it.

When the network can't keep up

If cloud transcription is busy or unavailable, that command falls back to speech recognition on your device. Routing by name and answering an open question keep working.

The microphone lights only while you hold the key. A quick tap never turns it on.

On your iPhone

Hold the talk button in the Keha app. The same routing, receipt and undo apply, so you can steer an agent from the couch without reading its terminal.

Talk to your agents, not your terminals.

Try Keha macOS 15+

Keyboard shortcuts

They work on this page exactly as they do in the app.

⌥Space
Tap to open the panel. Hold to talk.
1–9
Answer the question the slab is asking.
JK
Move between sessions in the panel.
⌥⇧Space
Undo a voice command while its receipt shows. In the app it otherwise jumps to the agent's terminal.
Esc
Undo, or close the panel.
?
Show this list.
Try Keha