What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
The AIRunner repository documents four public Python distributions: airunner for the desktop GUI, airunner-services for headless services and model runtimes, airunner-native for optional launcher and bundling tools, and airunner-common for shared metadata. The project README also says the GUI distribution pulls in the services distribution automatically. These are the roles the repository assigns; they should not be mistaken for an independently verified audit of every published release.
Which packages are public, and what does each do?
The AIRunner repository README names four installable distributions. Their documented boundaries are easiest to understand by what each one provides:
As an Amazon Associate I earn from qualifying purchases.
| Distribution | Documented responsibility | Practical role |
|---|---|---|
airunner |
Desktop GUI client and entry point; the root package pulls in airunner-services automatically. |
The desktop application users launch. |
airunner-services |
Headless daemon, FastAPI server, runtime registry and orchestration, downloads, persistence, and model/runtime profiles. | The service and model-runtime layer, which can be installed for headless operation. |
airunner-native |
Optional native launcher and bundle tooling; its gui extra provides the launcher and also pulls in the GUI. |
Optional launcher and packaging helpers. |
airunner-common |
Shared metadata. | The shared metadata layer. |
How the split maps to different installation roles
Desktop use
For the desktop application, the README assigns the user-facing GUI to airunner. It documents that this package brings in airunner-services, so the service layer is a dependency rather than a separate component a typical GUI user must identify and install by hand.
Headless services and runtimes
airunner-services is the documented boundary for running the daemon, API server, orchestration and runtime profiles without treating the desktop interface as its responsibility. The README’s separate service and GUI-client deployment flows help explain why that boundary matters: a service-oriented installation and a desktop launch are distinct roles, even though the GUI package depends on the service package.
#1 Best Overall
Native launch and bundles
airunner-native is described as optional tooling for a native launcher and bundle-related work. Its gui extra is the README’s way to request the launcher together with the GUI; it is not the name of a fifth public distribution.
Shared metadata
airunner-common is described narrowly as shared metadata. The README does not attribute the GUI, daemon, or launcher responsibilities to this distribution.
Rank #2
Repository directories are not the same as distributions
The repository also describes an internal layout: src/ holds the desktop UI and client bridge, services/ the daemon and service layer, native/ launcher and runtime-layout helpers, and scripts/ developer tooling. Those directories describe how the repository is organized; the four names above describe installable distributions. A directory name should not be assumed to be a package name, nor should the four distribution names be read as a one-to-one inventory of repository folders.
Distribution names are not necessarily Python import names
In Python packaging, a distribution package is the installable project, while an import package is a name used in Python code such as import example. The names often match, but they do not have to. PyPI does not enforce a relationship between a distribution’s name and its import path, so the hyphenated distribution name airunner-services should not be presented as an import statement unless AIRunner documentation explicitly gives that import path. The Python Packaging Authority’s explanation of distribution and import packages covers the distinction.
Does this mean AIRunner uses namespace packages?
Not on the evidence in the README alone. Python’s packaging guidance describes namespace packages as one way to distribute subpackages across separately installable distributions; as the Python Packaging Authority puts it, “Each sub-package can now be separately installed, used, and versioned.” The guidance also warns that namespace packages have caveats and are not right for every project. For native namespace packages, the shared namespace directory must omit __init__.py in every distribution using it, or all distributions must use a compatible pkgutil style. The available AIRunner README does not establish whether its packages use that structure, so namespace packaging is useful context, not a confirmed description of AIRunner’s implementation. See the Python Packaging Authority’s namespace-package guide.
What the split does—and does not—establish
The documented split makes the project’s functional boundaries legible: GUI, headless services and runtimes, optional native launcher/bundling helpers, and shared metadata. The README describes those roles and installation flows, but does not provide a quantitative rationale for the split or establish package sizes, adoption, release independence, or maintenance savings. Exact release versions and current PyPI availability are not established here, so check the package metadata and project instructions when choosing versions or confirming a particular install.
For general background on the mechanics, the Python Packaging Authority’s project-packaging tutorial explains how metadata in pyproject.toml, a build backend, artifacts such as wheels, and package-index upload and installation fit together. That general packaging flow does not by itself specify how AIRunner’s four distributions are built.
Recommended Free Tools
Quick Recap
Best Value
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




