Code of Conduct
We follow the Contributor Covenant Code of Conduct: be respectful, be constructive, assume good intent.Ways to contribute
Report a bug
- Search existing issues first.
- Open a new issue with the Bug Report template.
- Include the VoiceGateway version (
voicegw --version), Python version, OS, and a minimal reproducible example. - Redact API keys from any attached logs.
Suggest a feature
- Open an issue with the Feature Request template.
- Describe the use case, not just the solution.
- If proposing a new provider, link the provider’s API docs and pricing page. Most provider requests are actually a pricing entry, not a code change.
Submit a pull request
1
Fork and branch
Naming convention:
feat/<description>, fix/<description>, docs/<description>, test/<description>.2
Set up your environment
Follow Development Setup.
3
Make your changes
Follow Code Style.
4
Write tests
Cover new or changed behavior. See Testing.
5
Run the full suite
pytest and ruff check . must pass locally; mypy runs in CI (see Code Style for the pinned version).6
Commit
Use Conventional Commits.
7
Open a PR against main
Describe what changed and why.
Improve documentation
Docs source lives indocs/ in this repo and is rendered by Mintlify at https://docs.voicegateway.dev. Even small fixes (typos, broken links, clearer examples) are welcome.
PR checklist
-
pytestpasses -
ruff check .passes -
mypypasses (see Code Style) - New public APIs have Google-style docstrings
- Commit messages use Conventional Commits format
- Docs are updated in the same PR if behavior changed
- No secrets or API keys in the diff
First-time contributors
Look forgood first issue. Common starting points:
- Adding or verifying a voice-prices pricing entry for a model
- Improving test coverage for an existing module
- Fixing a documentation gap
Getting help
- GitHub Discussions for questions
- Tag
@mahimaion an issue if you’re blocked
Contributing pages
Development Setup
Clone, install, and run the test suite locally.
Adding a Provider
Add a voice-prices entry so a provider/model resolves to a cost.
Testing
pytest fixtures, async patterns, and coverage expectations.
Code Style
ruff, mypy, docstrings, Conventional Commits, naming conventions.
Refreshing Pricing
Update rates in voice-prices and bump the pin in VoiceGateway.