Skip to content

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:

git clone https://github.com/vllm-project/vllm.git
cd vllm

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:

uv venv --python 3.12 --seed --managed-python
source .venv/bin/activate

If you are only developing vLLM's Python code, install vLLM using:

VLLM_USE_PRECOMPILED=1 uv pip install -e .

To rebuild only the Rust frontend binary:

./build_rust.sh          # release build
./build_rust.sh --debug  # faster build for development

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:

grep -v '^torch==' requirements/build/cuda.txt | uv pip install -r -

Finally install vLLM using:

uv pip install -e . --no-build-isolation

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:

uv pip install pre-commit>=4.5.1
pre-commit install

vLLM's pre-commit hooks will now run automatically every time you commit.

Tips

You can manually run the pre-commit hooks using:

pre-commit run     # runs on staged files
pre-commit run -a  # runs on all files (short for --all-files)

Some pre-commit hooks only run in CI. If you need to, you can run them locally with:

pre-commit run --hook-stage manual mypy-3.11

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:

uv pip install -r requirements/docs.txt

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:

Testing

vLLM uses pytest to test the codebase.

# Install the test dependencies used in CI (CUDA only)
uv pip install -r requirements/common.txt -r requirements/dev.txt --torch-backend=auto

# Install some common test dependencies (hardware agnostic)
uv pip install pytest pytest-asyncio