Инструменты — быстрое развёртывание Docker-сервисов на управляемые серверы по шаблонам. Сервис (Postgres, Redis, nginx, что угодно) описывается один раз как шаблон, а затем разворачивается сколько угодно раз — каждый экземпляр со своими настройками. В библиотеке поставляются готовые встроенные инструменты — Dozzle, Watchtower, pgAdmin, Playwright, Forgejo и nginx — с реальными логотипами проектов.
Два уровня
- Библиотека шаблонов (раздел «Инструменты») — глобальная, хранится на диске MultiAgent в папке
AGENT_TOOLSи общая для всех серверов. Шаблоны редактируются прямо в интерфейсе: манифест, файлы и compose.yml — как сырой текст; - Экземпляры на сервере (страница сервера → «Инструменты на этом сервере») — развёрнутые копии: жизненный цикл, статусы, логи, файлы и переменные каждого экземпляра.
Структура шаблона
Каждый шаблон — папка со слагом из строчных букв, цифр и дефисов:
{AGENT_TOOLS}/
redis/ ← слаг шаблона = имя папки
tool.json ← название, описание, иконка, категория, переменные
compose.yml ← Scriban-шаблон
redis.conf ← произвольные дополнительные файлы
init/
01-init.sh ← вложенные подпапки поддерживаются
Переменные описываются в tool.json со схемой типов:
- string — текстовое поле;
- secret — поле-пароль: значение шифруется в базе и маскируется в интерфейсе;
- int — числовое поле;
- choice — выпадающий список из заданных опций;
- bool — переключатель да/нет.
При первом запуске библиотека наполняется примерами: redis, pgAdmin, dozzle и watchtower. Каждый шаблон несёт свой логотип (logo.svg/logo.png — настоящая эмблема проекта), который каталог показывает вместо значка-глифа. Примеры можно править — затирается библиотека только если она пуста.
Развёртывание
- Выберите шаблон и сервер — откроется форма с переменными шаблона;
- Заполните значения (секреты сразу шифруются) и посмотрите предпросмотр рендера compose против введённых переменных;
- MultiAgent отрендерит все файлы шаблона через Scriban, скопирует их в папку инструментов сервера и выполнит
docker compose up -d. Имя compose-проекта — короткое имя экземпляра, поэтому экземпляры изолированы по сетям и томам.
В шаблонах доступны значения переменных плюс встроенные контексты сервера: {{ instance_slug }}, {{ instance_name }}, {{ data_folder }}, {{ tools_folder }}, {{ server_host }} и другие. Используйте {{ instance_slug }} в container_name, чтобы два экземпляра одного шаблона сосуществовали на сервере.
Инструмент, у шаблона которого объявлен веб-порт, становится публично доступным по подпапке сервера {база}/{слаг}/ через Nginx — та же проекция маршрутов, что и для агентов (маршрут появляется вместе с экземпляром и исчезает с его удалением). Без веб-порта инструмент остаётся на прямом адресе http://{хост}:{порт}. Подробнее — Маршруты.
Жизненный цикл экземпляра
- Запустить / Остановить / Перезапустить / Pull — управление контейнером, файлы не трогаются;
- Пересоздать — единственная операция, перерендеривающая файлы из шаблона с сохранёнными переменными. Ручные правки файлов будут перезаписаны — интерфейс предупреждает об этом заранее;
- Удалить — останавливает и удаляет контейнер, его файлы и именованные тома.
После развёртывания файлы экземпляра на сервере свободны для правок — через вкладку «Файлы» экземпляра или по SSH. Экземпляры — обычные Docker-контейнеры, поэтому переиспользуют знакомый UX агентов: кнопки жизненного цикла, бейджи статусов, просмотр логов и файловый браузер с прогрессом операций через SignalR.
Персистентность библиотеки
По умолчанию AGENT_TOOLS указывает на /project/tools — внутри контейнера, без сохранения при пересоздании. Чтобы шаблоны переживали пересборку контейнера, укажите AGENT_TOOLS=/data/tools: volume /data сохраняется между пересозданиями. Так же устроен и каталог продуктов — папка AGENT_PRODUCTS с шаблонами Research, Analytics, Data, Proxy и MultiAgent. Подробнее — в инструкции по установке.