Перейти к содержимому

Web-интерфейс

Операторский web-UI встроен в Keeper и отдаётся им на маршруте /ui из коробки. Отдельный процесс, порт, reverse-proxy или деплой статики не нужны: один исполняемый файл keeper несёт и Operator API, и UI к нему.

UI — это надстройка над тем же Operator API, что и soulctl, MCP и прямые вызовы /v1/*. Всё, что доступно в UI, доступно и через API; UI не даёт операций, которых нет в API.

UI поднимается на том же HTTP-listener-е, что и Operator API (порт 8080 по умолчанию), на пути /ui:

  1. Откройте в браузере http://keeper.example.com:8080/ui.
  2. Вставьте JWT Архонта в поле ввода токена. UI после загрузки обращается к /v1/* с этим токеном в заголовке Authorization: Bearer.

JWT — тот же credential, что используется для Operator API:

  • bootstrap-токен, выпущенный при создании первого Архонта (keeper init, см. Quick Start);
  • токен, выпущенный для существующего Архонта через POST /v1/operators/{aid}/issue-token.

Права в UI определяются ролями Архонта в этом JWT: RBAC и Purview применяются на стороне API одинаково для всех клиентов. UI не расширяет и не обходит проверки — он лишь отправляет запросы под вашим токеном.

UI — браузерный интерфейс к Operator API: то, что вы делаете через /v1/*, доступно мышью. В частности — работа с инкарнациями сервисов, запуск и просмотр прогонов, обзор подключённых душ (Souls) и управление операторами (Архонтами).

Полная и всегда актуальная поверхность операций — сама OpenAPI-спека: откройте http://keeper.example.com:8080/docs для интерактивного справочника по всем эндпоинтам.

UI управляется одним config-ключом Keeper-а — web_ui_enabled (top-level):

keeper.yml
# web_ui_enabled: true # дефолт (опущено / null → ON); false — opt-out
ЗначениеПоведение
опущено / nulldefault-ON — UI смонтирован на /ui из коробки
trueUI смонтирован на /ui
falseUI не монтируется; /v1/* и /docs не затрагиваются

Для headless-инсталляций (работа только через CLI / MCP / API) поставьте web_ui_enabled: false — маршрут /ui не появится, остальная поверхность Keeper-а не меняется.

Для оператора UI — это всегда встроенный /ui: ничего собирать или запускать отдельно не нужно. Исполняемый файл Keeper-а несёт уже собранный статический бандл UI, поэтому интерфейс работает в том числе в air-gapped-окружениях — внешний CDN не требуется.

Отдельный dev-сервер (Vite) нужен только разработчикам самого UI при работе над его исходниками — это сценарий разработки фронтенда, а не эксплуатации Keeper-а. Оператору достаточно встроенного /ui.