Contributing to vLLM¶
Thank you for your interest in contributing to vLLM! Our community is open to everyone and welcomes all kinds of contributions, no matter how small or large. There are several ways you can contribute to the project:
- Identify and report any issues or bugs.
- Request or add support for a new model.
- Suggest or implement new features.
- Improve documentation or contribute a how-to guide.
We also believe in the power of community support; thus, answering queries, offering PR reviews, and assisting others are also highly regarded and beneficial contributions.
Finally, one of the most impactful ways to support us is by raising awareness about vLLM. Talk about it in your blog posts and highlight how it's driving your incredible projects. Express your support on social media if you're using vLLM, or simply offer your appreciation by starring our repository!
Job Board¶
Unsure on where to start? Check out the following links for tasks to work on:
License¶
See LICENSE.
Developing¶
The first step of contributing to vLLM is to clone the GitHub repository:
Then, configure your Python virtual environment.
It's recommended to use uv, a very fast Python environment manager, to create and manage Python environments. Please follow the documentation to install uv. After installing uv, you can create a new Python environment using the following commands:
If you are only developing vLLM's Python code, install vLLM using:
To rebuild only the Rust frontend binary:
If you are developing vLLM's Python and CUDA/C++ code, install Pytorch first:
uv pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu129
Then install the necessary build dependencies from requirements/build/cuda.txt, skipping torch as it was installed in the previous step:
Finally install vLLM using:
For more details about installing from source and installing for other hardware, check out the installation instructions for your hardware and head to the "Build wheel from source" section.
For an optimized workflow when iterating on C++/CUDA kernels, see the Incremental Compilation Workflow for recommendations.
Tip
vLLM is compatible with Python versions 3.10 to 3.13. However, vLLM's default Dockerfile ships with Python 3.12 and tests in CI (except mypy) are run with Python 3.12.
Therefore, we recommend developing with Python 3.12 to minimise the chance of your local environment clashing with our CI environment.
Linting¶
vLLM uses pre-commit to lint and format the codebase. See https://pre-commit.com/#usage if pre-commit is new to you. Setting up pre-commit is as easy as:
vLLM's pre-commit hooks will now run automatically every time you commit.
Tips
You can manually run the pre-commit hooks using:
Some pre-commit hooks only run in CI. If you need to, you can run them locally with:
Documentation¶
MkDocs is a fast, simple and downright gorgeous static site generator that's geared towards building project documentation. Documentation source files are written in Markdown, and configured with a single YAML configuration file, mkdocs.yaml.
Get started with:
Tip
Ensure that your Python version is compatible with the plugins (e.g., mkdocs-awesome-nav requires Python 3.10+)
MkDocs comes with a built-in dev-server that lets you preview your documentation as you work on it. From the root of the repository, run:
mkdocs serve # with API ref (~10 minutes)
API_AUTONAV_EXCLUDE=vllm mkdocs serve # API ref off (~15 seconds)
Once you see Serving on http://127.0.0.1:8000/ in the logs, the live preview is ready! Open http://127.0.0.1:8000/ in your browser to see it.
For additional features and advanced configurations, refer to the:
- MkDocs documentation
- Material for MkDocs documentation (the MkDocs theme we use)
Testing¶
vLLM uses pytest to test the codebase.