Contribute to Holoscan CLI
May 22, 2026 · View on GitHub
Welcome to Holoscan CLI! We're glad that you're considering contributing to the platform.
Holoscan CLI is released on GitHub as open source software to better support the community and facilitate feedback.
Reporting Feedback
Community feedback helps us improve the Holoscan CLI to better meet user needs. We use GitHub Issues to track feedback and problems over time, as well as to provide limited support to Holoscan CLI users.
Consider reviewing existing issues or opening a new issue if you:
- Have a question about using a Holoscan CLI feature
- Notice errors or unexpected behavior coming from Holoscan CLI
- Have an idea for a change that might benefit other users
When reporting an error, please include relevant details that will help our team investigate the issue. Details might include:
- A summary of the problem
- The behavior you have observed
- The behavior you expected
- Details about your PC, including the architecture (x86_64 or arm64) and GPU
- The version of Holoscan CLI where you observed the problem
- Any relevant logs or images to help investigate the issue
You can also refer to the Discussions section for support questions and community discussions.
For Holoscan SDK related issues, visit NVIDIA Developer Forums for support questions and community discussions.
Suggesting Changes
Users are welcome to suggest code changes to Holoscan CLI in the form of Issues or Pull Requests.
Issues
Please open a new issue if you'd like to request a new feature or propose a feature design. You can tag a specific community maintainer in your post with "@", or we'll update when we've had a chance to review your post.
Pull Requests
While we primarily develop Holoscan CLI internally, we also accept external contributions that help move the platform forward. We typically favor contributions that aim to fix an existing issue or improve documentation, but we'll also integrate new features and enhancements when they're aligned with the Holoscan CLI vision. Please check in with the development team to propose your idea before spending time working on new features. This will help prevent duplicate effort and avoid spending time on features that would be unlikely to be merged.
You might contribute to Holoscan CLI to help us address fixes earlier in our development cycle, or to suggest improvements to Holoscan CLI that you believe would broadly benefit the Holoscan community.
Holoscan CLI follows a monthly release process that includes internal quality assurance. To add a fix or feature, we request that you fork Holoscan CLI, develop in a branch, and submit your change as a pull request against the latest Holoscan CLI release commit. If we accept your submission after external discussion, we will integrate those changes within our internal development and credit you in Git commit history. Any changes that we accept from community contributions will undergo quality assurance testing before they are included in the next Holoscan CLI release.
Note: We recommend that new GitHub users read GitHub's Getting Started guide before opening their first pull request.
Local development
Verifying changes locally before pushing keeps the CI feedback loop short and avoids tying up shared runners.
Set up the development environment
Python 3.10+ and Poetry 2.0+ are required. From a fresh clone:
poetry install --with test
pre-commit install # installs the local Git hooks
poetry install --with test mirrors the exact dependency set the Code Check
workflow installs, so passing locally is a strong signal.
Run the same checks CI runs
pre-commit run --all-files # ruff + black + isort + markdownlint
# + codespell + yaml/json/toml linters
# + cmakelint. Catches every lint
# failure `Code Check` would catch.
poetry run pytest -q # run the unit test suite.
If pre-commit run --all-files passes locally, Code Check's pre-commit
job will pass on push. If poetry run pytest passes, the test matrix will
pass on the same Python version locally (CI also runs 3.10 / 3.11 / 3.12 /
3.13; for full matrix coverage either use the Python you don't normally use,
or rely on CI).
Smoke-test the installed wheel
The smoke-test job in Code Check rebuilds the wheel, installs it into a
fresh venv, and runs .github/scripts/smoke_test.sh. To reproduce locally:
poetry build # writes dist/*.whl, dist/*.tar.gz
python -m venv /tmp/holoscan-cli-smoke
/tmp/holoscan-cli-smoke/bin/pip install dist/*.whl
.github/scripts/smoke_test.sh /tmp/holoscan-cli-smoke/bin
The script exercises --help, the version/lint/list/modes surfaces
against the in-tree smoke fixture at tests/fixtures/holohub_smoke/, and the
negative surface (removed commands, legacy console scripts). See the
README for
how to point the CLI at the fixture directly from your shell.
Test against the downstream wrappers
The HoloHub / I4H wrapper repos each carry a
test_holoscan_cli_consolidation.py that exercises the unified holoscan
CLI against their respective project trees. Point them at a local checkout
with HOLOSCAN_CLI_SOURCE:
cd /path/to/holohub
HOLOSCAN_CLI_SOURCE=/path/to/holoscan-cli \
python -m pytest -q -o addopts='' utilities/cli/tests/test_holoscan_cli_consolidation.py
When HOLOSCAN_CLI_SOURCE is set, the wrapper prepends that checkout's
src/ to PYTHONPATH so the in-progress branch is exercised end-to-end
without publishing a wheel first.
Triggering CI
-
Every push to any branch runs
Code Check(.github/workflows/main.yaml) — pre-commit, the pytest matrix, wheel/sdist build, wheel-content asserts, and the installed-wheel smoke test. -
Pull requests additionally run
CodeQL Advanced(.github/workflows/codeql.yaml) andDependency review(.github/workflows/dependency-review.yml). -
Manual TestPyPI release is the
Releaseworkflow (.github/workflows/release.yaml). Dispatch it via the CLI:gh workflow run release.yaml --ref <branch> \ -f version=vX.Y.Z \ -f rc=<optional-rc-number> \ -f ga=false # true only for an official GAThe dispatch creates
refs/tags/vX.Y.Zat the dispatch SHA, builds, smokes, publishes to TestPyPI, re-installs fromtest.pypi.org/simple/and re-smokes, and deletes the tag whenga=false(so RC dispatches leave no stray refs). See.github/CI.mdfor the full pipeline.
If you need to introduce or bump a third-party Action, see
.github/CI.md — the repo's
org-level Actions allowlist gates which references are usable.
Tracking Development
We take all community feedback into consideration. If we don't believe a proposed change aligns with our direction for Holoscan CLI, or if we don't expect we can prioritize a task within a reasonable time frame, we'll let you know by appropriately labeling or closing the issue or pull request with an explanatory comment.
For items that we do plan to pursue or integrate, we use GitHub Milestones to communicate our release planning. We will add community issues and pull requests to the approximate monthly release milestone when we expect to pursue that development. Issues that we mark as "needs triage" are not part of a milestone and will be revisited once each month to determine our priorities.
Additional Information
Please refer to the project README document for additional developer information. Happy coding!