Contributing#
Thank you for your interest in contributing. This document explains how to get started, how work is tracked, and what to expect from the review process.
Code of Conduct#
By participating in this project you agree to abide by the Code of Conduct.
Issue tracking#
Bug reports and feature requests are tracked as GitHub Issues. Before opening a new issue, search existing ones to avoid duplicates.
Branch and commit naming#
Use Conventional Commits for commit messages:
feat: add support for vLLM multi-GPU serving
fix: correct VRAM probe when amd-smi is absent
docs: clarify GPU selection flag behavior
chore: bump rust-toolchain to 1.96
Branch names should be short and descriptive:
feat/vllm-multi-gpu
fix/vram-probe-fallback
Development setup#
Prerequisites: Rust (see rust-toolchain.toml for the pinned version) and uv (for prek and scripts).
git clone https://github.com/ROCm/rocm-cli
cd rocm-cli
uv tool install prek # or: cargo install --locked prek
prek install # fast checks on every commit
prek install -t pre-push # heavier checks on push (clippy + tests)
prek runs the same checks locally that CI enforces: cargo fmt, clippy, cargo test, ruff (Python), shellcheck (shell), PowerShell syntax, and the generated manifests (MANIFEST.md, THIRD_PARTY_NOTICES.txt).
The manifest hooks only run when you change the dependency graph, and they rewrite the generated file rather than just reporting it stale — when that happens the commit stops so you can re-stage the refreshed file. THIRD_PARTY_NOTICES.txt additionally needs the pinned generator; without it that hook skips and CI remains the gate:
cargo install cargo-about@0.9.1 --locked --features cli # optional, for THIRD_PARTY_NOTICES.txt
Workspace layout#
Path |
Description |
|---|---|
|
Main CLI binary |
|
Background daemon |
|
Core library |
|
Dashboard TUI libraries |
|
Engine IPC protocol |
|
Inference engine adapters (lemonade, vllm) |
Test commands#
Component |
Command |
|---|---|
Rust (all crates) |
|
Lint + format check |
|
See docs/testing.md for the full test guide and docs/manual-testing.md for manual QA steps.
Making changes#
Fork the repository and create a branch from
main.Make your changes. Keep commits focused — one logical change per commit.
Add or update tests for any new behavior.
Run the relevant test suite before opening a PR.
Open a pull request against
mainwith a clear title and description following the Conventional Commits format.
Commit signing and sign-off#
Commits must be both cryptographically signed and carry a Developer Certificate of Origin (DCO) Signed-off-by trailer. Use git commit -s to add the trailer automatically. This is enforced by the prek hooks and by a blocking CI check.
Enable SSH signing once with:
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
See docs/commit-signatures.md for GPG signing, GitHub “Verified” status, and troubleshooting.
What reviewers look for#
Tests cover the new behavior
No secrets, credentials, or internal hostnames in committed files
Third-party dependencies declared in
Cargo.lock; license headers present on new source files (seelicenserc.toml)
Reporting security issues#
Do not open a public GitHub Issue for security vulnerabilities. See SECURITY.md for the responsible disclosure process.
License#
By contributing you agree that your contributions will be licensed under the MIT License.
More docs#
Testing and verification:
docs/testing.mdDeveloper manual QA:
docs/manual-testing.mdEngine plugin policy:
docs/engine-plugins.mdvLLM adapter:
docs/vllm.md