Модуль kernels: управление удалёнными ядрами Agent OS
🔵 Модуль kernels ведёт реестр удалённых инстансов Agent OS и даёт агентам
управлять ими: мониторинг и запросы по HTTP-API ядра и жизненный цикл по SSH
(через модуль remote). В отличие от remote
(произвольные хосты), kernels знает, что цель — ядро Agent OS.
Модуль включён в стандартную поставку (modules.enabled → kernels) и требует
remote (requires: ["remote"]).
52.1 Реестр
Ядро описывается документом: slug, base_url, token_secret, machine,
deploy. Реестр — в DuckDB (logs/kernels.db), сидируется из
config/remote/kernels.yaml (как и у remote, seed не перетирает правки в БД).
kernels:
- slug: prod
base_url: https://platform.example.com
token_secret: PROD_ADMIN_TOKEN # имя секрета, не сам токен
machine: prod-host # slug машины из инвентаря `remote`
tags: [prod]
deploy:
remote_dir: /home/realityfaker/agent_os
archive: distrib/agent-os-distrib-linux.zip
install_command: |
set -e
cd /home/realityfaker/agent_os
unzip -o distrib/agent-os-distrib-linux.zip -d /tmp/ao-distrib
install -m 0755 /tmp/ao-distrib/agent-os-distrib/bin/agent-os target/release/agent-os
log_path: /home/realityfaker/agent_os/agent_os.log
Пути переопределяются AGENT_OS_KERNELS_DB / AGENT_OS_KERNELS_CONFIG.
52.2 Транспорты {#transports}
- HTTP — через host-порт
agent_os.Http(SSRF-политика хоста, синхронно). Токен админа читается изagent_os.Secretsпо имениtoken_secret. - SSH — через модуль
remote: ядро ссылается наslugмашины, применяется её политика (policy.mode/allow/approval). Команды жизненного цикла разрешаются так же, как любой удалённый exec, fail-closed. - Деплой — предпочтительно дистрибутивом: архив заливается SCP в
<remote_dir>/distrib/, затем на хосте выполняетсяinstall_command(и, по умолчанию,sudo systemctl restart agent-os).
52.3 Инструменты
| Группа | kind |
|---|---|
| Реестр | kernel_list, kernel_get, kernel_upsert, kernel_delete |
| HTTP | kernel_health, kernel_models, kernel_agents, kernel_templates, kernel_request |
| SSH | kernel_service, kernel_logs, kernel_deploy |
Пример:
kind: kernel_service
name: prod_service
description: Управление сервисом agent-os на прод-хосте
52.4 HTTP API
| Endpoint | Описание |
|---|---|
GET /v1/kernels |
список ядер 🔒 |
POST /v1/kernels |
создать/обновить ядро 🔒 |
GET /v1/kernels/:slug |
одно ядро 🔒 |
PUT /v1/kernels/:slug |
обновить 🔒 |
DELETE /v1/kernels/:slug |
удалить 🔒 |
GET /v1/kernels/:slug/health |
health-проба удалённого ядра (HTTP) 🔒 |
52.5 Безопасность
- Токен админа и
install_commandне раскрываются в API (redacted()). - HTTP ограничен SSRF-политикой host-порта; SSH — политикой машины
remote. - Деплой допустим только если политика машины разрешает команды (
mode: fullили подходящийallow).
52.6 Ограничения
- Требуется модуль
remote. - Host-порт
Httpможет отклонять приватные/loopback-адреса — используй публичные адреса ядер. - Жизненный цикл (SSH) доступен только как инструменты (роуты синхронные).