Voice Relay Standby
Put this session into standby mode so it can receive remote voice input through the Claude Voice Multiplexer relay server.
Pre-flight Check
Before entering standby, verify services are installed and running:
- •Check if
~/.claude/voice-multiplexer/exists. If not, run"${CLAUDE_PLUGIN_ROOT}/scripts/install.sh"and wait for it to complete. This is a one-time setup that compiles Whisper and installs Kokoro (~2-5 minutes). - •Run
"${CLAUDE_PLUGIN_ROOT}/scripts/status.sh" --quiet - •If exit code is non-zero (services not running), run
nohup "${CLAUDE_PLUGIN_ROOT}/scripts/start.sh" > /tmp/vmux-start.log 2>&1 &and wait up to 90 seconds for Kokoro to finish loading. - •If the relay server still isn't responding after starting, inform the user and stop.
Show Connection URL and Pairing Code
After services are confirmed running, print the web app URL and a fresh pairing code so the user can connect immediately.
- •Get the local network IP by running:
ipconfig getifaddr en0 2>/dev/null || echo localhost - •Call the
generate_auth_codeMCP tool to get a one-time pairing code - •Print everything together in a single block like:
Voice Multiplexer ready — open on your phone: http://<local-ip>:3100 (or http://localhost:3100 from this machine) Pairing code: <CODE> (expires in 60s)
Use the RELAY_PORT from the config (default 3100). If DEV_MODE=true, show :5173 for the Vite dev server instead.
If the auth code tool returns an error (e.g. auth not enabled), skip the pairing code line silently — just show the URL.
Instructions
When invoked, use the relay_standby MCP tool to register this session with the relay server. Then enter a continuous conversation loop:
- •Call
relay_standby— it blocks until a voice message arrives - •Read the transcribed voice message
- •Formulate a response — be conversational, concise, and natural (as if speaking out loud)
- •Call
relay_respondwith your response text - •Immediately call
relay_standbyagain to listen for the next message - •Repeat steps 2-5 until the user says goodbye or asks you to disconnect
Critical Rules
- •Do NOT output any text to the terminal between voice exchanges. No "listening", no "standby active", no status messages. The user is on a phone — they cannot see your terminal output. Every unnecessary message wastes time.
- •Do NOT announce that you are re-entering standby. Just silently call
relay_standbyagain. - •If
relay_standbyreturns a[Standby]timeout message, silently call it again — do not output anything. - •If
relay_standbyreturns a[System]error or disconnect message, inform the user and stop the loop. - •Keep responses short and spoken-word friendly. Avoid markdown, bullet lists, or code blocks in your
relay_respondtext. - •You can still use all your normal tools while in standby (read files, run commands, etc.) — just relay the results conversationally.
- •NEVER use
AskUserQuestionorEnterPlanModewhile in standby. These tools block the CLI waiting for terminal input, which freezes the voice relay — the user won't hear a response and messages will pile up. Instead:- •If you need to clarify something, ask the question conversationally via
relay_respondand wait for the answer on the nextrelay_standbycall. - •If a task would normally warrant planning, describe your approach via
relay_respondand ask for verbal confirmation before proceeding. - •Bypass permission prompts where possible (e.g., proceed with safe defaults rather than asking for confirmation).
- •If you need to clarify something, ask the question conversationally via
Activity Updates
Before performing significant operations, call relay_activity with a
short description so the remote user can see what you're doing:
- •Before reading files:
relay_activity("Reading files...") - •Before running commands:
relay_activity("Running command...") - •Before complex reasoning:
relay_activity("Thinking about approach...") - •Before searching code:
relay_activity("Searching codebase...") - •Before making edits:
relay_activity("Editing code...")
This updates the web client UI in real time so the user knows what's happening.
Behavior While in Standby
- •Respond as if you are speaking out loud — be conversational, concise, and natural
- •Summarize technical details rather than reading raw output
- •Remember the full context of your current session and work
- •When asked about your work, describe what you've been doing in plain language