Skip to content

Conversation

@ai-cora
Copy link
Collaborator

@ai-cora ai-cora commented Feb 9, 2026

Summary

  • Add in-process WebSocket client that connects to voicemode.dev to track remote devices (phones, browsers)
  • Both MCP service("connect", "status") and CLI voicemode connect status now show connected remote devices
  • Phase 1: device status visibility only, no audio routing through Connect yet

Changes

File Description
voice_mode/config.py CONNECT_AUTO_ENABLED and CONNECT_WS_URL config vars
voice_mode/connect_registry.py New singleton WebSocket client with auto-reconnect, heartbeat, lazy init
voice_mode/tools/service.py Extended connect status to show standby process + WS client + remote devices
voice_mode/cli.py Added remote device listing to voicemode connect status CLI command
tests/test_connect_registry.py 25 unit tests for DeviceInfo, ConnectRegistry, message handling

Test plan

  • uv run pytest tests/test_connect_registry.py -v — 25 tests pass
  • Existing test suite — no regressions (814 passed, 25 pre-existing failures)
  • Manual: service("connect", "status") via MCP shows remote devices
  • Manual: voicemode connect status CLI shows remote devices
  • Manual: Verify graceful degradation with no credentials

🤖 Generated with Claude Code

mbailey and others added 6 commits February 9, 2026 14:21
… audio

Add documentation for manual transcription recovery when Whisper STT fails
but audio was successfully recorded. This allows recovery of user speech
without asking them to repeat themselves.

Changes:
- Add "STT Recovery - Manual Transcription" section to voicemode SKILL.md
- Expand "No Speech Detected" troubleshooting with manual recovery steps
- Add "Audio Saving & Debugging" section to converse-parameters.md
- Document SAVE_AUDIO, SAVE_ALL, and DEBUG config options
- Include safe bash examples with file existence checks
- Cross-link between documentation sections

Related to VM-220 (STT fallback in review)

Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
…e visibility

Connect to voicemode.dev WebSocket gateway to show remote devices (phones,
browsers) alongside local services. Both MCP service("connect", "status")
and CLI `voicemode connect status` now display connected remote devices.

- Add CONNECT_AUTO_ENABLED and CONNECT_WS_URL config vars
- Add connect_registry.py singleton with async WebSocket client
- Extend service.py connect status to show in-process WS client
- Add remote device listing to CLI connect status command
- Add 25 unit tests for connect registry

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
VoiceMode does not connect to voicemode.dev without explicit user
opt-in. Users must set VOICEMODE_CONNECT_AUTO=true to enable the
in-process WebSocket client. The CLI `voicemode connect status`
command still shows remote devices as that is an explicit user action.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update Connect docs to cover the new in-process WebSocket client:
- reference/mcp-tools.md: document service tool, config vars, privacy
- setup/claude-code.md: add local device visibility section
- architecture.md: add local MCP server component description

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The test_standby_uses_stored_credentials test was hanging because
websockets is installed, so the standby command attempted a real
WebSocket connection with retry loop. Mock websockets.sync.client.connect
with KeyboardInterrupt to exit cleanly after verifying auth works.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@mbailey mbailey merged commit 1916f13 into master Feb 9, 2026
0 of 6 checks passed
@mbailey mbailey deleted the task/VM-633-connect-registry-websocket branch February 9, 2026 22:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants