Native
September 17, 2026 ยท View on GitHub
The native/ package owns AIRunner's Python launcher entry point and
runtime layout helpers.
AIRunner is a Python application. There is no compiled C++ launcher and no bundle/installer packaging; the desktop app runs directly from the installed Python packages.
The llama.cpp / whisper.cpp sidecar binaries this launcher's runtime
depends on are no longer built here -- that build uses a different
toolchain (cmake/mingw-w64/ninja) and changes on its own cadence,
unrelated to this Python code, so it lives in its own repository,
Capsize-Games/airunner-native.
./scripts/install.sh downloads the pinned bundle from there (see
.github/native-sidecar-version at the repo root for which release).
flowchart LR Python[airunner_native launcher] --> GUI[src/ desktop app] Python --> Services[services/ daemon entry points] Services --> Sidecars[llama.cpp / whisper.cpp sidecars] Sidecars -.pinned bundle from.-> NativeRepo[Capsize-Games/airunner-native] Python --> RuntimeLayout[runtime layout helpers]
What This Package Owns
- the
airunner-nativelauncher entry point provided byairunner_native(the GUI package owns the primaryairunnercommand; issue #2042) - repo and runtime layout helpers (
repo_paths,linux_bundle_layout) - startup environment and early torch/allocator configuration
Importable native code lives under native/src/airunner_native/.
The architecture audit and package map are tracked in docs/architecture/architecture-complexity-audit.md and docs/architecture/layered_product_architecture.md.
Installation
AIRunner is installed as Python packages:
# repo-local developer install
./scripts/install.sh
# distributed daemon and GUI-client install
./deployment/install_distributed.sh --role daemon
./deployment/install_distributed.sh --role gui-client
For isolated native tooling work in a checkout, install the split package
stack first and then install native/ in editable mode:
python -m venv venv
source venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -e ./services
pip install -e ./native[development]
Test Running
Native changes are validated through the launcher smoke path (the Python launcher entry point) plus the daemon-backed functional suites that consume the built sidecars:
./scripts/install.sh --help
./deployment/install_distributed.sh --help
./venv/bin/python -m pytest services/tests/test_llm_functional.py -v --timeout=900
./venv/bin/python -m pytest services/tests/test_stt_transcribe_functional.py -v --timeout=1200
Building the sidecars themselves from source (for a CUDA build, or to
work on the build script) happens in
Capsize-Games/airunner-native
now: ./scripts/install.sh --sidecars-cuda clones the pinned tag and
builds it there automatically.
Use the package split contract in docs/architecture/package_split_contract.md when a launcher or installer change affects the wider package matrix.