Thank you for your interest in contributing to voice-mode! This guide will help you get started with development.
- Python 3.10 or higher
- Astral UV - Package manager (install with
curl -LsSf https://astral.sh/uv/install.sh | sh) - Git
- A working microphone and speakers (for testing)
- System dependencies (see README.md for OS-specific instructions)
-
Clone the repository
git clone https://github.com/mbailey/voicemode.git cd voicemode -
Create a virtual environment
uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install in development mode
uv pip install -e . uv pip install -e .[dev,test] -
Set up environment variables
# Set your API key export OPENAI_API_KEY=your-key-here # Voice Mode will auto-generate ~/.voicemode/.voicemode.env on first run # You can edit this file to customize configuration
# Run all tests
pytest
# Run with coverage
pytest --cov=voice_mode
# Run specific test file
pytest tests/test_server_syntax.py- We use standard Python formatting conventions
- Keep imports organized (stdlib, third-party, local)
- Add type hints where appropriate
- Document functions with docstrings
- Update
.mcp.jsonto point to your development version - Run
mcpto test the connection - Use the voice tools to verify functionality
# Test TTS and audio playback
python -c "from voice_mode.core import text_to_speech; import asyncio; asyncio.run(text_to_speech(...))"-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
-
Run tests to ensure nothing is broken
-
Commit with descriptive messages
-
Push and create a pull request
Enable debug mode for detailed logging:
export VOICEMODE_DEBUG=trueDebug recordings are saved to ~/.voicemode/audio/
- Update dependencies: Edit
pyproject.tomland runuv pip install -e . - Build package:
make build-package - Run tests:
make test - Run linting:
make lint(if configured)
Feel free to open an issue if you have questions or need help getting started!