Skip to main content

The voice operator

The voice operator is the Gemini Live session you're actually talking to. It listens to your microphone, replies out loud, and reads a live transcript of what's happening on your laptop. It is an operator, not a coder: it never writes code or runs commands itself, it relays your requests to Claude Code and tells you what happened.

In hosted zero-config mode, this same operator runs on Voxa's cloud instead of your laptop, using the cloud's Gemini key. The tool set is identical either way; tool calls are just sent back to the laptop over the connection instead of executing locally.

The tool catalog

These are the tools Gemini can call while you talk. The orchestrator on the laptop is what actually carries them out.

Sessions and folders

ToolWhat it does
start_claude_sessionStarts (or relaunches) a Claude session in a given folder.
set_working_dirSwitches the active session to a different folder.
list_dirsLists subfolders so you can pick a working directory by voice.
make_dirCreates a new folder (and any missing parents) and starts a session there.
new_sessionStarts an additional Claude session in a folder while keeping the current one running.
list_sessionsLists all of Voxa's currently driven sessions with their status.
switch_sessionMoves the voice line to a different running session; both keep running.

Driving Claude

ToolWhat it does
send_to_claudeSends your request to the active session verbatim; the result is spoken back once it's ready.
queue_taskAdds another instruction to run right after the current one finishes.
get_claude_statusReports idle, working, finished, or errored, checked against the live pane.
stop_claudeInterrupts the current task without losing the session or its context.
read_sessionReads back recent lines or a search match from the attached session's transcript.

Terminals

ToolWhat it does
list_terminalsLists Claude terminals already open on your machine, with status and a short hint of what they're doing.
attach_terminalAttaches to and starts driving one of those open terminals.

Approvals

ToolWhat it does
resolve_approvalActuates a pending permission prompt or a dangerous-command/git card from your spoken decision.

Git

ToolWhat it does
git_statusReads back the branch and a summary of changes, read-only.
git_diffReads back a condensed diff against HEAD, read-only.
git_commitStages and commits, but only after you approve a confirmation card.
git_pushPushes to the configured upstream, but only after approval, and never force-pushed.

Misc

ToolWhat it does
take_screenshotCaptures the laptop's main display and sends it to the phone.
get_costReports token usage and dollar cost for the session, read-only.

Guardrails

  • Loop guard: dispatch tools (send_to_claude, queue_task) only fire after a genuine new turn from you. Gemini can't chain tool calls into a loop that dispatches work on its own.
  • One task at a time: a busy guard blocks a second dispatch while Claude is still working on the last one, and that busy state is re-verified against the live terminal pane so it can't get stuck.
  • Dangerous commands become approval cards: if what you dictate matches a recognized destructive pattern (recursive delete, force-push, dropping a database, wiping a disk, and similar), it's turned into a card that says "Careful: this [does the risky thing]. Run it?" instead of being dispatched straight away. Decline runs nothing; approving re-sends the same request with confirmation attached.
  • Git writes always need approval: git_commit and git_push never run immediately. They build a confirmation card naming the project and branch, and once you approve, the actual git command runs inside the visible Claude session, not a hidden subprocess, so you watch it happen. git_push never forces.

How it talks with you

  • Barge-in is on by default: you can interrupt the operator mid-sentence and it'll stop and listen, using Gemini's own voice activity detection. Setting VOXA_BARGE_IN=0 restores strict half-duplex turn-taking.
  • It speaks your language, including Arabic, while still sending your request to Claude in the language you actually used.
  • It relays Claude's questions: while Claude is working, its terminal output streams to the phone as text, and if Claude asks something on screen, the operator notices and repeats the question out loud instead of leaving you waiting on a silent line.