-
Notifications
You must be signed in to change notification settings - Fork 0
CONTRIBUTING
Thanks for considering a contribution. This project aims to stay small, honest about what it has and hasn't been tested against, and dependency-light.
git clone https://github.com/DustinTrap/kvm-pilot
cd kvm-pilot
pip install -e ".[dev,totp,ws]"ruff check . # lint (and `ruff format .` if you like)
mypy src/kvm_pilot # types
pytest # tests
bandit -c pyproject.toml -r src/kvm_pilot # SAST — CI gates on this
pip-audit # dependency CVEs — CI gates on thisAll of these are installed by the [dev] extra above; run pip-audit inside
the project venv so it scans the same environment CI does.
CI runs the lint/type/test trio on Python 3.11, 3.12, and 3.13, plus a
security job (bandit + pip-audit) and a redfish-integration job that
drives the Redfish CLI path end-to-end against the DMTF-conformant sushy-tools
emulator. PRs should keep them all green. If your change touches the Redfish
driver or CLI dispatch, run what CI runs:
pip install "sushy-tools==2.2.0" && pytest tests/integration -m integration
(without sushy-emulator on PATH those tests silently skip).
-
Client/driver code stays stdlib-only at import time, but
pip install kvm-pilotships everything a user needs — CLI, skill, and MCP server. A user-facing surface lives undersrc/kvm_pilot/and its runtime dep is a base dependency (mcpfor the server); feature deps liketotp/wsstay optional extras, imported lazily. Don't hide a user-facing surface behind an extra. - No hard-coded model versions. The vision backends resolve or accept a model at runtime; don't bake a version string into the code.
-
Destructive operations are gated. If you add a method that can change a
target's running state (power, reset, media, GPIO, resets), add it to
DESTRUCTIVE_OPSand route it throughself.safety.guard(...). - Be honest about hardware. If you've tested on real hardware, say which device and firmware in the PR. The compatibility table in the README should reflect what's actually been verified versus assumed.
You don't need to write code to help. If you run kvm-pilot against a device
not in the compatibility table (PiKVM v3/v4, BliKVM, GL-RM1, etc.), open an
issue with what worked and what didn't — that's directly useful.
The test suite mocks the HTTP and vision layers, so you can run and extend it
with no device. See tests/conftest.py for the fakes. For end-to-end transport
coverage, tests/test_emulator.py drives the real KVMClient against a
pure-stdlib fake kvmd (tests/emulator.py) on 127.0.0.1 — no Docker, runs on
macOS and Linux.
If you use Claude Code, these skills help keep contributions consistent with the project's standards (optional aids — the CI checks above remain the gates):
-
/security-review— run before opening a PR. This project drives real hardware and handles credentials + secret redaction, so security review matters. -
/code-review— review your own diff for bugs andCLAUDE.mdcompliance. -
/claude-api— read before changing anything undersrc/kvm_pilot/vision/; it covers current Anthropic model ids and vision parameters. -
/find-skills— discover other useful skills in the ecosystem.
- Home
- Getting started
- Architecture
- CLI reference
- Configuration
- Design decisions
- Reflexes (RFC)
- Redfish reference
- Firmware registry
- Remote firmware update
- Unattended Linux installs
- Claude skill
- MCP server
- Contributing
- Security policy
- Analysis: 2026-07-01 deep review
- Analysis: 2026-07-03 RM1PE firmware + encoder
- Hardware compatibility