Веб-дашборд

Веб-дашборд — это браузерный интерфейс для управления вашей установкой Hermes Agent. Вместо редактирования YAML-файлов или выполнения команд CLI вы можете настраивать параметры, управлять API-ключами и отслеживать сессии через чистый веб-интерфейс.

Быстрый старт

hermes dashboard

Эта команда запускает локальный веб-сервер и открывает http://127.0.0.1:9119 в вашем браузере. Дашборд работает полностью на вашей машине — никакие данные не покидают localhost.

Параметры

Флаг По умолчанию Описание
--port 9119 Порт для запуска веб-сервера
--host 127.0.0.1 Адрес привязки
--no-open Не открывать браузер автоматически
--insecure выкл Разрешить привязку к не-localhost адресам (ОПАСНО — раскрывает API-ключи в сети; используйте с файрволом и строгой аутентификацией)
--tui выкл Включить вкладку чата в браузере (встроенный hermes --tui через PTY/WebSocket). Также можно установить HERMES_DASHBOARD_TUI=1.
# Custom port
hermes dashboard --port 8080

# Bind to all interfaces (use with caution on shared networks)
hermes dashboard --host 0.0.0.0

# Start without opening browser
hermes dashboard --no-open

Предварительные требования

Стандартная установка hermes-agent не включает HTTP-стек или PTY-помощник — это опциональные дополнения. Веб-дашборду требуются FastAPI и Uvicorn (расширение web). Вкладка Чат также требует ptyprocess для запуска встроенного TUI через псевдо-терминал (расширение pty на POSIX). Установите оба расширения с помощью:

pip install 'hermes-agent[web,pty]'

Расширение web устанавливает FastAPI/Uvicorn; pty устанавливает ptyprocess (POSIX) или pywinpty (нативный Windows — учтите, что встроенный TUI всё равно требует WSL). pip install hermes-agent[all] включает оба расширения и является самым простым путём, если вы также хотите использовать мессенджеры, голос и т.д.

Когда вы запускаете hermes dashboard без необходимых зависимостей, он сообщит, что нужно установить. Если фронтенд ещё не собран и доступен npm, он собирается автоматически при первом запуске.

Страницы

Состояние

Главная страница показывает обзор вашей установки в реальном времени:

Страница состояния автоматически обновляется каждые 5 секунд.

Чат

Вкладка Чат встраивает полный TUI Hermes (тот же интерфейс, который вы получаете при hermes --tui) прямо в браузер. Всё, что вы можете делать в терминальном TUI — слэш-команды, выбор модели, карточки вызовов инструментов, потоковый Markdown, запросы clarify/sudo/approval, скины — работает здесь идентично, потому что дашборд запускает реальный TUI-бинарник и рендерит его ANSI-вывод через xterm.js с WebGL-рендерером для попиксельной разметки ячеек.

Как это работает:

Возобновление существующей сессии: на вкладке Сессии нажмите значок воспроизведения (▶) рядом с любой сессией. Это перейдёт на /chat?resume=<id> и запустит TUI с флагом --resume, загрузив полную историю.

Предварительные требования:

Закройте вкладку браузера — PTY будет корректно завершён на сервере. Повторное открытие создаёт новую сессию.

Конфигурация

Форм-редактор для config.yaml. Все 150+ полей конфигурации автоматически обнаруживаются из DEFAULT_CONFIG и организованы по вкладкам-категориям:

Поля с известными допустимыми значениями (бэкенд терминала, скин, режим подтверждения и т.д.) отображаются как выпадающие списки. Логические значения — как переключатели. Всё остальное — как текстовые поля.

Действия:

Изменения конфигурации вступают в силу при следующей сессии агента или перезапуске Gateway. Веб-дашборд редактирует тот же файл `config.yaml`, который читают `hermes config set` и Gateway.

API-ключи

Управление файлом .env, в котором хранятся API-ключи и учётные данные. Ключи сгруппированы по категориям:

Каждый ключ отображает:

Продвинутые/редко используемые ключи по умолчанию скрыты за переключателем.

Сессии

Просматривайте и исследуйте все сессии агента. Каждая строка показывает название сессии, иконку платформы-источника (CLI, Telegram, Discord, Slack, cron), название модели, количество сообщений, количество вызовов инструментов и время последней активности. Активные сессии отмечены пульсирующим значком.

Логи

Просмотр файлов логов агента, Gateway и ошибок с фильтрацией и отслеживанием в реальном времени.

Аналитика

Аналитика использования и стоимости на основе истории сессий. Выберите временной период (7, 30 или 90 дней), чтобы увидеть:

Cron (задачи по расписанию)

Создание и управление запланированными cron-задачами, которые выполняют промпты агента по регулярному расписанию.

Навыки

Просмотр, поиск и включение/отключение навыков и наборов инструментов. Навыки загружаются из ~/.hermes/skills/ и сгруппированы по категориям.

warning Безопасность Веб-дашборд читает и записывает ваш файл .env, который содержит API-ключи и секреты. По умолчанию он привязывается к 127.0.0.1 — доступен только с вашей локальной машины. Если вы привяжетесь к 0.0.0.0, любой в вашей сети сможет просматривать и изменять ваши учётные данные. У дашборда нет собственной аутентификации.

Слэш-команда /reload

Дашборд также добавляет слэш-команду /reload в интерактивный CLI. После изменения API-ключей через веб-дашборд (или прямого редактирования .env) используйте /reload в активной CLI-сессии, чтобы применить изменения без перезапуска:

You  /reload
  Reloaded .env (3 var(s) updated)

