Skip to main content

Code of Conduct

We follow the Contributor Covenant Code of Conduct: be respectful, be constructive, assume good intent.

Ways to contribute

Report a bug

  1. Search existing issues first.
  2. Open a new issue with the Bug Report template.
  3. Include the VoiceGateway version (voicegw --version), Python version, OS, and a minimal reproducible example.
  4. Redact API keys from any attached logs.

Suggest a feature

  1. Open an issue with the Feature Request template.
  2. Describe the use case, not just the solution.
  3. 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

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).
7

Open a PR against main

Describe what changed and why.

Improve documentation

Docs source lives in docs/ 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

  • pytest passes
  • ruff check . passes
  • mypy passes (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 for good 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

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.