sdk/README.md
The native core of GenieX: a unified C ABI (include/geniex.h)
that runs LLMs and VLMs across multiple inference backends on Qualcomm
platforms (Windows ARM64, Linux ARM64, Android). Backends load as dynamic
plugins, so a build links only the engines it needs. The Go CLI, Python, and
Android bindings are all thin wrappers over this one library.
| Plugin | Engine | Compute units | Model format |
|---|---|---|---|
llama_cpp | llama.cpp / ggml | CPU, Adreno GPU, Hexagon NPU | GGUF |
qairt | Qualcomm QNN / QAIRT | Hexagon NPU | QAIRT .bin |
Both target the NPU but through separate user-space stacks consuming different model formats — they are not substitutes. See the top-level README § Runtimes & compute units.
flowchart LR
subgraph Backends
llama[llama.cpp]
qnn[QNN / QAIRT]
end
llama --> unified["libgeniex
(C ABI + headers)"]
qnn --> unified
unified --> py[Python binding]
unified --> android[Android AAR]
unified --> go[Go CLI]
unified --> cpp[C++ apps]
| Path | Contents |
|---|---|
include/ | Public C ABI (geniex.h) and plugin interfaces (plugin/). |
src/ | Core library — device resolution, LLM/VLM, registry, logging. |
plugins/ | Backend plugins: llama_cpp, qairt. |
model-manager/ | Rust model puller / cache shared by the CLI and bindings. |
benchmark/ | C inference benchmark driving the public API. |
Compute-unit alias resolution (cpu / gpu / npu / hybrid) lives in
src/device.cpp (geniex_resolve_device) — the single source
of truth for every binding. See notes/run.md § Compute-unit aliases.
See notes/build.md § Build the SDK for the
per-platform CMake recipes. After cmake --install, the libs and headers land
in pkg-geniex/, which the bindings and CLI consume.
| Binding | Docs |
|---|---|
| Python | bindings/python/README.md |
| Android | bindings/android/README.md |