Metadata-Version: 2.4
Name: airunner-native
Version: 6.1.3
Summary: AIRunner native launcher and bundle tooling
Home-page: https://github.com/Capsize-Games/airunner
Author: Capsize LLC
Author-email: contact@capsizegames.com
License: GPL-3.0-only
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Requires-Python: >=3.13.3
Description-Content-Type: text/markdown
Requires-Dist: airunner-common==6.1.3
Requires-Dist: airunner-services==6.1.3
Requires-Dist: facehuggershield==1.0.0
Provides-Extra: development
Requires-Dist: pytest; extra == "development"
Requires-Dist: pytest-timeout; extra == "development"
Requires-Dist: responses>=0.25.0; extra == "development"
Requires-Dist: coverage==7.8.0; extra == "development"
Requires-Dist: black==26.3.1; extra == "development"
Requires-Dist: pyinstaller==6.12.0; extra == "development"
Requires-Dist: flake8==7.2.0; extra == "development"
Requires-Dist: mypy==1.16.0; extra == "development"
Requires-Dist: autoflake==2.3.1; extra == "development"
Requires-Dist: pandas>=2.0.0; extra == "development"
Requires-Dist: pyarrow>=14.0.0; extra == "development"
Requires-Dist: tqdm>=4.0.0; extra == "development"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-timeout; extra == "dev"
Requires-Dist: responses>=0.25.0; extra == "dev"
Requires-Dist: coverage==7.8.0; extra == "dev"
Requires-Dist: black==26.3.1; extra == "dev"
Requires-Dist: pyinstaller==6.12.0; extra == "dev"
Requires-Dist: flake8==7.2.0; extra == "dev"
Requires-Dist: mypy==1.16.0; extra == "dev"
Requires-Dist: autoflake==2.3.1; extra == "dev"
Requires-Dist: pandas>=2.0.0; extra == "dev"
Requires-Dist: pyarrow>=14.0.0; extra == "dev"
Requires-Dist: tqdm>=4.0.0; extra == "dev"
Provides-Extra: gui
Requires-Dist: airunner==6.1.3; extra == "gui"
Provides-Extra: desktop
Requires-Dist: airunner==6.1.3; extra == "desktop"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Native

The `native/` package owns AIRunner's Python launcher entry point, runtime
layout helpers, and the pinned `llama.cpp` / `whisper.cpp` sidecar support.

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.

```mermaid
flowchart LR
	Python[airunner_native launcher] --> GUI[src/ desktop app]
	Python --> Services[services/ daemon entry points]
	Services --> Sidecars[llama.cpp and whisper.cpp sidecars]
	Python --> RuntimeLayout[runtime layout helpers]
	Python --> Scripts[scripts/ tooling]
```

## What This Package Owns

- the `airunner-native` launcher entry point provided by `airunner_native`
  (the GUI package owns the primary `airunner` command; issue #2042)
- repo and runtime layout helpers (`repo_paths`, `linux_bundle_layout`)
- startup environment and early torch/allocator configuration
- repo-local support for pinned `llama.cpp` and `whisper.cpp` sidecars

Importable native code lives under `native/src/airunner_native/`.

The architecture audit and package map are tracked in
[docs/architecture/architecture-complexity-audit.md](../docs/architecture/architecture-complexity-audit.md)
and
[docs/architecture/layered_product_architecture.md](../docs/architecture/layered_product_architecture.md).

## Installation

AIRunner is installed as Python packages:

```bash
# 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:

```bash
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:

```bash
./scripts/install.sh --help
./deployment/install_distributed.sh --help
./scripts/build_runtime_sidecars.sh --target-platform linux
./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
```

Use the package split contract in
[docs/architecture/package_split_contract.md](../docs/architecture/package_split_contract.md)
when a launcher or installer change affects the wider package matrix.
