> ## Documentation Index
> Fetch the complete documentation index at: https://qualcomm-0801e48b-fix-serve-reasoning-format.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Platforms & runtimes

> Snapdragon platforms supported by GenieX and which runtime to pick on each.

GenieX runs exclusively on Qualcomm Snapdragon — no x86 or non-Snapdragon ARM build. To get going, pick the **Snapdragon platform** you'll run on, then pick a **runtime** that matches the model you want to run.

## **Snapdragon platforms**

GenieX is supported across three Snapdragon families — compute, mobile, and IoT — covering Windows ARM64, Android, and Linux ARM64.

### Supported chipsets

These are the chipsets GenieX is validated on. Each row lists the **SoC identifier** you'd see from auto-detection, and the **AI Hub chipset id** used when pulling Qualcomm AI Hub Models.

| Family                                                  | Chipset                           | SoC id    | AI Hub chipset id                   |
| ------------------------------------------------------- | --------------------------------- | --------- | ----------------------------------- |
| **Compute** *(Windows ARM64 / Copilot+ PC)*             | **Snapdragon® X Elite**           | `X1E*`    | `qualcomm-snapdragon-x-elite`       |
|                                                         | **Snapdragon® X2 Elite**          | `X2E*`    | `qualcomm-snapdragon-x2-elite`      |
| **Mobile** *(Android)*                                  | **Snapdragon® 8 Elite**           | `SM8750`  | `qualcomm-snapdragon-8-elite`       |
|                                                         | **Snapdragon® 8 Elite Gen 5**     | `SM8850`  | resolved from `SM8850` *(see note)* |
| **IoT** *(Linux ARM64 — cameras, robotics, industrial)* | **Qualcomm® Dragonwing™ IQ-9075** | `QCS9075` | `qualcomm-qcs9075`                  |
|                                                         | **Qualcomm® Dragonwing™ IQ-8275** | `QCS8275` | `qualcomm-qcs8275`                  |

<Note>
  **Chipset vs. SoC id.** Snapdragon X-series parts are identified by their Oryon CPU SKU (`X1E80100`, `X2E80100`, …); every part within a generation shares one NPU architecture, so **all X Elite SKUs map to the same AI Hub asset** — including the X Plus and X2 Plus parts. Android reports its SoC through `ro.soc.model`, and Dragonwing boards through the device tree.

  On Android, GenieX passes the SoC id (e.g. `SM8850`) straight to Qualcomm AI Hub, which resolves it through its own alias table — GenieX deliberately keeps no second mapping. Pass the **SoC id**, not an AI Hub chipset name, and the right asset is selected. Variant suffixes are not exposed by `ro.soc.model`: a Galaxy S25 reports `SM8750`, not `SM8750-AC` (the alias for `qualcomm-snapdragon-8-elite-for-galaxy`), so pass the chipset explicitly if you need the variant asset.
</Note>

GenieX **auto-detects the chipset** on Windows on Snapdragon, Dragonwing Linux, and Android. Check what it found, or set it explicitly:

```bash theme={null}
geniex config get chipset          # show the detected (or configured) chipset
geniex config set chipset          # launch an interactive picker
```

