Thank you for your interest in contributing.
Before diving in, read the design document — it explains the architecture, data-flow, metric names, and panel layout:
docs/superpowers/specs/2026-06-14-vllmstat-design.md
Python 3.10 or later is required.
python -m venv .venv
. .venv/bin/activate
pip install -e ".[dev,proxy]"This installs vllmstat in editable mode together with all development dependencies (pytest, pytest-asyncio, ruff, pyright). The optional proxy extra adds aiohttp for tee/proxy integration tests.
pytest -qAll 216 tests should pass. The suite covers pure logic (histogram quantiles, EWMA rates, KV compression), fleet polling, tee/log tailing, reverse proxy, GPU vendors (NVIDIA/AMD/Intel via sysfs and fdinfo), Docker discovery, providers (mock transport for the vLLM HTTP client), and the Textual app itself.
ruff check .
ruff format .ruff check enforces style rules (E, F, I, UP, B, W). ruff format auto-formats. Format before committing.
pyrightType-checking mode is basic targeting Python 3.10. Aim for zero errors.
This project follows test-driven development. For any new feature or bug fix:
- Write a failing test that captures the desired behaviour.
- Run the test to confirm it fails for the right reason.
- Implement the minimum code to make it pass.
- Confirm the full suite is still green.
- Commit.
Use Conventional Commits: feat(scope): ..., fix(scope): ..., docs: ..., ci: ..., test: ..., etc.
ruff check . && ruff format --check . && pyright && pytest -qAll four must be clean (zero ruff issues, zero format diffs, zero pyright errors, all tests passing) before opening a pull request.
Note: GitHub Actions CI (.github/workflows/ci.yml) is planned but not yet wired up in this repository. Run the full local gate above before submitting changes.