Qualcomm AI Hub Models CLI

August 31, 2026 · View on GitHub

A command-line tool for browsing and downloading Qualcomm® AI Hub Models.

  • Browse and filter the model catalog.
  • Inspect a model's metadata, performance, and numerics.
  • Download ready-to-run model assets for a specific runtime and device.
  • Explore the devices, chipsets, and runtimes supported by each release.

Installation

The CLI is lightweight. With dependencies, it takes only a few MB on disk.

Install from pypi:

pip install qai_hub_models_cli

This installs the qai-hub-models console entry point:

qai-hub-models --help

Quick start

# Find a pre-compiled asset and download it
qai-hub-models models                                  # browse the catalog
qai-hub-models info mobilenet_v2                        # details + download options
qai-hub-models fetch mobilenet_v2 --runtime tflite --precision float   # download it

Every command prints follow-up suggestions, so you can usually discover the next step from the output itself.

Commands

Run qai-hub-models <command> --help (e.g. qai-hub-models fetch --help) for the full flag list of any command.

Models

CommandPurposeExample
fetchDownload a model, or list options with -i/--info *qai-hub-models fetch mobilenet_v2 -r tflite -p float
infoShow metadata and download options for a modelqai-hub-models info mobilenet_v2
perfShow a model's performance metrics *qai-hub-models perf mobilenet_v2
numericsShow a model's accuracy metrics *qai-hub-models numerics mobilenet_v2
findSearch past releases for a matching asset *qai-hub-models find mobilenet_v2 -s qairt=2.45

* These commands accept filter flags to be passed, to narrow their results — see Filtering.

Customized Models (export from source)

CommandPurposeExample
exportExport a model to a Qualcomm runtime via AI Hub Workbenchqai-hub-models export mobilenet_v2 -r tflite -p float -d "Samsung Galaxy S25 (Family)"
evaluateEvaluate a model's accuracy on a dataset via AI Hub Workbenchqai-hub-models evaluate mobilenet_v2 -r tflite -p float -d "Samsung Galaxy S25 (Family)"
demoRun a recipe's demo, locally in PyTorch or on a hosted device with --eval-mode on-deviceqai-hub-models demo my_model
installInstall a recipe's dependency graph (its requirements.txt and pre/post pip commands, leaf-first)qai-hub-models install my_model
generate-filesRegenerate a recipe's auto-generated files (README.md, external_repos/__init__.py)qai-hub-models generate-files my_model
validateCheck a recipe for authoring errors — folder shape, manifest schema, model code, URLsqai-hub-models validate my_model
upload-to-hfPublish a recipe — its source and a generated model card — to Hugging Face as <your-hf-username>/<folder-name>, public and tagged qai-hub-models. Each upload makes the repo an exact copy of the folder. --private creates it private to review first. Its target is always read as a folder, not a model idqai-hub-models upload-to-hf my_model

These commands require the full qai_hub_models package (pip install qai_hub_models).

Recipe aliases

register gives a recipe folder a short name usable anywhere a <target> is accepted, so you don't retype paths. It also accepts a Hugging Face repo id, which it downloads first — community recipes live in their authors' own namespaces and are listed by tag:

BrowseURL
Everything publishedhttps://huggingface.co/models?other=qai-hub-models
Most downloadedhttps://huggingface.co/models?other=qai-hub-models&sort=downloads
Most likedhttps://huggingface.co/models?other=qai-hub-models&sort=likes
Newesthttps://huggingface.co/models?other=qai-hub-models&sort=created
Recently updatedhttps://huggingface.co/models?other=qai-hub-models&sort=modified

The sidebar's task, library, and license facets narrow that list further, and &pipeline_tag=image-classification (or &search=yolo) composes with the tag — so ?other=qai-hub-models&pipeline_tag=object-detection&sort=downloads is "the most-downloaded community detectors".

CommandPurposeExample
registerName a local recipe folder, or download one from Hugging Faceqai-hub-models register ashwmurt/yolov8_pose
unregisterDrop an aliasqai-hub-models unregister my_yolo
list-registeredShow every alias and where it pointsqai-hub-models list-registered

A target that exists on disk is always treated as a folder. Otherwise a single <owner>/<name> is treated as a Hugging Face repo id — ids only, not URLs — and downloaded to ~/.qaihm/cli/recipes/<alias>/. The repo is checked for a manifest.yaml before anything is downloaded, so a wrong id fails immediately rather than after a full fetch. The repo-id form needs the full qai_hub_models package; the local-folder form does not.

--version <tag|branch|commit> pins a specific version. upload-to-hf tags each upload v1, v2, … so --version v2 gets that exact version; without the flag you get the latest.

Aliases work as export / evaluate targets. install and generate-files need a path or a built-in model id.

Catalog

CommandPurposeExample
modelsList all available models *qai-hub-models models --domain "Computer Vision"
devicesList all supported devices *qai-hub-models devices
chipsetsList all supported chipsets *qai-hub-models chipsets
runtimesList all runtimes a model can be compiled toqai-hub-models runtimes
versionsList AI Hub Models versions supported by this CLIqai-hub-models versions

* These commands accept filter flags to be passed, to narrow their results — see Filtering.

Common flags

These flags are shared across most commands:

