Multi-platform AI inference runtime (Snapdragon / Hexagon focus). Languages: C/C++ (SDK), Go (CLI), Python (bindings), Java/JNI (Android). Build systems: Bazel (CLI) + CMake (SDK).
- Never move or reuse a published git tag. If the wrong tag shipped, cut a higher one.
- Do not modify third-party code.
- Follow CONTRIBUTING.md for branch naming, commit / PR title format, pre-commit checks, and the FFI-update rule when changing public SDK headers.
- Compute-unit alias mapping lives in the SDK:
sdk/src/device.cpp(geniex_resolve_device). CLI, pybind, and Android are all thin wrappers over that one function — do not re-implement the alias table in a binding. Aliases:cpu/gpu/npu/hybrid, withnpu= pinHTP0andhybrid= emptydevice_id(llama.cpp's per-tensor HTP+CPU scheduler, the fast path on Snapdragon).n_gpu_layerspasses through the SDK unchanged for llama_cpp gpu / npu / hybrid; the CLI/binding default is-1, which llama.cpp reads as "all layers".cpuforces it to 0, and qairt forces it to 0 (its plugin rejects any non-zero value). Default when the user passes nothing:npufor bothllama_cppandqairt. QAIRT is NPU-only — other aliases are coerced with a warning, never an error. When changing the table, rebuild the SDK bridge (/build), then re-sync the table in notes/run.md § Compute-unit aliases. Any change togeniex.his an FFI change — see CONTRIBUTING.md.
- Build anything (CLI / SDK bridge / release installer) → run
/build. - Cut a release / bump the version → run
/release. - Onboarding the AI setup itself → see notes/AI.md.