需要 Python 3.13.3 或更新版本;airunner-common 与 facehuggershield 的 PyPI 发布暂停,部分 extras 无法从公共索引解析;TTS 相关 extras 依赖未上架的 airunner-tts-vendor,headless、desktop 等组合不可用;Docker 开发构建需先设置 GH_TOKEN 并运行 staging 脚本,否则 compose 报错;无头 CLI 默认只绑回环,绑定非回环地址需设置 AIRUNNER_API_KEY。
airunner
Capsize-GamesGPL-3.0活跃维护本地离线跑图像生成、实时语音对话和 LLM 聊天机器人的桌面推理引擎,数据不出本机,适合注重隐私的创作与自动化工作流。
Offline inference engine for art, real-time voice conversations, LLM powered chatbots and automated workflows
uv venv --python 3.13 .venv
uv pip install --python .venv/bin/python -e "./services[development]" -e ./nativeREADME 未给出通用硬件或语言支持矩阵,模型与运行时需求随工作负载变化;Linux CUDA 配置固定使用 CUDA 12.9 的 PyTorch 栈;运行时冒烟测试可能需要边车、模型文件或 GPU 资源。
离线推理引擎,为艺术生成、实时语音对话、LLM 聊天机器人和自动化工作流提供模型服务
本地离线跑图像生成、实时语音对话和 LLM 聊天机器人的桌面推理引擎,数据不出本机,适合注重隐私的创作与自动化工作流。
核心能力
- 提供模型 worker 与运行时编排
- 暴露 HTTP/WebSocket API 供其他应用调用
- 集成 llama.cpp 与 whisper.cpp 边车
- 支持 LLM、STT、艺术、TTS 多类运行时
- 以无头服务形式运行,不再带 GUI
容易踩的坑
- v6.1.10最新正式版2026-11-04 · 2026-11-04 02:01 UTC
Headless CORE service checkpoint for Linux amd64 with SQLite. The package contains frozen service commands, API, migrations and legal notices. It was built on Ubuntu 24.04; automated fresh-install and upgrade checks ran on Ubuntu 26.04. Native executables and model files are supplied separately.
This checkpoint includes correlated LLM WebSocket request IDs, owner/namespace-scoped cancellation, disconnect handling during prefill, bounded pending-message cleanup, and independent CORE release promotion. The retired desktop GUI is excluded. Full Docker publication remains deferred; this release does not enable PyPI or apt publication.
Verified evidence:
- Merged source:
a55b257f19c09ab74dfddcc0f50a53c414657a5e(service integration #2443, receipt correction #2451). The unpublished v6.1.9 tag is preserved unchanged. - Hosted runtime contracts: 983 passed, no failures/errors/skips, using runtime fakes/local fixtures.
- Tagged CORE candidate: package build, fresh installation and daemon lifecycle, published-baseline synthetic SQLite upgrade/interruption recovery, and production-publisher validation against the actual candidate receipts all passed. Promotion reuses the same accepted package bytes.
- Native runtimes v0.3.0 is independently published and immutable. Its native Linux/Windows startup and CUDA acceptance evidence do not establish installed application inference.
Installed normal-API model inference, streamed model output, physical cancellation and GPU cleanup remain open in R1. Broad quality/latency evaluation, audio/RAG/ART, PostgreSQL packaging, Docker and apt delivery remain later increments. This checkpoint does not claim model parity or completion of the service project.
The seven assets contain the package, legal notices, candidate-run proof, clean-install and upgrade receipts, source/run manifest, and SHA256SUMS. See the release slices and reviewed dependency/whitelist inventory.
Publication transport: promotion run 41756702928 passed candidate/source/receipt preparation but failed its GitHub API publication step in both attempts. The same tagged publisher and accepted candidate artifacts were then validated and published using owner-authenticated transport. The manifest promotion run ID identifies that preparation run; it does not claim a successful CI publication.
- Merged source:
- v6.1.8v6.1.8 services stack: wave-4 daemon/IPC + packaging hardening2026-10-25 · 2026-10-25 22:05 UTC
查看更新说明
Wave-4 audit loop: 25 issues filed (#2418-#2442), all fixed in 21301f846 + allowlist drift fix, verified, closed.
Daemon/IPC (#2418-#2431): flag-only signal handlers, APIServer.stop join with started-event, signal setup on start(), SIGHUP reload flag, port-keyed lockfile without truncate, bind-success fail-fast, WS-only query token, per-connection rate key, to_thread events dispatch, TTS speed validation + serialized synthesis, unified worker pause + queue lock, supervisor N-failure tolerance, verified-pid port SIGTERM, Event-based supervisor shutdown.
Packaging/installer (#2432-#2442): cu129 installer index + pinned torch stack, torch-needs extended, constraints header rewritten, README pins, Dockerfile release defaults, docker-compose.release.yml, computer_use marked/dropped, run_tests prefix map, native floors raised, debian comment fixed.
Note: setup.py/constraints also carry the parallel dep lane's in-flight pillow 13.0.0/certifi regen; verification here ran on installed pillow 12.2.0 — pillow-13 runtime risk stays with that lane.
Gate: 1516 passed (1494 full-suite + 22 RAG/idle), 24 skipped, 0 segfaults. Remaining red, all classified: functional qwen e2e needs CUDA llama build (#2416, env), ollama pull_stream 501 in parity lane (#2415), P05 scipy collect-parent missing from venv (pre-existing env gap). Excluded: test_fp8_scaled_mm.py order-dependent segfault (#2276). Still open: #2274 dep majors, #2276, #2358/#2363-#2365 owner-decision, #2399 docs, #2413 vendor publish, #2415, #2416.
- v6.1.7v6.1.7 services stack: integration fixes + green gate2026-10-25 · 2026-10-25 21:28 UTC
查看更新说明
Supersedes v6.1.6 (whose tag missed the art-data source half — landed here).
Commits over v6.1.6: a6d258a59 (leftover art-data sources: delete confinement, decompression-bomb guards, loader caps, Kiwix caps, native pin float), 9e3cf5304 (hermetic CUDA test, vendor-blocked extras skip-with-cause), 178a7059c (P03 exec-bit fixture fix).
Gate: full services suite 1426 passed, 24 skipped, 0 segfaults (order-dependent CUDA flake #2276-class fixed by hermetic mock; fp8 file still excluded per #2276). Remaining red, all classified: functional qwen e2e needs CUDA llama build (#2416, env), P05 scipy collect-parent missing from venv (pre-existing env gap), 15 vendor extras skip-with-cause until airunner-tts-vendor is published (#2413), ollama parity 501s in parity-worker's lane (#2415). Still open: #2274 dep majors (blocked upstream), #2358/#2363/#2364/#2365 owner-decision, #2399 docs follow-up.
- v6.1.6v6.1.6 services stack: wave-2/3 audit hardening2026-10-25 · 2026-10-25 20:37 UTC
查看更新说明
Services-only stack hardening from waves 2-3 of the parallel audit loop.
Commits: 4e46516db (API), 658e3965e (LLM sandbox), 76ae57e46 (voice), aad12e819 (ops), e57646bff (art-data), 5e9e0b315 (installer), plus daemon/deadcode/security follow-ups.
Closed: wave-1 #2261-#2275, wave-2 actionable #2277-#2357/#2359-#2404 (fixed+verified, 1217 passed / 1 skipped / 1 pre-existing scipy failure; test_fp8_scaled_mm.py excluded order-dependent CUDA segfault #2276).
Still open: #2274 dep majors (blocked upstream), #2276 flake, #2358/#2363/#2364/#2365 owner-decision, #2399 docs follow-up, #2405-#2410 omnibus trackers.
- v6.1.5v6.1.5: services-only hardening2026-10-25 · 2026-10-25 19:20 UTC
查看更新说明
Headless services-only release (FastAPI daemon for airunnerweb). No desktop client remains.
Security fixes (closes #2261, #2262, #2263, #2267, #2269):
- CivitAI/HF downloads: server-supplied filenames sanitized and confined to the model dir; every redirect hop revalidated; legacy HF downloader hardened the same way.
- Loopback token: pre-existing weak files/symlinks are tightened or replaced, never silently reused.
- Tenant schema identifiers validated; migration signature is now content-hashed; tenant migrations serialized with a lock.
- Secrets: persisting without a keyring now requires AIRUNNER_ALLOW_PLAINTEXT_SECRETS=1, otherwise raises. Operators without a keyring must set the flag or install one.
Robustness fixes (closes #2264, #2265, #2266, #2268):
- Daemon singleton lock is an flock file lock, not a TCP probe.
- Signal shutdown no longer skips API/heartbeat/app cleanup.
- Dead preload stub removed (lifecycle preload covers configured models); WS sockets now scope tenants exactly like HTTP.
Repairs (closes #2270-#2273, #2275): dead entry points wired (airunner-docker-build/wrapper, cleanup-llm-models, generate-cert), docker_build compose path fixed, model_optimizer uses sys.executable, stale desktop docs updated, six new regression test files.
Known gaps (open): #2274 dependency majors (no safe bumps; verified), order-dependent CUDA segfault in test_fp8_scaled_mm under the full suite (passes standalone), scipy/langchain/ollama extras missing from dev venvs (pre-existing).
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
AI Runner
AI Runner provides model workers, runtime orchestration, persistence, and HTTP/WebSocket APIs for other applications. This repository contains the headless service; the Qt desktop application and paid desktop storefront are retired.
AI Runner is GPL-3.0-only software. It is built and released by one engineer at Capsize LLC. Sponsorship supports project maintenance.
Report a bug · Request a feature · Report a vulnerability
Repository packages
| Path or project | Role |
|---|---|
services/ | Daemon, FastAPI routes, runtime orchestration, downloads, and persistence |
native/ | Python launcher and runtime layout helpers |
airunner-common | Shared contracts and settings required by the service packages |
airunner-native | Builds and publishes the llama.cpp and whisper.cpp sidecars |
Install and dependency status
The package metadata requires Python 3.13.3 or newer. The Linux CUDA profile pins a CUDA 12.9 PyTorch stack. The repository does not define a validated general-purpose hardware or language support matrix; model and runtime requirements vary by workload.
The package metadata currently declares these service extras:
core,llm-native,stt-native,art-python,tts-python, andtts-python-coreheadless, which aggregates LLM, STT, art, and TTS runtime extrasdesktop, a legacy extra name for a broader service profile; it does not install a GUIlinux-release, the current Linux candidate aggregate, which excludes the TTS vendordevelopment, for contributor and packaging tools
For the published distribution name, airunner-services[development] denotes the development extra. The local editable-install command below uses the checkout path instead.
Some extras still cannot be resolved from the configured public indexes. PyPI
publication of airunner-common and facehuggershield remains paused;
airunner-common==6.1.8 is available from its reviewed
GitHub release,
and FacehuggerShield is optional through the legacy-shield extra and excluded
from linux-release. The evaluation workflow checks out pinned
airunner-common source for compatibility tests. Separately, the TTS extras
depend on airunner-tts-vendor; issue
#2413 records unresolved
PyPI availability. tts-python, headless, desktop, all, all_dev,
all_native, all_dev_native, and windows inherit that dependency and are not
available from the configured public indexes. The validated offline V6 input
lock for linux-release does not establish clean public-index resolution for
other profiles.
The Linux linux-release aggregate excludes airunner-tts-vendor; OpenVoice
and Melo support are deferred from that release profile. Its V6 hash lock is
generated and validated for 244 reviewed inputs; see the
V6 input validation record.
This offline input validation is separate from clean public-index resolution for
paused distributions, and from final frozen-artifact and model acceptance.
When the required dependencies are available from an approved package source, an isolated contributor environment can be created with uv:
uv venv --python 3.13 .venv
uv pip install --python .venv/bin/python -e "./services[development]" -e ./native
This command is not a workaround for the dependency availability issues above. Check the package source and resolver result before using the environment.
Docker Compose
The repository has separate compose files for checkout development and the published image:
# Build from the checkout and mount services/native source read-only.
inputs="$(mktemp -d /tmp/airunner-docker-inputs.XXXXXX)"
python scripts/stage_docker_release_inputs.py --output-dir "$inputs"
AIRUNNER_DOCKER_REVIEWED_INPUTS="$inputs" \
docker compose -f docker-compose.dev.yml run --rm --service-ports airunner
# Use the image reference in the release compose file.
docker compose -f docker-compose.release.yml run --rm --service-ports airunner
The development build stages hash-pinned runtime, builder, and pip bootstrap wheels outside the checkout. The Dockerfile uses the reviewed pip wheel to bootstrap the system Python because these inputs do not include a reviewed uv executable; dependency installation then uses the staged hash locks without an index. Set GH_TOKEN in the environment with read access to this repository's Actions artifacts before staging; the command does not print or persist the token. The staging command copies only the reviewed release source files and notices into the prepared context. Compose fails with a message pointing here when AIRUNNER_DOCKER_REVIEWED_INPUTS is unset.
Both compose files bind host port 127.0.0.1:8080 and mount the local AI Runner data and Hugging Face cache directories. --service-ports publishes the configured port for docker compose run. The release compose file references ghcr.io/capsize-games/airunner/airunner:linux-headless; registry availability and runtime behavior have not been verified in this documentation update.
The headless CLI defaults to loopback. Binding it to a non-loopback address requires AIRUNNER_API_KEY; the --insecure-no-auth option bypasses that check and should not be used for a network-facing service. The health endpoint is /health.
Development checks
After resolving the required package dependencies, run focused service tests from the repository root:
.venv/bin/python -m pytest services/tests/test_service_bootstrap.py -q
Runtime smoke and functional checks may require sidecars, model files, or GPU capacity. A test that skips or lacks those resources does not establish runtime support. See CONTRIBUTING.md for contributor setup and review guidance.