airunner

Capsize-GamesGPL-3.0活跃维护

本地离线跑图像生成、实时语音对话和 LLM 聊天机器人的桌面推理引擎,数据不出本机,适合注重隐私的创作与自动化工作流。

Offline inference engine for art, real-time voice conversations, LLM powered chatbots and automated workflows

v6.1.10发布于 2026-11-04 02:01 UTC1,317star104fork同步于 2026-11-10 17:51 UTC

怎么上手

由 README 提炼,执行前请确认
uv venv --python 3.13 .venv
uv pip install --python .venv/bin/python -e "./services[development]" -e ./native
硬件要求按 README 说明

README 未给出通用硬件或语言支持矩阵,模型与运行时需求随工作负载变化;Linux CUDA 配置固定使用 CUDA 12.9 的 PyTorch 栈;运行时冒烟测试可能需要边车、模型文件或 GPU 资源。

需要 CUDA有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

离线推理引擎,为艺术生成、实时语音对话、LLM 聊天机器人和自动化工作流提供模型服务

本地离线跑图像生成、实时语音对话和 LLM 聊天机器人的桌面推理引擎,数据不出本机,适合注重隐私的创作与自动化工作流。

核心能力

  • 提供模型 worker 与运行时编排
  • 暴露 HTTP/WebSocket API 供其他应用调用
  • 集成 llama.cpp 与 whisper.cpp 边车
  • 支持 LLM、STT、艺术、TTS 多类运行时
  • 以无头服务形式运行,不再带 GUI

容易踩的坑

需要 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。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v6.1.10
  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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).

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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 projectRole
    services/Daemon, FastAPI routes, runtime orchestration, downloads, and persistence
    native/Python launcher and runtime layout helpers
    airunner-commonShared contracts and settings required by the service packages
    airunner-nativeBuilds 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, and tts-python-core
    • headless, which aggregates LLM, STT, art, and TTS runtime extras
    • desktop, a legacy extra name for a broader service profile; it does not install a GUI
    • linux-release, the current Linux candidate aggregate, which excludes the TTS vendor
    • development, 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.

    Project information