Skip to main content
Glama

Voice Mode

by mbailey
install-robustness-analysis.md6.02 kB
# Voice Mode Install Script Robustness Analysis ## Problem Summary The original install.sh script had critical reliability issues when invoking voice-mode CLI commands after MCP configuration: 1. **Inconsistent Command Detection**: Mixed logic trying both `voice-mode` and `uvx voice-mode` 2. **PATH Issues**: UV/UVX installation didn't guarantee immediate availability 3. **No Verification**: No check that voice-mode actually works after MCP setup 4. **Fragile Tests**: `uvx voice-mode --help` might work while actual commands fail 5. **Error Handling**: Poor error reporting and recovery guidance ## Robust Solution Implemented ### 1. Consistent Command Strategy ```bash check_voice_mode_cli() { # Always prefer uvx approach for consistency # This matches exactly how the MCP server is configured if command -v uvx >/dev/null 2>&1; then if timeout 30 uvx voice-mode --version >/dev/null 2>&1; then echo "uvx voice-mode" return 0 fi fi return 1 } ``` **Key Improvements:** - **Always use `uvx voice-mode`** - matches MCP configuration exactly - **Test with `--version`** - lightweight command that doesn't require full init - **Timeout protection** - prevents hanging on network issues - **Clear failure cases** - explicit error reporting ### 2. Enhanced PATH Management ```bash install_uvx() { # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh export PATH="$HOME/.local/bin:$PATH" # Immediate verification if ! command -v uvx >/dev/null 2>&1; then print_error "UV/UVX installation failed - command not found" return 1 fi # Functional test if ! uvx --version >/dev/null 2>&1; then print_error "UV/UVX installation failed - command not working" return 1 fi } ``` **Key Improvements:** - **Immediate verification** after installation - **Functional testing** to ensure uvx actually works - **PATH export** for current session - **Clear error messages** for debugging ### 3. Post-MCP Verification ```bash verify_voice_mode_after_mcp() { print_step "Verifying Voice Mode CLI availability after MCP configuration..." sleep 2 # Allow caching to settle if ! voice_mode_cmd=$(check_voice_mode_cli); then print_warning "Voice Mode CLI not available yet. This could be due to:" echo " • PATH not updated in current shell" echo " • uvx cache not refreshed" echo " • Network connectivity issues" echo "You can install services manually later with:" echo " uvx voice-mode whisper install" return 1 fi print_success "Voice Mode CLI verified: $voice_mode_cmd" return 0 } ``` **Key Improvements:** - **Verification step** after MCP configuration - **Helpful diagnostics** explaining potential issues - **Manual recovery instructions** for users - **Graceful degradation** when automated setup fails ### 4. Robust Service Installation ```bash install_service() { local service_name="$1" local voice_mode_cmd="$2" local description="$3" # Pre-flight check if ! timeout 30 $voice_mode_cmd $service_name --help >/dev/null 2>&1; then print_warning "$description service command not available" return 1 fi # Install with logging local temp_log=$(mktemp) if timeout 600 $voice_mode_cmd $service_name install --auto-enable 2>&1 | tee "$temp_log"; then if ! grep -qi "error\|failed\|traceback" "$temp_log"; then print_success "$description installed successfully" return 0 fi fi print_warning "$description installation may have failed" tail -10 "$temp_log" | sed 's/^/ /' return 1 } ``` **Key Improvements:** - **Pre-flight checks** ensure service commands exist - **Output capture** for better error diagnosis - **Success verification** checks for error keywords - **Detailed logging** shows actual failure output - **Longer timeout** (10 minutes) for large downloads ## Edge Cases Handled ### 1. Fresh System Installation - **UV/UVX not in PATH initially** → Export PATH immediately after install - **Python dependencies missing** → Install system packages first - **uvx cache empty** → Allow time for first-run initialization ### 2. Network Issues - **Slow downloads** → Extended timeout (10 minutes) - **Connectivity problems** → Clear error messages and manual instructions - **Package index failures** → Graceful fallback with instructions ### 3. Permission Issues - **Sudo requirements** → Early sudo caching with clear prompts - **File permissions** → Use user-local installations where possible - **Service installation** → Handle both systemd and launchd automatically ### 4. Platform Differences - **macOS vs Linux** → Different package managers and paths - **WSL2 audio** → Special audio configuration and troubleshooting - **Shell variations** → Support bash, zsh, different profile files ## Reliability Principles Applied ### 1. Test Early and Often - Verify UV/UVX installation immediately - Test voice-mode availability before attempting service installation - Pre-flight checks for each service command ### 2. Fail Fast with Clear Messages - Stop on critical failures (UV/UVX install) - Provide specific error messages - Include manual recovery instructions ### 3. Graceful Degradation - Continue setup if non-critical components fail - Provide manual installation commands - Clear success/failure reporting ### 4. Consistent Approach - Always use `uvx voice-mode` (matches MCP config) - Standardized error handling across functions - Unified logging and output capture ## Result The improved script now handles fresh system installations reliably by: 1. **Ensuring tools are available** before using them 2. **Using consistent command patterns** that match the MCP configuration 3. **Providing clear diagnostics** when things go wrong 4. **Offering manual recovery paths** for edge cases 5. **Testing functionality** not just presence This makes the installer work reliably across different environments while providing clear guidance when manual intervention is needed.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbailey/voicemode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server