FlagDescription
-h, --helpShows all possible flags for the command, and exit
-v, --versionTarget a specific release (e.g. -v 0.45.0). Defaults to the version matching this CLI install
-q, --quietMachine-readable output: plain lists for listing commands, just the result path for fetch

Some filters and table columns require a recent release — the CLI tells you when one isn't available for the targeted version.

Environment variables

VariableDescription
QAIHM_AWS_SESSION_DURATIONOverrides the AWS session duration (seconds) written into ~/.saml2aws by validate_aws_credentials. Clamped to [3600, 28800] (1h–8h). Useful for long-running headless callers whose runs exceed the 1h default. Only applies when using the [internal] extra.

Set before running validate_aws_credentials:

export QAIHM_AWS_SESSION_DURATION=28800
validate_aws_credentials

Filtering

The starred commands above accept these filter flags (run qai-hub-models <command> --help for the full, per-command set). A record matches if it satisfies the given value(s):

FlagFilters by
-r, --runtimeRuntime name (see qai-hub-models runtimes).
-p, --precisionPrecision (e.g. float, w8a8).
-c, --chipsetChipset name (see qai-hub-models chipsets).
-d, --deviceDevice name (see qai-hub-models devices). Mutually exclusive with --chipset.
-s, --sdk-versionSDK/tool version, tool=version syntax (e.g. qairt=2.20). Use --help to see valid SDK names.

Most filters take multiple values and can be repeated; the catalog (models) also supports --domain, --use-case, --quantized, --llm, --aot/--jit, and -t/--tag.

qai-hub-models perf mobilenet_v2 -r qnn -c qualcomm-snapdragon-8gen3
qai-hub-models models --domain "Computer Vision" --quantized

Finding assets in past releases

When the current release no longer ships an asset you need, find searches released versions — newest first — for one matching the same filters fetch accepts, and reports the release(s) that have it:

# Newest release with tflite MobileNet-v2 assets that were tested with QAIRT 2.45
qai-hub-models find mobilenet_v2 -r tflite -s qairt=2.45

# Every matching release, not just the newest
qai-hub-models find mobilenet_v2 -r qnn -c qualcomm-snapdragon-8gen3 --all

Each match is printed with its download table and a ready-to-run fetch command pinned to that release (-v <version>). Add -q/--quiet to print just the matching version numbers, one per line.

Python API

Downloading models

Downloads can also be driven from Python via qai_hub_models_cli.fetch. This is the same code path the fetch command uses.

from qai_hub_models_cli.fetch import fetch, get_asset_url

# Download an asset and return the path on disk (extracts the zip by default).
path = fetch(
    model="mobilenet_v2",
    runtime="tflite",
    precision="float",
    output_dir="./assets",
    extract=True,
)
print(path)

# Device-specific (AOT-compiled) runtimes need a chipset or device.
path = fetch(
    model="mobilenet_v2",
    runtime="qnn",
    precision="w8a8",
    chipset="qualcomm-snapdragon-8gen3",
    output_dir="./assets",
)

# Resolve the download URL without downloading.
url = get_asset_url(
    model="mobilenet_v2", runtime="tflite", precision="float"
)

Reading metadata

The same metadata behind the listing commands is available as protobuf objects. Each getter takes a model ID (or display name) and an optional version, and results are cached:

from qai_hub_models_cli.proto_helpers.info import get_model_info
from qai_hub_models_cli.proto_helpers.perf import get_model_perf
from qai_hub_models_cli.proto_helpers.numerics import get_model_numerics
from qai_hub_models_cli.proto_helpers.manifest import get_manifest, get_manifest_entry
from qai_hub_models_cli.proto_helpers.platform import get_platform
from qai_hub_models_cli.proto_helpers.release_assets import get_model_release_assets

info = get_model_info("mobilenet_v2")          # ModelInfo: name, description, license, tags, …
print(info.name, info.domain)

perf = get_model_perf("mobilenet_v2")          # ModelPerf: per-device performance metrics
numerics = get_model_numerics("mobilenet_v2")  # ModelNumerics: per-device accuracy metrics
assets = get_model_release_assets("mobilenet_v2")  # ModelReleaseAssets: available downloads

manifest = get_manifest()                      # ReleaseManifest: every model in the release
for entry in manifest.models:
    print(entry.id, entry.display_name)

platform = get_platform()                      # PlatformInfo: supported devices, chipsets, runtimes

Each getter's module also provides a matching filter_* helper that applies the same filtering the CLI flags use:

from qai_hub_models_cli.proto_helpers.perf import filter_perf
from qai_hub_models_cli.proto_helpers.numerics import filter_numerics
from qai_hub_models_cli.proto_helpers.release_assets import filter_release_assets
from qai_hub_models_cli.proto_helpers.platform import filter_devices, filter_chipsets

Searching past releases

qai_hub_models_cli.find backs the find command. find_matching_releases searches releases (newest-first) and returns (version, matching_assets) pairs; find_in_version checks a single release and returns the matching assets or None.

from qai_hub_models_cli.find import find_matching_releases, find_in_version

# Newest release with a matching asset (first_only stops at the first hit).
hits = find_matching_releases(
    "mobilenet_v2", runtime="tflite", precision="float", first_only=True
)
for version, assets in hits:
    print(version, len(assets.assets))

# Check one specific release.
from packaging.version import Version
assets = find_in_version("mobilenet_v2", Version("0.52.0"), runtime="tflite")

See also