<Warning>**Android requires an explicit chipset** for Qualcomm AI Hub pulls — auto-detect via `ro.soc.model` covers the CLI/SDK path, but the Android SDK needs `ModelPullInput.chipset` set to `"SM8750"` or `"SM8850"`. See [Android API reference](/en/run/android/api-reference#modelpullinput).</Warning>

### Interfaces per OS

| OS                                          | Interfaces                                                                                                                                       |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Windows ARM64** *(Compute / Copilot+ PC)* | <ul><li>[CLI](/en/run/cli/quickstart)</li><li>[Python SDK](/en/run/python/quickstart)</li><li>[Local server](/en/run/cli/local-server)</li></ul> |
| **Android** *(Mobile)*                      | <ul><li>[Android SDK](/en/run/android/quickstart) (Kotlin, Maven Central)</li></ul>                                                              |
| **Linux ARM64** *(Dragonwing IoT)*          | <ul><li>[Native install](/en/run/cli/install)</li><li>[Docker](/en/run/linux/install)</li></ul>                                                  |

The chipsets above are the validated set. GenieX may run on other Snapdragon parts within the same families — for everything Qualcomm AI Hub can compile for, see the [Qualcomm AI Hub device list](https://workbench.aihub.qualcomm.com/docs/hub/devices.html).

<Tip>**No device on hand?** Sign in to [Qualcomm Developer Cloud (QDC)](https://qdc.qualcomm.com/) for remote sessions on Snapdragon X Elite / X2 Elite, Snapdragon 8 Elite / 8 Elite Gen 5, and Dragonwing IQ-9075. See the [QDC walkthrough in the FAQ](/en/resources/faq#qdc-qualcomm-device-cloud).</Tip>

## **GenieX runtimes**

GenieX ships with two runtimes so you get both **broad model coverage** and **peak Snapdragon performance** in one stack:

* **`llama_cpp`** — any GGUF model on Hugging Face, running on Hexagon NPU, Adreno GPU, or CPU through Qualcomm's GGML Hexagon backend. The widest model selection.
* **`qairt`** ([Qualcomm® AI Engine Direct](https://www.qualcomm.com/developer/software/qualcomm-ai-engine-direct-sdk)) — pre-compiled bundles from [Qualcomm AI Hub](https://aihub.qualcomm.com/models/), compiled and quantized per chipset and pinned to the Hexagon NPU. The fastest path when your model is on Qualcomm AI Hub.

<Note>**Qualcomm AI Engine Direct** (also known as the *Qualcomm AI Engine Direct SDK*, *Qualcomm AI Runtime*, and historically *QAIRT*) is the official name. Throughout these docs we use the official name.</Note>

|                                          | **llama.cpp**                            | **Qualcomm AI Engine Direct**                      |
| ---------------------------------------- | ---------------------------------------- | -------------------------------------------------- |
| **Model format**                         | GGUF (any community model)               | Qualcomm AI Hub pre-compiled bundles               |
| **Compute units**                        | NPU / GPU / CPU                          | NPU only                                           |
| **Precisions (Quantizations) picked by** | You (`Q4_0`, `Q8_0`, `F16`, …)           | Pre-quantized in the bundle                        |
| **Best for**                             | Bringing your own GGUF from Hugging Face | Highest NPU performance on Qualcomm® AI Hub Models |

Pick **`llama_cpp`** for any GGUF from Hugging Face, or when you need CPU/GPU fallback (e.g. IoT devices without HTP). Pick **`qairt`** for the fastest NPU path on models published to Qualcomm AI Hub.

### Defaults

If you don't pass a compute unit:

| Runtime     | Default compute unit     |
| ----------- | ------------------------ |
| `llama_cpp` | `npu` (pinned to `HTP0`) |
| `qairt`     | `npu`                    |

For llama.cpp's HTP + CPU per-tensor scheduling (the faster path on Snapdragon), pass `hybrid` explicitly.

***

## **llama.cpp**

The `llama_cpp` runtime executes **any GGUF model** through llama.cpp with Qualcomm's GGML Hexagon backend. Pull any community GGUF from Hugging Face and run it on Snapdragon NPU, Adreno GPU, or pure CPU.

### Compute units

`--compute` maps to the underlying hardware as follows:

| Alias             | Effect                                                                                                                          |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `npu` *(default)* | Pin to Hexagon NPU (`HTP0`). Best NPU-only path.                                                                                |
| `gpu`             | Adreno GPU via OpenCL.                                                                                                          |
| `cpu`             | Pure CPU. Forces `nGpuLayers = 0`.                                                                                              |
| `hybrid`          | Empty `device_id` + `n_gpu_layers=-1` (all layers) — llama.cpp's per-tensor HTP+CPU scheduler. **The fast path on Snapdragon.** |

The precision you pick at `geniex pull` time also determines where the model lands — see [Precisions (Quantizations) Supported](/en/models/supported#precisions-quantizations-supported).

***

## **Qualcomm AI Engine Direct**

The `qairt` runtime executes pre-compiled bundles from **Qualcomm AI Hub** through [Qualcomm® AI Engine Direct](https://www.qualcomm.com/developer/software/qualcomm-ai-engine-direct-sdk). NPU-only, with the bundle compiled and quantized for a specific Snapdragon chipset — typically the fastest NPU path when your model is on Qualcomm AI Hub.

### Compute units

Qualcomm AI Engine Direct is **NPU only**.

| Alias             | Effect                                           |
| ----------------- | ------------------------------------------------ |
| `npu` *(default)* | Pin `HTP0` — the only supported path.            |
| `cpu` / `gpu`     | Coerced to `npu` with a warning. Never an error. |

### Runtime constraints

The bundle has its **precision, context length, and KV cache size baked in** — none can be changed at runtime. On Android, `nGpuLayers != 0` and `nCtx != 0` are rejected with `PARAM_NOT_SUPPORTED`; leave both at defaults and tune `max_tokens` / `enable_thinking` only. To change precision or context length, get a different bundle from [Qualcomm AI Hub](https://aihub.qualcomm.com/models/).

<br />

<div class="feedback-wrapper">
  <span class="feedback-label">Was this page helpful?</span>

  <div class="feedback-toggle">
    <input type="radio" name="feedback" id="feedback-yes" class="feedback-input" />

    <label for="feedback-yes" class="feedback-button">
      <img src="https://mintcdn.com/qualcomm-0801e48b-fix-serve-reasoning-format/Vzu4c3BkfaSFzrRk/Images/FeedBack/thumbs-up.svg?fit=max&auto=format&n=Vzu4c3BkfaSFzrRk&q=85&s=384912f8c94496cc5a1131c146471c69" alt="Thumbs up" class="feedback-icon" noZoom width="14" height="14" data-path="Images/FeedBack/thumbs-up.svg" />

      Yes
    </label>

    <input type="radio" name="feedback" id="feedback-no" class="feedback-input" />

    <label for="feedback-no" class="feedback-button">
      <img src="https://mintcdn.com/qualcomm-0801e48b-fix-serve-reasoning-format/Vzu4c3BkfaSFzrRk/Images/FeedBack/thumbs-down.svg?fit=max&auto=format&n=Vzu4c3BkfaSFzrRk&q=85&s=0b2dd6f4857f32d7378d8378f2410902" alt="Thumbs down" class="feedback-icon" noZoom width="14" height="14" data-path="Images/FeedBack/thumbs-down.svg" />

      No
    </label>
  </div>
</div>
