仅支持骁龙设备,其他平台无法运行;qairt 运行时只走 NPU,且需要 Qualcomm AI Hub 的按芯片预编译包;llama.cpp 走 Hexagon NPU 时建议选 Q4_0 精度;serve 默认端口是 18181,不是常见的 8000。

GenieX
qualcommBSD-3-Clause活跃维护在骁龙设备的 NPU、GPU 和 CPU 上本地跑大模型和多模态模型,几行代码就能接入,省去自己适配硬件的麻烦。
Run frontier LLMs and VLMs locally on Qualcomm devices across NPU, GPU, and CPU with a few lines of code
pip install geniex
geniex infer google/gemma-4-E4B-it-qat-q4_0-gguf仅支持高通骁龙平台:Windows ARM64(Snapdragon X / X Elite)、Android(Snapdragon 8 Elite 等)、Linux ARM64(Dragonwing QCS9075)。README 未给出具体显存或内存要求。
在骁龙设备上本地跑前沿 LLM 和 VLM 的端侧推理运行时,几行代码即可调用 NPU、GPU 或 CPU
在骁龙设备的 NPU、GPU 和 CPU 上本地跑大模型和多模态模型,几行代码就能接入,省去自己适配硬件的麻烦。
核心能力
- 同一套 C SDK 提供 CLI、Python、Kotlin/Java、Docker 和 OpenAI 兼容服务
- 支持 Hugging Face、ModelScope、Docker Hub 的 GGUF 模型,也支持 Qualcomm AI Hub 预编译包
- llama.cpp 运行时覆盖 NPU、GPU、CPU,qairt 运行时专攻 NPU 峰值性能
- Python 接口对齐 transformers 的 from_pretrained 和 generate 用法
- geniex serve 起 OpenAI 兼容接口,默认监听 127.0.0.1:18181/v1
容易踩的坑
- v0.10.1-alpha.3pre-release2026-11-05 · 2026-11-05 14:24 UTC
查看更新说明
Hexagon HTP
Microsoft-signed HTP catalog (llama.cpp @
19cce6). No cert import required on Windows on Snapdragon.What's Changed
- test(server): align test files with their source files by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1631
- fix(cli): add serve --think default by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1629
- feat(sdk)!: report total and cached prompt tokens by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1632
- docs(android): bump geniex-android dependency to 0.10.0 by @jdtimothy in https://github.com/qualcomm/GenieX/pull/1628
- fix(sdk): clamp llama_cpp warmup decode to n_batch by @jdtimothy in https://github.com/qualcomm/GenieX/pull/1626
- docs: slim Claude skills to three and fix stale developer docs by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1635
- feat(sdk): add --output-logits raw float32 dump to geniex-bench by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1638
- fix(sdk): load MTP heads and keep the drafter KV in step with the target by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1639
- fix(sdk): load MTP heads and keep the drafter KV in step with the target by @TurtleTortOS in https://github.com/qualcomm/GenieX/pull/1637
- fix(cli): pass resolved Hugging Face token to pull by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1643
- fix(qdc): show failure logs in the Android test summary by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1642
- chore(dx): add CPU-only Docker wrapper for non-Snapdragon hosts by @shivaylamba in https://github.com/qualcomm/GenieX/pull/1636
- fix(sdk): layer-split >= 2 GiB models across HTP sessions on IQ9 NPU by @Hahahaooovvv in https://github.com/qualcomm/GenieX/pull/1634
- docs(docs): add BibTeX citation section to READMEs by @zhiyuan8 in https://github.com/qualcomm/GenieX/pull/1644
- docs(docs): add Gemma 4 E4B example to MTP tutorial by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1653
New Contributors
- @jdtimothy made their first contribution in https://github.com/qualcomm/GenieX/pull/1628
- @TurtleTortOS made their first contribution in https://github.com/qualcomm/GenieX/pull/1637
- @shivaylamba made their first contribution in https://github.com/qualcomm/GenieX/pull/1636
Full Changelog: https://github.com/qualcomm/GenieX/compare/v0.10.1-rc.1...v0.10.1-alpha.3
- v0.9.5-alpha.1pre-release2026-11-02 · 2026-11-02 07:21 UTC
查看更新说明
Hexagon HTP
Self-signed HTP catalog (llama.cpp @
f64a49). End users: importggml-htp-v1.cerper notes/run.md. Operators: promote per notes/release.md § Hexagon HTP signing.What's Changed
- feat(server): add GET /status endpoint by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1560
- fix(sdk): support flattened llama plugin layout by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1562
- fix(cli): trim trailing slash from proxy env URLs by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1565
- fix(cli): keep reasoning inline for run by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1566
- feat(server): report version, uptime and keepalive in /status by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1568
- fix(sdk): repair llama_cpp prompt prefix reuse by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1567
- fix(sdk): load nested plugin libraries on Android by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1571
- fix(sdk): retry interrupted HTTP range streams by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1573
- feat(sdk): expose QAIRT optrace configuration by @Davidqian123 in https://github.com/qualcomm/GenieX/pull/1575
- feat(server): add Prometheus /metrics endpoint by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1570
- feat(server): add GET /health endpoint by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1569
- perf(sdk): reduce unused VLM logits allocation by @shin0343 in https://github.com/qualcomm/GenieX/pull/1564
- feat(cli): add serve inference defaults by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1574
- fix(python): don't stream tokens the SDK rejected on cancel by @shin0343 in https://github.com/qualcomm/GenieX/pull/1577
- ci(ci): bench by org/name:quant id with descriptive run names by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1578
- ci(qdc): skip three slow CPU cases on the QCS9075M leg by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1579
- fix(server): suppress empty Gemma 4 thought markers by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1586
- fix(server): apply inline grammar to chat completions by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1587
- fix(sdk): invalidate stale progress markers by @aniruddhaadak80 in https://github.com/qualcomm/GenieX/pull/1488
- fix(sdk): reject malformed ZIP64 metadata by @aniruddhaadak80 in https://github.com/qualcomm/GenieX/pull/1490
- fix(ci): install ca-certificates in the Android QDC Termux bundle by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1585
- test(sdk): route stale bitmap test through chunk size init by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1588
- chore(deps): bump pypa/gh-action-pypi-publish from 1.14.2 to 1.14.3 by @dependabot[bot] in https://github.com/qualcomm/GenieX/pull/1591
- fix(server): route GPT-OSS channels through tool-call scanner by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1589
- ci(build): bump Hexagon SDK to 6.7.0.0 and toolchain to v0.8 by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1583
- feat(sdk)!: propagate chat-template grammar to samplers by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1593
- chore(deps): bump docker/login-action from 4.6.0 to 4.7.0 by @dependabot[bot] in https://github.com/qualcomm/GenieX/pull/1597
- feat(server): add Spark2.5 tool-call support by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1598
New Contributors
- @shin0343 made their first contribution in https://github.com/qualcomm/GenieX/pull/1564
- @aniruddhaadak80 made their first contribution in https://github.com/qualcomm/GenieX/pull/1488
Full Changelog: https://github.com/qualcomm/GenieX/compare/v0.9.1...v0.9.5-alpha.1
- v0.10.1-rc.1pre-release2026-10-29 · 2026-10-29 09:50 UTC
查看更新说明
Hexagon HTP
Microsoft-signed HTP catalog (llama.cpp @
19cce6). No cert import required on Windows on Snapdragon.What's Changed
- refactor(cli): modernize Go syntax and stdlib usage by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1615
- fix(sdk): keep qairt plugin mapped past geniex_deinit by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1618
- fix(ci): clear Semgrep findings failing QC Preflight on main by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1619
- fix(cli): restore the opener a chat template puts in the prompt by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1621
- fix(cli): fill missing newlines around thinking output by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1622
- fix(sdk): safely reuse llama_cpp prompt prefixes by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1624
- perf(sdk): match llama.cpp MTP decode on HTP by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1625
Full Changelog: https://github.com/qualcomm/GenieX/compare/v0.10.0...v0.10.1-rc.1
- v0.10.0最新正式版2026-10-28 · 2026-10-28 00:06 UTC
Hexagon HTP
Microsoft-signed HTP catalog (llama.cpp @
19cce6). No cert import required on Windows on Snapdragon.What's Changed
- fix(sdk): support flattened llama plugin layout by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1562
- fix(cli): trim trailing slash from proxy env URLs by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1565
- fix(cli): keep reasoning inline for run by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1566
- feat(server): report version, uptime and keepalive in /status by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1568
- fix(sdk): repair llama_cpp prompt prefix reuse by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1567
- fix(sdk): load nested plugin libraries on Android by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1571
- fix(sdk): retry interrupted HTTP range streams by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1573
- feat(sdk): expose QAIRT optrace configuration by @Davidqian123 in https://github.com/qualcomm/GenieX/pull/1575
- feat(server): add Prometheus /metrics endpoint by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1570
- feat(server): add GET /health endpoint by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1569
- perf(sdk): reduce unused VLM logits allocation by @shin0343 in https://github.com/qualcomm/GenieX/pull/1564
- feat(cli): add serve inference defaults by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1574
- fix(python): don't stream tokens the SDK rejected on cancel by @shin0343 in https://github.com/qualcomm/GenieX/pull/1577
- ci(ci): bench by org/name:quant id with descriptive run names by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1578
- ci(qdc): skip three slow CPU cases on the QCS9075M leg by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1579
- fix(server): suppress empty Gemma 4 thought markers by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1586
- fix(server): apply inline grammar to chat completions by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1587
- fix(sdk): invalidate stale progress markers by @aniruddhaadak80 in https://github.com/qualcomm/GenieX/pull/1488
- fix(sdk): reject malformed ZIP64 metadata by @aniruddhaadak80 in https://github.com/qualcomm/GenieX/pull/1490
- fix(ci): install ca-certificates in the Android QDC Termux bundle by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1585
- test(sdk): route stale bitmap test through chunk size init by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1588
- chore(deps): bump pypa/gh-action-pypi-publish from 1.14.2 to 1.14.3 by @dependabot[bot] in https://github.com/qualcomm/GenieX/pull/1591
- fix(server): route GPT-OSS channels through tool-call scanner by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1589
- ci(build): bump Hexagon SDK to 6.7.0.0 and toolchain to v0.8 by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1583
- feat(sdk)!: propagate chat-template grammar to samplers by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1593
- chore(deps): bump docker/login-action from 4.6.0 to 4.7.0 by @dependabot[bot] in https://github.com/qualcomm/GenieX/pull/1597
- feat(server): add Spark2.5 tool-call support by @RemiliaForever in https://github.com/qualcomm/GenieX/pull/1598
- feat(sdk): support Qwen3-8B-Eaglet in the qairt plugin by @Davidqian123 in https://github.com/qualcomm/GenieX/pull/1580
- perf(sdk): row-split llama_cpp HTP devices across both NPUs on IQ9 by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1600
- chore(sdk): bump llama.cpp submodule to 7aca0d2ea by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1599
- ci(qdc): split QDC into a PR smoke tier and a nightly full tier by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1601
- docs(release): update HTP signing steps to match current ATT flow by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1
- v0.9.32026-10-19 · 2026-10-19 23:13 UTC
查看更新说明
Hexagon HTP
Microsoft-signed HTP catalog (llama.cpp @
e467e5). No cert import required on Windows on Snapdragon.What's Changed
- feat(server): add GET /status endpoint by @mengshengwu in https://github.com/qualcomm/GenieX/pull/1560
Full Changelog: https://github.com/qualcomm/GenieX/compare/v0.9.1...v0.9.3
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
The easiest way to run frontier LLMs & VLMs locally on Qualcomm devices
Documentation · Quickstart · Models · Community
GenieX is an on-device Gen AI inference runtime for Qualcomm devices. Bring almost any GGUF model from Hugging Face, ModelScope, or Docker Hub, or use a pre-compiled bundle from Qualcomm AI Hub. Run it locally on the Hexagon NPU, Adreno GPU, or CPU in a few lines of code. One C SDK underneath is exposed through a CLI, Python, Kotlin/Java, Docker, and an OpenAI-compatible server. It is the community version of Qualcomm GENIE.
Supported platforms
GenieX runs only on Qualcomm Snapdragon. Find your platform, then jump straight to the interface you want to use.
| Platform | Example devices | Jump to a quickstart |
|---|---|---|
| 🪟 Windows ARM64 (Compute) | Snapdragon X · X Elite | CLI · Python · Local server |
| 🤖 Android (Mobile) | Snapdragon 8 Elite · 8 Elite Gen 5 | Android SDK |
| 🐧 Linux ARM64 (IoT) | Dragonwing QCS9075 | CLI · Docker · Python |
No device on hand? Spin up a remote session on Qualcomm Device Cloud.
Quickstart
Pick your interface below. Each one follows the same three steps: Install, Run, and Docs. The examples show both runtimes: a GGUF model from Hugging Face, ModelScope, or Docker Hub (llama_cpp) and a pre-compiled bundle from Qualcomm AI Hub (qairt, NPU).
CLI
Install
- Windows ARM64 — download the installer, run it, then open a new terminal.
- Linux ARM64 — one line, no
sudo:curl -fsSL https://qaihub-public-assets.s3.us-west-2.amazonaws.com/qai-hub-geniex/install.sh | sh
Run — chat with any model in one line (drag in an image for VLMs):
# GGUF from Hugging Face → llama.cpp (NPU / GPU / CPU)
geniex infer google/gemma-4-E4B-it-qat-q4_0-gguf
# GGUF from ModelScope → llama.cpp (NPU / GPU / CPU)
geniex infer https://modelscope.cn/models/Qwen/Qwen3-0.6B-GGUF
# Pre-compiled bundle from Qualcomm AI Hub → Qualcomm AI Engine Direct (NPU)
geniex infer ai-hub-models/Qwen2.5-VL-7B-Instruct
# GGUF from Docker Hub (https://hub.docker.com/u/ai) → llama.cpp (NPU / GPU / CPU)
geniex infer docker.io/ai/gemma3
📖 Docs — Install · Quickstart · Command reference
Python
Install
pip install geniex
Run — mirrors Hugging Face transformers (from_pretrained() → .generate()):
# GGUF from Hugging Face → llama.cpp
from geniex import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("unsloth/Qwen3.5-2B-GGUF", precision="Q4_0")
messages = [{"role": "user", "content": "What is 2+2?"}]
prompt = model.tokenizer.apply_chat_template(messages, add_generation_prompt=True)
for chunk in model.generate(prompt, max_new_tokens=256, stream=True):
print(chunk, end="", flush=True)
model.close()
# Pre-compiled bundle from Qualcomm AI Hub → Qualcomm AI Engine Direct (NPU)
from geniex import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("ai-hub-models/Qwen3-4B")
messages = [{"role": "user", "content": "What is 2+2?"}]
prompt = model.tokenizer.apply_chat_template(messages, add_generation_prompt=True)
for chunk in model.generate(prompt, max_new_tokens=256, stream=True):
print(chunk, end="", flush=True)
model.close()
📖 Docs — Install · Quickstart · API reference
OpenAI-compatible server
Install — ships with the CLI (install above).
Run — pull any model (GGUF or Qualcomm AI Hub bundle), then serve an OpenAI-compatible API:
geniex pull ai-hub-models/Qwen3-4B-Instruct-2507
geniex serve # serves http://127.0.0.1:18181/v1
curl http://127.0.0.1:18181/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "ai-hub-models/Qwen3-4B-Instruct-2507",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Point any OpenAI client at http://127.0.0.1:18181/v1 — no code changes.
📖 Docs — Local server guide
Android (Kotlin / Java)
Install — add the SDK to your app module's build.gradle.kts:
dependencies {
implementation("com.qualcomm.qti:geniex-android:0.10.0")
}
Run — fastest path is the sample app (chat UI, model picker for GGUF + Qualcomm AI Hub bundles, VLM support):
The Android demo app lives in qualcomm/ai-hub-apps. Clone it, open the sample app in Android Studio, and hit Run.
📖 Docs — Install · Quickstart · API reference
Docker
Install
docker pull docker.io/qualcomm/geniex:latest
Run — the container wraps the CLI, so geniex infer … works exactly as above.
📖 Docs — Docker guide
C / C++ SDK
Install — link against the single C header sdk/include/geniex.h; every other interface is a thin wrapper over it.
📖 Docs — sdk/README.md · notes/build.md
Models
GenieX has two runtimes so you get broad model coverage and peak Snapdragon performance in one stack. Both LLMs and VLMs are supported.
llama.cpp (llama_cpp) | Qualcomm AI Engine Direct (qairt) | |
|---|---|---|
| Get models from | Hugging Face, ModelScope, or Docker Hub | Qualcomm AI Hub (pre-compiled) |
| Format | GGUF | Per-chipset bundle |
| Compute units | NPU · GPU · CPU | NPU only |
| Best for | Bringing your own GGUF | Highest NPU performance |
Run geniex model list to browse every Qualcomm AI Hub bundle currently available for your chipset. Use geniex model list --all to include all chipsets. The catalogue changes independently of GenieX, so the CLI provides a more current list than a static table in this README.
The qairt runtime uses the QAIRT libraries bundled with GenieX by default. Advanced users can select another compatible installation with --qairt-lib or GENIEX_QAIRT_LIB. See QAIRT runtime selection for details.
See GenieX releases for new model families, runtime features, fixes, and complete changelogs.
For llama.cpp, pick the
Q4_0precision when prompted — it has the best Hexagon NPU support. See the Models guide → for the full list, precisions, and how to run a local model.
🤝 Contributing
Contributions are welcome! Before opening a PR, please read CONTRIBUTING.md for branch naming, commit / PR title format, pre-commit checks, and the FFI-update rule for public SDK headers.
| 🏗️ Build the CLI, SDK, or Python bindings | notes/build.md |
| ▶️ Run & select compute units / pull models | notes/run.md |
| 🏷️ Release — SemVer tags, channels, HTP signing | notes/release.md |
| 📚 All developer docs | docs/README.md |
💬 Community & Contact
Questions, ideas, or want to show off what you built? Come say hi.
- 💬 Slack — ask questions and chat with the community in real time.
- 🐛 GitHub Issues — report a bug or request a feature.
- 🔗 LinkedIn — follow Qualcomm AI Hub for news and updates.
Contributors
Thanks to everyone building GenieX 💙
📑 Citation
If you use GenieX in your research or product work, please cite it:
@software{qualcomm_geniex,
title = {GenieX},
url = {https://github.com/qualcomm/GenieX},
publisher = {Qualcomm AI Hub},
author = {Chen, Wei and Li, Zhiyuan and Zhu, Lingyue and Chen, Hongzhi and
Wu, Mengsheng and Qian, Yichen and Zhu, Zhenxuan and
Cheng, Zhiyuan and Zhang, Dengchuan and Li, Yin and
Dong, Likuan and Cao, Wenwen},
year = {2026},
}
* Wei Chen and Zhiyuan Li contributed equally to this work.
📄 License
BSD 3-Clause — see LICENSE and NOTICE.
Use of this project is also subject to Qualcomm's Terms of Use.