部署与运维
aiod 默认在前台运行,可以交给进程管理器无人值守。作为独立二进制文件,它提供 /health 和 /v1/capabilities 健康检查。
本页按部署流程介绍:安装二进制、作为服务运行、配置 API key、接入健康检查,以及日志、环境变量和排障。
安装二进制文件
安装脚本会下载本机对应的构建,按发布目录里的 SHA256SUMS 核对后安装。部署时固定版本,并把二进制放到 supervisor 期望的位置:
运行桌面 worker 的主机加上 AIOD_WITH_COMPUTER_USE=1。每个发布目录(/v<version>/<platform>/)也直接提供原始二进制和 SHA256SUMS,供自行拉取的镜像构建使用。
选择与目标平台匹配的目录:linux-x86_64、linux-arm64、linux-riscv64 或 windows-x86_64(aiod.exe)。latest/<platform>/aiod 始终指向最新稳定版。
要固定版本,请使用 v<version>/<platform>/aiod。发布说明与各文件校验值见 发布记录。
注册成服务之前,可以先自检一次:
它不启动 daemon,只探测 bash、rg、tmux、浏览器进程和 CDP 端口,逐项输出结果。加 --json 得到机器可读格式。
作为服务运行
aiod start 在前台运行,没有后台化参数:重启、日志和环境交给进程管理器。用宿主机已有的那一个即可。下面的示例统一用 8091 端口。
systemd
supervisord
预构建镜像就是这样和 nginx、Chromium 一起运行 aiod 的:
Windows 服务
aiod.exe 自己实现了 SCM 协议,aiod service-run 就是服务入口,不需要 NSSM、WinSW 这类包装器。以管理员身份注册:
服务没有控制台,日志写到 %ProgramData%\aiod\logs\aiod.log。防火墙规则、Defender 例外和验证步骤见 Windows。
在容器中运行
镜像 CMD
将二进制复制到镜像中,设为启动命令:
Docker Compose
用 /health 做健康检查:
即使宿主机没有 bash、解释器、浏览器或可访问的桌面,daemon 仍会启动。
缺失的能力只会让对应路由返回 503,不会阻止 daemon 启动。
配置 API key
配置 API key,让所有非公开路由都要求鉴权:
普通 HTTP 请求通过 Authorization: Bearer <key> 或 x-api-key: <key> 发送 key。
对于无法设置请求头的 WebSocket、下载等请求,通过 ?api_key= 传入 key。
无论是否设置 key,以下路由都保持开放:
//health/v1/ping/v1/openapi.json/v2/openapi.json/internal/auth
未设置 key 时,所有路由都开放。此时应绑定到私有网卡,或不要将端口暴露到公共网络。
健康检查与能力就绪状态
/v1/capabilities 缓存 5 秒,在后台刷新。加 ?refresh=true 可强制一次新探测。它报告的域包括 files、exec、code_interpreter、browser、computer。
如果 /health 失败,重启 daemon。
是否接收流量应根据 /v1/capabilities 判断,不要只检查 /health。
进程存活并不代表所有能力都可用,以下情况仍可能导致某项能力降级或缺失:
- 宿主没有 bash
- 没有解释器
- 没有可达的 Chromium
- 没有桌面
两者都可以直接检查:
日志
aiod 向 stdout 写结构化 JSON,每个请求一行。每行标记为 HTTP_REQUEST,带 method、path、status、duration_ms、logid、client_ip。
使用容器日志驱动或 supervisor 收集 stdout 即可。没有单独的日志文件需要 tail。
AIO_RUST_LOG_LEVEL(默认 info)控制日志详细程度。
环境变量
每个参数都有对应的环境变量(例如 --host/AIO_HOST、--port/AIO_PORT)。同时设置时,命令行参数优先。
排障
运行中的 daemon 会通过 OpenAPI spec 提供每个路由的完整请求和响应定义:/v1/openapi.json、/v2/openapi.json。
v2 参考文档见 API 参考,Kubernetes 专属指引见 Kubernetes。