oaax-manager
Command-line tool to list and fetch OAAX 2.0 runtimes and conversion toolchains from the OAAX artifact store. Pure Python (standard library only), works on Linux, Windows and macOS.
Status: 0.1.0, the first release.
Install
Needs uv (it also provides Python 3.9+ if you have none), except for the .pyz. No dependencies. Pick one:
| You want | Command |
|---|---|
oaax-manager on your PATH, isolated |
uv tool install oaax-manager |
| to run it once, installing nothing | uvx oaax-manager list |
| a single file, any Python 3.9+, no uv | python oaax-manager.pyz list (from the Release) |
| the wheel from the GitHub Release | uv tool install ./oaax_manager-0.1.0-py3-none-any.whl |
| to install from a clone or a tag | uv tool install . or uv tool install git+https://github.com/OAAX-standard/oaax-manager@v0.1.0 |
- Pin a version for anything you script:
uv tool install oaax-manager==0.1.0(or the tag@v0.1.0; without it a git install gives you the latestmain). The artifact index is part of the release, so the same version always fetches the same bytes. - Upgrade with
uv tool upgrade oaax-managerand read the CHANGELOG. - Verify a release asset:
sha256sum -c SHA256SUMS(the sums are also in the release notes).
Use
| Command | What it does |
|---|---|
oaax-manager list [--kind K] [--vendor V] |
everything available; * marks runtimes built for this OS/CPU (several variants may match) |
oaax-manager fetch runtime <vendor> |
picks this machine's OS/arch, extracts to ./runtime-<vendor>-<version>-<os>-<arch>[-<variant>]/ (the hidden .oaax-manager.json inside records what was extracted) |
oaax-manager fetch toolchain <vendor> |
saves <name>-<version>.tar; then docker load -i <file> |
oaax-manager list --kind toolchain --vendor intel
oaax-manager fetch runtime nvidia-ort --variant cuda12 # several builds exist: you must choose (the error lists them)
oaax-manager fetch runtime cpu --os linux --arch aarch64 -o ./runtimes
oaax-manager fetch runtime cpu --artifact-version 2.0.0 # default: the newest version available for your platform
oaax-manager fetch toolchain intel -o ./toolchains
An existing runtime directory is never overwritten: delete it to fetch again. Running the same command again re-checks its files against the sha256 and permissions recorded at extraction, and fails, naming the file, if one is missing or changed (files you added are not checked).
What it guarantees
Integrity
- Every download is verified against the sha256 pinned in the package's
index.json. A mismatch is an error and nothing is extracted. - A size that differs from the pinned one (a vendor re-upload) is reported as such: upgrade oaax-manager.
- The same command on the same release always fetches the same bytes; the index is part of the release and is never fetched at run time.
Safe extraction
- Runtimes are extracted all-or-nothing: into a temporary directory, renamed only on success. Disk space is checked before downloading.
- Archives are checked before extraction. The rules are strict on purpose and identical on every OS:
- absolute paths and
..are refused; - links must be relative and point down, and nothing is written through an archive link;
- names that collide on Windows/macOS (case or Unicode variants,
CON,aux.*, trailing dots/spaces,:or\) are refused.
- absolute paths and
- Exotic members (a hard link to a symbolic link) are extracted as the running Python's
tarfiledoes, as a link or as a file; both are safe. - A future vendor archive that breaks the rules fails with a clear message instead of extracting something ambiguous. If a legitimate archive needs it, relax the rule deliberately in
src/oaax_manager/download.py.
Resilient downloads
- Interrupted downloads resume (
*.partfile) and transient network errors are retried; run the same command again if it still fails. - A link slower than 10 KB/s (averaged over 60 s) is reported once, not retried: the
.partis kept for the next run. - The
-odirectory may be a link to another disk. A toolchain.tarthat is already downloaded and verified may be a link too; a link to anything else is replaced by the download, so point-oat the bigger disk instead.
No surprises
- It never picks between builds for you (CUDA version, HailoRT version): it lists the choices.
fetch toolchainonly downloads the tar. It does not touch Docker; rundocker loadyourself.- A hidden
.<name>.lockfile stays next to each target: it stops two fetches of the same target running at once. Leave it, or delete it when no fetch is running.
Limits
- Interrupted extraction (Ctrl-C,
kill -9): run the same command again. A leftover<dir>.extractingfolder is removed, and the verified archive is reused without downloading it again. Only a kill right after the final rename can leave aruntime-*.tar.gzbehind: delete it yourself. - macOS: no OAAX runtime is published for macOS yet, so
fetch runtimesays so. Toolchains are Docker images and work wherever Docker runs. - Vendor SDKs that are behind a login are not handled.
More
- CONTRIBUTING.md: development, how the artifact index works, building and verifying release assets, releasing.
- CHANGELOG.md, SECURITY.md.
License
Apache 2.0, see LICENSE.
Metadata
Release files for oaax-manager 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| oaax_manager-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for oaax_manager-0.1.0-py3-none-any.whl |
Release files / oaax_manager-0.1.0-py3-none-any.whl
| Download URL | oaax_manager-0.1.0-py3-none-any.whl |
|---|---|
| Size | 26.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d0473fe525f40b16a786965c99624ecd4966b4c93cdaf752baced8f85896200
|
|
BLAKE2b-256 checksum How to use checksums |
f57bae1fc67885a8ab74f7d882ada534591316b4fd6f395199108bd5e19ce30d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.
Transparency logSecurity for oaax-manager 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 1 file in this release has been uploaded with provenance metadata.
Attestation for oaax_manager-0.1.0-py3-none-any.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.