Агент — инстанс Pastukhov Agent на управляемом сервере. MultiAgent генерирует для каждого агента собственный compose.yml, разворачивает контейнер и следит за его жизненным циклом, а чаты агента зеркалирует в централизованный интерфейс.
Создание агента
Кнопка «Добавить агента» спрашивает минимум: имя, сервер и образ. Порт подбирается автоматически — MultiAgent берёт следующий свободный порт сервера, поэтому конфликты исключены. Дополнительно задаются теги для фильтрации в чатах, воркспейсах и аналитике.
Жизненный цикл
- Развернуть (provision) — сгенерировать compose.yml, скачать образ и поднять контейнер;
- Запустить / Остановить / Перезапустить — управление контейнером;
- Пересоздать (recreate) — пересобрать контейнер с обновлённым compose;
- Pull — обновить образ до свежей версии;
- Удалить — удалить запись управления и зеркальные чаты; контейнер и данные на сервере не затрагиваются.
Все операции выполняются в фоновом режиме (fire-and-forget), а прогресс транслируется в интерфейс через SignalR — видно каждый шаг: подключение к серверу, рендеринг compose, pulling образа, запуск контейнера.
Статус контейнера агента берётся у Docker напрямую: running, restarting, stopped, paused, exited или dead.
Вкладки редактирования
- Статус — потребление CPU, RAM и диска контейнером;
- Журналы — последние 300 строк логов контейнера;
- Общие — имя, теги, образ, опции;
- Git — привязка репозитория Forgejo, ветки;
- Подключение — порт, URL, шаблон адреса;
- Учётные данные — пароли доступа к агенту;
- Порты — список проброшенных портов;
- Тома — монтирования поверх автогенерируемых;
- Окружение — дополнительные переменные окружения (extra-env);
- compose.yml — предпросмотр итогового файла с подсветкой синтаксиса.
compose.yml
Файл генерируется из Scriban-шаблона сервера: порты — из записей портов агента, тома и переменные окружения — слияние автогенерируемых (папки сервера, строка Postgres, лицензия) и ваших явных значений. Предпросмотр показывает итоговый YAML с подсветкой до развёртывания — ошибки конфигурации видны заранее.
Учётные данные
Для каждого агента доступны две операции с паролями: генерация пользовательского пароля (для входа в веб-интерфейс агента) и смена пароля менеджера (rotating manager password) — пароля, под которым MultiAgent обращается к API агента. Смена пароля менеджера пересоздаёт контейнер агента с новым значением в окружении.
Docker.sock и деплой
Агенту можно подключить /var/run/docker.sock хост-сервера (по умолчанию выключено, включается на каждого агента отдельно). Это нужно, когда сам агент должен управлять контейнерами — например, для деплоя сервисов из своего проекта. Учитывайте: с docker.sock агент получает полный контроль над Docker хоста, поэтому включайте его только доверенным агентам.
Импорт агентов
Если на сервере уже работают агенты, развёрнутые вручную, их не нужно пересоздавать. Команда «Импортировать агентов» сканирует сервер, находит контейнеры агентов, разбирает их compose-файлы и регистрирует агентов в MultiAgent с сохранением портов, томов и переменных окружения.
Репозитории Forgejo
Каждому агенту можно привязать git-репозиторий: существующий на Git-сервере Forgejo или новый, который MultiAgent создаст сам. SSH-ключ для доступа выпускается и хранится автоматически. Репозиторий монтируется агенту как /project — все коммиты агента сразу попадают в git.