Tesserae
Free, open-source dashboard server for e-ink displays. Compose dashboards in a browser, render dithered frames, and push them over MQTT or REST to e-ink panels. Self-hosted, AGPL-3.0, no tracking.
On-device AI inference runtime for Qualcomm Snapdragon — run frontier LLMs and VLMs across CLI, Python, Android, and Docker.
Developer toolsGo · RustGitHub @qualcommOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Run frontier LLMs and VLMs locally on Qualcomm devices across NPU, GPU, and CPU with a few lines of code
Loading the full README.
Read the full README ↗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.
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.
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).
Install
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
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
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.
This is the beginning of the README. Read the rest at the original. Read the full README ↗