v0.3.0 - Multi-Session¶
Multi-session hub, simplified controls, and background conversation support.
Hub¶
- ClawMux — Standalone service (
hub.py) on port 3460 that spawns and manages multiple Claude Code voice sessions from a single browser tab. - Session spawning — Click "New Session" to create a tmux-backed Claude session with auto-configured MCP.
- Session tabs — Tab bar with per-session status dots, close buttons, and badge notifications. Tab label shows Kokoro voice name.
- Chat transcript — Display user and assistant message text in a scrollable chat view per session.
- Per-session voice selection — Dropdown to choose Kokoro TTS voice (Sky, Alloy, Sarah, Adam, Echo, Onyx, Fable) per session. Auto-rotates through unused voices on spawn.
- Agent identity — Each session gets a CLAUDE.md with the voice name as its identity. Greets with "Hi, I'm [name]! How can I help?"
- Dynamic MCP config — Per-session temp directory with
.mcp.jsonso each Claude instance connects to the hub with the correct session identity. - Session timeout — Auto-terminate sessions after 30 minutes of inactivity.
- Clean session termination — Closes MCP WebSocket, kills tmux, removes temp dir.
- Tmux session ID in controls — Bottom bar shows tmux session name for easy
tmux attach. - Chat persistence — Chat messages saved to localStorage and restored on page reload.
- Voice grid landing page — Grid of voice cards showing connected/available status. Click to spawn or switch to session. Auto-close tab on agent goodbye.
Controls & Recording¶
- Simplified button flow — Single main button cycles: Record (blue) → Send (green) → Interrupt (orange) → Processing (grey). Cancel button separate.
- Mic mute — Toggle to mute microphone input across all sessions.
- Auto Record toggle — Auto-start recording after Claude speaks.
- Auto End (VAD) toggle — Voice activity detection auto-stops recording on 1.5s silence. Send button always available for early send.
- Interrupt support — Tap Interrupt button during audio playback to stop it immediately. Hub receives
playback_doneand proceeds to listen. - Cancel recording — Separate cancel button discards audio and sends silence so hub doesn't hang.
- Persistent mic stream — Mic permission acquired once and stream reused. Fixes background tab recording (no re-prompt when unfocused).
Multi-Session¶
- Background audio buffering — Background sessions buffer TTS audio. Plays on tab switch before resuming conversation.
- Pause/resume on tab switch — Switching away pauses audio, switching back resumes from where it stopped.
- Background pending listen — If a background session wants mic input, it activates when you switch to that tab.
- Stop recording on tab switch — Discards in-progress recording when switching away to prevent cross-session audio.
- Tab badge notifications — Badge appears on tabs with pending audio or listen requests.
Audio¶
- Audio feedback cues — Ascending tone for listening, soft tone for processing, chime for session ready.
- No recording timeout — Removed the 120-second timeout on voice recording.
- Per-session speed control — Adjustable TTS speed (0.75x–2x) per session.
- Voice interrupt — Interrupt Claude by speaking instead of tapping the button. VAD detects speech during playback, stops audio, and starts recording immediately. Toggle: "Auto Interrupt".
- Thinking sounds — Periodic double-tick audio cue via Web Audio API while Claude is processing. Only plays on the focused session tab.
- Thinking indicator in chat — Animated pulsing dots in the chat transcript while Claude is processing. Disappears when the agent responds.
Debug¶
- Inline debug panel — Debug tab showing hub info, service connectivity, active sessions, tmux sessions, and log tail. Auto-refreshes every 5 seconds.
Branding & Docs¶
- Favicon and tab title — Custom SVG mic favicon, tab title "ClawMux".
- Human guide —
docs/guide/overview.md— what it is, how to use it, controls reference. - Agent reference —
docs/agents/agent-reference.md— file map, code pointers, endpoints, debugging.