Services
The services/ package is AIRunner's headless orchestration layer. It
owns the daemon entry points, FastAPI server wiring, runtime registry,
downloads, persistence, lifecycle control, and the modality services that
coordinate LLM, STT, TTS, and art workloads.
flowchart LR
GUI[src/ GUI client] --> Daemon[services/ daemon routes]
Daemon --> Registry[runtime registry]
Daemon --> Client[canonical daemon HTTP client]
Registry --> Sidecars[llama.cpp or whisper.cpp sidecars]
Daemon --> Data[(AIRUNNER_BASE_PATH)]
Daemon --> Scripts[scripts/ tooling]
What This Package Owns
- FastAPI server bootstrap and daemon entry points
- runtime routing, runtime load or unload control, and health checks
- service-level downloads, migrations, persistence, and settings
- orchestration for daemon-backed LLM, TTS, STT, and art requests
- the canonical daemon HTTP client (
airunner_services.daemon_client), which the desktop client imports through the thinairunner.daemon_clientre-export layer
Importable service code lives under services/src/airunner_services/.
The package split contract is documented in docs/architecture/package_split_contract.md, the package map lives in docs/architecture/layered_product_architecture.md, and the architecture audit is tracked in docs/architecture/architecture-complexity-audit.md.
Installation
For normal repo development, use the developer installer. It installs the split packages in editable mode and builds the pinned native sidecars used by daemon-backed functional tests:
./scripts/install.sh
For an isolated service environment, install the local package stack and a service extra that matches the workload you are validating:
python -m venv venv
source venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -e './services[headless,development]'
Use services[desktop] when you want the broader desktop-oriented extra
set, and use ./deployment/install_distributed.sh when you are installing
the daemon or GUI client into separate roots.
Test Running
The quickest service checks are the daemon runtime smoke commands exposed by the repo test runner:
./venv/bin/python scripts/run_tests.py --llm-runtime-smoke
./venv/bin/python scripts/run_tests.py --stt-runtime-smoke
./venv/bin/python scripts/run_tests.py --art-runtime-smoke
./venv/bin/python scripts/run_tests.py --tts-runtime-smoke
The bootstrap sanity check for the server surface is:
./venv/bin/python -m pytest services/tests/test_service_bootstrap.py -v
When a change touches daemon routes, workers, or runtime coordination,
pair those smoke checks with the relevant daemon-backed functional suites
in services/tests/, especially:
./venv/bin/python -m pytest services/tests/test_tts_synthesize_functional.py -v --timeout=120
./venv/bin/python -m pytest services/tests/test_llm_functional.py -v --timeout=900
./venv/bin/python -m pytest services/tests/test_llm_tts_functional.py -v --timeout=1200
./venv/bin/python -m pytest services/tests/test_stt_transcribe_functional.py -v --timeout=1200
The functional tests live under services/tests/ because they validate the
composed product boundary, even when the behavior under test is primarily
owned by services/.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file airunner_services-6.1.3.tar.gz.
File metadata
- Download URL: airunner_services-6.1.3.tar.gz
- Upload date:
- Size: 2.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93279b5f3b7eb930809133ce094496e293b447b849922bc41213d3223606122f
|
|
| MD5 |
ad25611f7d12ac9abaf3824e065ff1f6
|
|
| BLAKE2b-256 |
8ea2cb8f437656400b1be5b4d38a6e625ee7c3989aa3cbe21878ebee7595d7d6
|
File details
Details for the file airunner_services-6.1.3-py3-none-any.whl.
File metadata
- Download URL: airunner_services-6.1.3-py3-none-any.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca3906742503f82eadcb205459c270c672422bdbc680f6eb7027d01ea2561365
|
|
| MD5 |
5cb2f3df6f46260ac500af3f3f064cd1
|
|
| BLAKE2b-256 |
67fdc500466a7ed8bb26a490a2c114e00601c1ac1f4b01f322637815dbd09edc
|