Это перечитывает ~/.hermes/.env в окружение запущенного процесса. Полезно, когда вы добавили новый ключ провайдера через дашборд и хотите использовать его немедленно.

REST API

Веб-дашборд предоставляет REST API, который используется фронтендом. Вы также можете вызывать эти эндпоинты напрямую для автоматизации:

GET /api/status

Возвращает версию агента, статус Gateway, состояния платформ и количество активных сессий.

GET /api/sessions

Возвращает 20 последних сессий с метаданными (модель, количество токенов, временные метки, превью).

GET /api/config

Возвращает текущее содержимое config.yaml в формате JSON.

GET /api/config/defaults

Возвращает значения конфигурации по умолчанию.

GET /api/config/schema

Возвращает схему, описывающую каждое поле конфигурации — тип, описание, категорию и опции выбора, где применимо. Фронтенд использует это для отображения правильного виджета ввода для каждого поля.

PUT /api/config

Сохраняет новую конфигурацию. Тело: {"config": {...}}.

GET /api/env

Возвращает все известные переменные окружения с их статусом установки/отсутствия, замаскированными значениями, описаниями и категориями.

PUT /api/env

Устанавливает переменную окружения. Тело: {"key": "VAR_NAME", "value": "secret"}.

DELETE /api/env

Удаляет переменную окружения. Тело: {"key": "VAR_NAME"}.

GET /api/sessions/{session_id}

Возвращает метаданные для одной сессии.

GET /api/sessions/{session_id}/messages

Возвращает полную историю сообщений сессии, включая вызовы инструментов и временные метки.

GET /api/sessions/search

Полнотекстовый поиск по содержимому сообщений. Параметр запроса: q. Возвращает ID совпадающих сессий с подсвеченными фрагментами.

DELETE /api/sessions/{session_id}

Удаляет сессию и её историю сообщений.

GET /api/logs

Возвращает строки логов. Параметры запроса: file (agent/errors/gateway), lines (количество), level, component.

GET /api/analytics/usage

Возвращает использование токенов, стоимость и аналитику сессий. Параметр запроса: days (по умолчанию 30). Ответ включает дневные разбивки и агрегаты по моделям.

GET /api/cron/jobs

Возвращает все настроенные cron-задачи с их состоянием, расписанием и историей запусков.

POST /api/cron/jobs

Создаёт новую cron-задачу. Тело: {"prompt": "...", "schedule": "0 9 * * *", "name": "...", "deliver": "local"}.

POST /api/cron/jobs/{job_id}/pause

Приостанавливает cron-задачу.

POST /api/cron/jobs/{job_id}/resume

Возобновляет приостановленную cron-задачу.

POST /api/cron/jobs/{job_id}/trigger

Немедленно запускает cron-задачу вне её расписания.

DELETE /api/cron/jobs/{job_id}

Удаляет cron-задачу.

GET /api/skills

Возвращает все навыки с их названием, описанием, категорией и статусом включения.

PUT /api/skills/toggle

Включает или отключает навык. Тело: {"name": "skill-name", "enabled": true}.

GET /api/tools/toolsets

Возвращает все наборы инструментов с их меткой, описанием, списком инструментов и статусом активности/настройки.

CORS

Веб-сервер ограничивает CORS только локальными источниками:

Если вы запускаете сервер на нестандартном порту, этот источник добавляется автоматически.

Разработка

Если вы участвуете в разработке фронтенда веб-дашборда:

# Terminal 1: start the backend API
hermes dashboard --no-open

# Terminal 2: start the Vite dev server with HMR
cd web/
npm install
npm run dev

Vite dev-сервер на http://localhost:5173 проксирует запросы /api к FastAPI-бэкенду на http://127.0.0.1:9119.

Фронтенд построен на React 19, TypeScript, Tailwind CSS v4 и компонентах в стиле shadcn/ui. Продакшн-сборка выводится в hermes_cli/web_dist/, откуда FastAPI-сервер раздаёт её как статическое SPA.

Автоматическая сборка при обновлении

Когда вы запускаете hermes update, веб-фронтенд автоматически пересобирается, если доступен npm. Это поддерживает дашборд в актуальном состоянии при обновлениях кода. Если npm не установлен, обновление пропускает сборку фронтенда, и hermes dashboard соберёт его при первом запуске.

Темы и плагины

Дашборд поставляется с шестью встроенными темами и может быть расширен пользовательскими темами, вкладками плагинов и бэкенд-маршрутами API — всё подключается без клонирования репозитория.

Переключайте темы на лету из панели заголовка — нажмите на иконку палитры рядом с переключателем языка. Выбор сохраняется в config.yaml в поле dashboard.theme и восстанавливается при загрузке страницы.

Встроенные темы:

Тема Характеристика
Hermes Teal (default) Тёмный бирюзовый + кремовый, системные шрифты, комфортные отступы
Hermes Teal (Large) (default-large) То же, что и по умолчанию, с текстом 18px и более просторными отступами
Midnight (midnight) Глубокий сине-фиолетовый, Inter + JetBrains Mono
Ember (ember) Тёплый карминовый + бронзовый, Spectral с засечками + IBM Plex Mono
Mono (mono) Оттенки серого, IBM Plex, компактный
Cyberpunk (cyberpunk) Неоново-зелёный на чёрном, Share Tech Mono
Rosé (rose) Розовый + слоновая кость, Fraunces с засечками, просторный

Чтобы создать собственную тему, добавить вкладку плагина, внедриться в слоты оболочки или открыть специфические REST-эндпоинты плагина, смотрите Расширение дашборда — полное руководство охватывает: