Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Global owners for the entire repo
* @hickeyma @vMaroon @elevran
Comment thread
hickeyma marked this conversation as resolved.

# vLLM extensions
/vllm/ @hickeyma
62 changes: 62 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Bug Report
description: Create a report to help us improve
type: bug
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!

Please do **not** use this form to report a security vulnerability —
follow [SECURITY.md](https://github.com/llm-d/llm-d-api-extensions/blob/main/SECURITY.md) instead.
- type: dropdown
id: component
attributes:
label: Component
description: First, tell us which component we should focus on
options:
- I don't know
- vLLM / server introspection - config
- vLLM / server introspection - devices
- vLLM / server introspection - kv-cache
- Packaging and install
- Documentation
- CI
default: 0
validations:
required: true
- type: textarea
id: describe
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is
placeholder: Tell us what's wrong
validations:
required: true
- type: textarea
id: reproducer
attributes:
label: Steps to reproduce
description: Steps to reproduce the behavior
placeholder: I did (A), then (B) and then I saw (C) error
validations:
required: true
- type: textarea
id: environment
attributes:
label: Environment
description: How the server was launched and what it is running
placeholder: |
- Inference server and version (e.g. vLLM 0.11.0)
- llm-d-api-extensions-vllm version
- VLLM_PLUGINS value and any relevant `vllm serve` flags
- Python version, platform, accelerator
render: markdown
validations:
required: true
- type: textarea
id: extra
attributes:
label: Additional context or screenshots
description: Add any other context about the problem here
placeholder: Anything else you want to say to the report, attach screenshots, this is the place
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: Security vulnerability
url: https://github.com/llm-d/llm-d-api-extensions/blob/main/SECURITY.md
about: Please report vulnerabilities privately, not as a public issue.
- name: llm-d project discussion
url: https://github.com/llm-d/llm-d/issues
about: For questions about llm-d as a whole rather than these extensions.
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/feature.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Feature Request
description: Suggest a new extension, endpoint or improvement
type: feature
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to suggest an improvement!
- type: textarea
id: problem
attributes:
label: What problem does this solve?
description: Describe the use case. What does llm-d need that it cannot get today?
placeholder: Routing decisions need X, which is not exposed by any current endpoint
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: |
If you are proposing an endpoint, sketch the route and an example response.
Note whether it needs an engine, and any server flags it would require.
validations:
required: true
- type: dropdown
id: server
attributes:
label: Inference server
options:
- vLLM
- Another server (please describe below)
- Not server specific
default: 0
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Including whether this belongs upstream in the inference server instead
39 changes: 39 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: Pull request
about: Create a pull request
---

## Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

Fixes # (issue)

## Type of change

Please delete options that are not relevant.

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update

## How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.

### Test configuration

- Inference server and version:
- Python version and platform:
- `VLLM_PLUGINS` value and relevant `vllm serve` flags:

## Checklist

- [ ] My changes follow the style guidelines of this project
- [ ] I have performed a self-review of my own changes
- [ ] I have signed off my commits (`git commit -s`, per the [DCO](https://developercertificate.org/))
- [ ] `ruff check .` and `ruff format --check .` pass
- [ ] `pytest tests/ -v` passes
- [ ] Any new endpoint is opt-in, namespaced under `/plugins/llm-d-<extension>/...` and documented in `vllm/README.md`
- [ ] I have updated the documentation accordingly
26 changes: 26 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Dependabot configuration for llm-d-api-extensions
# Based on the canonical config from llm-d/llm-d-infra

version: 2
updates:

# GitHub Actions dependencies
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
labels:
- "dependencies"
- "release-note-none"
commit-message:
prefix: "deps(actions)"

# Python dependencies for the vLLM extensions
- package-ecosystem: "pip"
directory: "/vllm"
schedule:
interval: "weekly"
labels:
- "dependencies"
commit-message:
prefix: "deps(pip)"
37 changes: 37 additions & 0 deletions .github/workflows/ci-lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CI - Lint and Format
Comment thread
hickeyma marked this conversation as resolved.

on:
pull_request:
branches:
- main
push:
branches:
- main

permissions:
contents: read

jobs:
ruff:
runs-on: ubuntu-latest
defaults:
run:
working-directory: vllm
steps:
- name: Checkout source
uses: actions/checkout@v7

# Checks only, never modifies files in CI.
- name: Run Ruff lint check
uses: astral-sh/ruff-action@v3
with:
version: "0.15.11"
src: "./vllm"
args: "check --output-format=full"

- name: Run Ruff format check
uses: astral-sh/ruff-action@v3
with:
version: "0.15.11"
src: "./vllm"
args: "format --check --diff"
47 changes: 47 additions & 0 deletions .github/workflows/ci-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: CI - Unit Tests

on:
pull_request:
branches:
- main
push:
branches:
- main

permissions:
contents: read

jobs:
unit-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
defaults:
run:
working-directory: vllm
steps:
- name: Checkout source
uses: actions/checkout@v7

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip

# `vllm` is a heavyweight GPU oriented dependency and the unit tests only
# need a handful of symbols from it (`vllm.logger`, `vllm.tasks`), so
# install it on its own rather than pulling the whole project dependency
# set through `pip install -e .`.
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --extra-index-url https://download.pytorch.org/whl/cpu vllm
pip install fastapi 'pydantic>=2' pytest pytest-asyncio httpx

# The opt-in e2e tests skip themselves unless RUN_VLLM_E2E is set. They
# download model weights and launch a real server which CI does not do.
- name: Run unit tests
run: pytest tests/ -v
41 changes: 41 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Python bytecode
__pycache__/
*.py[cod]
*$py.class

# Packaging / build artifacts
build/
dist/
*.egg-info/
*.egg
.eggs/
wheels/

# Virtual environments
.venv/
venv/
ENV/

# Test and tool caches
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
.coverage.*
htmlcov/
coverage.xml
.tox/
.nox/

# Editors / IDEs
.idea/
*.swp
*.swo
.vscode/

# OS
.DS_Store
Thumbs.db

# Local model / server artifacts pulled down by the opt-in e2e tests
*.log
34 changes: 34 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## Code of Conduct and Covenant

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.Attribution
This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at <https://www.contributor-covenant.org/version/1/4/code-of-conduct.html>

For answers to common questions about this code of conduct, see <https://www.contributor-covenant.org/faq>
Loading
Loading