Installer for VoiceMode - handles system dependencies and installation
Project description
voice-mode-install
A standalone installer package for VoiceMode that handles system dependency detection and installation.
Overview
voice-mode-install simplifies the VoiceMode installation process by:
- Detecting your platform - Identifies your OS, distribution, and architecture
- Checking dependencies - Scans for required system packages
- Installing packages - Uses your system's package manager (apt, dnf, brew)
- Installing VoiceMode - Runs
uv tool install voice-mode - Hardware recommendations - Suggests optimal configuration for your system
- Logging everything - Saves installation logs for troubleshooting
Quick Start
# Install and run
uvx voice-mode-install
# Dry run (see what would be installed)
uvx voice-mode-install --dry-run
# Install specific version
uvx voice-mode-install --voice-mode-version=5.1.3
# Skip service installation
uvx voice-mode-install --skip-services
# Non-interactive mode
uvx voice-mode-install --non-interactive
Prerequisites
- uv - Required to run the installer (
curl -LsSf https://astral.sh/uv/install.sh | sh) - Python 3.10+ - Usually pre-installed on modern systems
- sudo access - Needed to install system packages (Linux)
- Homebrew (macOS) - The installer will offer to install it if missing
Supported Platforms
- macOS - Intel and Apple Silicon (via Homebrew)
- Ubuntu/Debian - Using apt package manager
- Fedora/RHEL - Using dnf package manager
Features
Phase 1 (Included)
✅ Dry-run Mode - Preview what will be installed
✅ Installation Logging - Detailed logs saved to ~/.voicemode/install.log
✅ Shell Completion - Auto-configures tab completion for bash/zsh
✅ Health Check - Verifies installation after completion
✅ Version Pinning - Install specific VoiceMode versions
✅ Hardware Detection - Recommends optimal setup for your system
✅ Homebrew Auto-Install - Offers to install Homebrew on macOS if missing
Phase 2 (Future)
⏱️ Config Validation - Check for conflicting settings ⏱️ Uninstall Support - Clean removal of VoiceMode
How It Works
- Platform Detection - Identifies OS, distribution, and architecture
- Dependency Checking - Compares installed packages against
dependencies.yaml - Package Manager Setup (macOS only) - Checks for Homebrew and offers to install if missing
- Package Installation - Uses platform-specific package managers:
- macOS:
brew install(installs Homebrew first if needed) - Ubuntu/Debian:
sudo apt install - Fedora:
sudo dnf install
- macOS:
- VoiceMode Installation - Runs
uv tool install voice-mode[==version] - Post-Install - Configures shell completion and verifies installation
Installation Logs
Logs are saved to ~/.voicemode/install.log in JSONL format:
{"timestamp": "2025-10-12T10:30:00", "type": "start", "message": "Installation started"}
{"timestamp": "2025-10-12T10:30:15", "type": "check", "message": "Checked core dependencies"}
{"timestamp": "2025-10-12T10:30:45", "type": "install", "message": "Successfully installed system packages"}
{"timestamp": "2025-10-12T10:31:30", "type": "complete", "message": "Installation completed"}
Troubleshooting
VoiceMode command not found after installation
Restart your shell or run:
source ~/.bashrc # or ~/.zshrc for zsh
Permission denied during package installation
The installer needs sudo access to install system packages. Run:
sudo -v # Refresh sudo credentials
uvx voice-mode-install
Network errors during installation
- Check your internet connection
- Try again with:
uvx voice-mode-install - Use
uvx --refresh voice-mode-installto get the latest installer
Installation hangs or fails
- Check the log file:
~/.voicemode/install.log - Try a dry run:
uvx voice-mode-install --dry-run - Report issues with log file attached
Development
Building from Source
cd installer/
uv build
Testing Locally
cd installer/
uv pip install -e .
voice-mode-install --dry-run
Project Structure
installer/
├── pyproject.toml # Package definition
├── voicemode_install/
│ ├── __init__.py # Version and exports
│ ├── cli.py # Main CLI entry point
│ ├── system.py # Platform detection
│ ├── checker.py # Dependency checking
│ ├── installer.py # Package installation
│ ├── hardware.py # Hardware detection
│ ├── logger.py # Installation logging
│ └── dependencies.yaml # System dependencies
└── README.md
Design Decisions
See DECISIONS.md in the task directory for detailed rationale behind:
- Version management strategy
- Dependency synchronization approach
- Error handling philosophy
- Platform coverage priorities
- Service installation scope
Contributing
This installer is part of the VoiceMode project.
License
MIT License - Same as VoiceMode
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file voice_mode_install-7.0.0.tar.gz.
File metadata
- Download URL: voice_mode_install-7.0.0.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35b4d3dfb40270ff4f2546f0041252d2e44044eb43b69088f8c9f3dfbba4bc5d
|
|
| MD5 |
44e4aeedad19b7a70932e6487d6b078f
|
|
| BLAKE2b-256 |
9c592f451edfd5453a393a435344cfc90aaeaa05c9591b23240124bfcf4cd7e6
|
Provenance
The following attestation bundles were made for voice_mode_install-7.0.0.tar.gz:
Publisher:
publish-pypi-and-mcp.yml on mbailey/voicemode
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
voice_mode_install-7.0.0.tar.gz -
Subject digest:
35b4d3dfb40270ff4f2546f0041252d2e44044eb43b69088f8c9f3dfbba4bc5d - Sigstore transparency entry: 727799294
- Sigstore integration time:
-
Permalink:
mbailey/voicemode@590f3e76127537e67da059ac871afba29a3c2d97 -
Branch / Tag:
refs/tags/v7.0.0 - Owner: https://github.com/mbailey
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi-and-mcp.yml@590f3e76127537e67da059ac871afba29a3c2d97 -
Trigger Event:
push
-
Statement type:
File details
Details for the file voice_mode_install-7.0.0-py3-none-any.whl.
File metadata
- Download URL: voice_mode_install-7.0.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db8ea36c4c90c0c96c7eee27b7ef4618c53486c8bcd187f78065772ac7155de7
|
|
| MD5 |
102b12015eed223841bff8d077b30637
|
|
| BLAKE2b-256 |
22a2b5b7521b9a8430a18efd7948b988a958787890f8d6b5e85096cf9eb44f0b
|
Provenance
The following attestation bundles were made for voice_mode_install-7.0.0-py3-none-any.whl:
Publisher:
publish-pypi-and-mcp.yml on mbailey/voicemode
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
voice_mode_install-7.0.0-py3-none-any.whl -
Subject digest:
db8ea36c4c90c0c96c7eee27b7ef4618c53486c8bcd187f78065772ac7155de7 - Sigstore transparency entry: 727799323
- Sigstore integration time:
-
Permalink:
mbailey/voicemode@590f3e76127537e67da059ac871afba29a3c2d97 -
Branch / Tag:
refs/tags/v7.0.0 - Owner: https://github.com/mbailey
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi-and-mcp.yml@590f3e76127537e67da059ac871afba29a3c2d97 -
Trigger Event:
push
-
Statement type: