Web Dashboard
Веб-панель управления Hermes Agent -- браузерный интерфейс для администрирования установки Hermes. Вместо редактирования YAML-файлов или выполнения CLI-команд можно настраивать параметры, управлять API-ключами и отслеживать сессии через удобный веб-интерфейс.
Панель запускается полностью на локальной машине -- никакие данные не покидают localhost.
1. Быстрый старт
Запускает локальный веб-сервер и открывает http://127.0.0.1:9119 в браузере.
Параметры запуска
| Флаг | По умолчанию | Описание |
|---|---|---|
--port | 9119 | Порт веб-сервера |
--host | 127.0.0.1 | Адрес привязки |
--no-open | -- | Не открывать браузер автоматически |
--insecure | off | Разрешить привязку к не-localhost адресам (ОПАСНО -- открывает API-ключи по сети; требует файрвол и сильную аутентификацию) |
--isolated | off | Запуск выделенного сервера для конкретного профиля |
Примеры:
2. Предварительные требования
Стандартная установка hermes-agent не включает HTTP-стек и PTY-хелпер -- это опциональные компоненты. Веб-панель требует FastAPI и Uvicorn (web extra). Вкладка Chat также требует ptyprocess для встроенного TUI через псевдо-терминал (pty extra).
Установка:
Для полной установки с поддержкой мессенджинга/голоса и прочего:
Если зависимости не установлены, при запуске hermes dashboard будет выведена инструкция по установке. Если фронтенд еще не собран и npm доступен, он автоматически собирается при первом запуске.
Требования для вкладки Chat:
- Node.js
ptyprocess(из extraspty)- POSIX-ядро (Linux, macOS или WSL2). На нативном Windows Python вкладка Chat не работает -- нужно использовать WSL2.
3. Управление несколькими профилями
Панель управления является машинным интерфейсом: один сервер управляет всеми профилями на машине. Переключатель профилей в боковой панели (видимый при наличии более одного профиля) определяет, какой профиль управляется на страницах Config, API Keys, Skills, MCP, Models и Chat.
При выборе профиля, отличного от собственного профиля панели, отображается амберный баннер с именем управляемого профиля, чтобы запись всегда была однозначной.
Выбор сохраняется в URL (?profile=<name>), поэтому прямые ссылки вида http://127.0.0.1:9119/skills?profile=worker работают с предустановленным переключателем и сохраняются при обновлении страницы.
Запуск панели из профильного алиаса маршрутизирует к машинной панели:
Флаг --isolated запускает выделенный сервер, привязанный к конкретному профилю.
Вкладка Chat также следует переключателю:Scoped chat запускает PTY-процесс с HERMES_HOME выбранного профиля, поэтому диалог работает с моделью, скиллами, памятью и историей сессий этого профиля.
Что остается привязанным к профилю и не управляется переключателем: процессы шлюза (gateway), базы данных сессий, планировщики cron.
4. Страницы панели управления
4.1. Status (Статус)
Главный экран с обзором установки в реальном времени:
- Версия агента и дата релиза
- Статус шлюза -- запущен/остановлен, PID, подключенные платформы и их состояние
- Активные сессии -- количество сессий, активных за последние 5 минут
- Последние сессии -- список 20 последних сессий с моделью, количеством сообщений, использованием токенов и превью разговора
Автоматическое обновление каждые 5 секунд.
4.2. Chat (Чат)
Вкладка встраивает полный TUI Hermes (тот же интерфейс, что и hermes --tui) прямо в браузере. Все возможности терминального TUI -- слеш-команды, выбор модели, карточки вызовов инструментов, markdown-стриминг, запросы утверждений, темы скинов -- работают идентично.
Как это работает:
/api/ptyоткрывает WebSocket с токеном аутентификации панели- Сервер запускает
hermes --tuiза POSIX-терминалом - Нажатия клавиш идут в PTY; ANSI-вывод транслируется в браузер
- xterm.js с WebGL-рендерером отрисовывает каждый символ в пиксельную сетку
Возобновление сессии: на вкладке Sessions нажмите иконку воспроизведения (▶) рядом с сессией -- откроется /chat?resume=<id> с полной историей.
Переключатель сессий (правая панель): список бесед в стиле ChatGPT позволяет менять сессии без покидания страницы. Панель содержит выбор модели сверху и список сессий снизу. Отображается заголовок (или превью сообщения), время последней активности, количество сообщений и канал. Нажатие на строку возобновляет сессию. Кнопка "New chat" начинает новую сессию.
Примеры:
4.3. Config (Конфигурация)
Формовый редактор для config.yaml. Все 150+ полей конфигурации автоматически обнаруживаются из DEFAULT_CONFIG и организованы по вкладкам:
- model -- модель по умолчанию, провайдер, базовый URL, настройки рассуждений
- terminal -- бэкенд (local/docker/ssh/modal), таймаут, предпочтения оболочки
- display -- скин, прогресс инструментов, отображение восстановления, настройки спиннера
- agent -- макс. итерации, таймаут шлюза, уровень сервиса
- delegation -- лимиты подагентов, усилие рассуждений
- memory -- выбор провайдера памяти, настройки инъекции контекста
- approvals -- режим утверждения опасных команд (ask/yolo/deny)
Поля с известными допустимыми значениями отображаются как выпадающие списки. Булевы значения -- как переключатели. Остальное -- текстовые поля.
Действия:
- Save -- записывает изменения в
config.yaml - Reset to defaults -- сбрасывает все поля к значениям по умолчанию
- Export -- скачивает текущую конфигурацию в JSON
- Import -- загружает JSON-файл конфигурации
4.4. API Keys (Ключи API)
Управление файлом .env с API-ключами и учетными данными. Ключи сгруппированы по категориям:
- LLM Providers -- OpenRouter, Anthropic, OpenAI, DeepSeek и др.
- Tool API Keys -- Browserbase, Firecrawl, Tavily, ElevenLabs и др.
- Messaging Platforms -- токены Telegram, Discord, Slack и др.
- Agent Settings -- не-секретные переменные окружения
Каждый ключ отображает:
- Установлен ли он (с замаскированным превью значения)
- Описание назначения
- Ссылку на страницу создания ключа провайдера
- Поле ввода для установки или обновления
- Кнопку удаления
Редко используемые ключи скрыты по умолчанию за переключателем.
4.5. Sessions (Сессии)
Просмотр и inspect всех сессий агента. Каждая строка показывает: заголовок сессии, иконку платформы (CLI, Telegram, Discord, Slack, cron), модель, количество сообщений, количество вызовов инструментов и время последней активности. Активные сессии отмечаются пульсирующим бейджем.
Функции:
- Поиск -- полнотекстовый поиск по содержимому сообщений (FTS5). Результаты показывают выделенные фрагменты.
- Статистика -- сводка: общее количество сессий, активные, архивированные, всего сообщений, разбивка по источникам.
- Раскрытие -- клик по сессии загружает полную историю сообщений. Сообщения раскрашены по ролям (user, assistant, system, tool) и рендерятся как Markdown.
- Tool calls -- сообщения ассистента с вызовами инструментов показывают сворачиваемые блоки с именем функции и JSON-аргументами.
- Переименование -- установка или очистка заголовка сессии.
- Экспорт -- скачивание сессии (метаданные + история) в JSON.
- Prune -- удаление завершенных сессий старше N дней.
- Удаление -- удаление сессии и ее истории.
4.6. Logs (Логи)
Просмотр файлов логов агента, шлюза и ошибок с фильтрацией и автообновлением:
- File -- переключение между
agent,errorsиgateway - Level -- фильтр: ALL, DEBUG, INFO, WARNING, ERROR
- Component -- фильтр по компоненту: gateway, agent, tools, cli, cron
- Lines -- количество строк: 50, 100, 200, 500
- Auto-refresh -- живой тейлинг с опросом каждые 5 секунд
- Цветовая кодировка -- строки окрашены по severity
4.7. Analytics (Аналитика)
Аналитика использования и стоимости на основе истории сессий. Выберите период (7, 30 или 90 дней):
- Сводные карточки -- общее количество токенов (вход/выход), процент кеш-попаданий, общая стоимость, количество сессий
- Дневной график токенов -- стековая гистограмма входных и выходных токенов по дням
- Дневная таблица -- дата, сессии, токены, кеш, стоимость
- Разбивка по моделям -- таблица с количеством сессий, токенами и стоимостью для каждой модели
4.8. Cron (Планировщик)
Создание и управление запланированными задачами:
- Создание -- имя (опционально), промпт, cron-выражение (например,
0 9 * * *), цель доставки (local, Telegram, Discord, Slack, email) - Список задач -- имя, промпт, расписание, состояние (enabled/paused/error), цель, время последнего и следующего запуска
- Пауза / Возобновление -- переключение состояния
- Редактирование -- модальное окно для изменения промпта, расписания, имени или цели
- Запуск сейчас -- немедленное выполнение вне расписания
- Удаление --permanentное удаление
4.9. Profiles (Профили)
Создание и управление профилями -- изолированными экземплярами Hermes со своей конфигурацией, скиллами и сессиями:
- Карточки профилей -- модель/провайдер, количество скиллов, состояние шлюза, описание, бейджи (active, default, alias)
- Создание -- имя + клонирование (опционально), описание, модель; полноценный Profile Builder на
/profiles/new - Управление скиллами -- переход к странице Skills в контексте профиля
- Установка по умолчанию -- переключение профиля по умолчанию для будущих CLI/gateway запусков
- Редактирование -- модели, описания, SOUL
- Переименование / Удаление -- только для именованных профилей
4.10. Skills (Скиллы)
Просмотр, поиск, включение/выключение установленных скиллов и наборов инструментов, установка новых из хаба:
- Поиск -- фильтрация по имени, описанию или категории
- Фильтр по категории -- MLOps, MCP, Red Teaming, AI и др.
- Переключение -- включение/выключение отдельных скиллов. Изменения вступают в силу на следующей сессии.
- Toolsets -- встроенные наборы инструментов (файловые операции, веб-браузинг и др.) со статусом и требованиями настройки
- Browse hub -- поиск в хабе скиллов, установка по идентификатору, кнопка "Update all"
4.11. MCP
Управление серверами MCP без CLI. Тот же блок mcp_servers в config.yaml.
Настроенные серверы:
- Добавление -- HTTP/SSE сервер (URL) или stdio сервер (команда + аргументы) с переменными окружения
- Включение / Выключение -- переключатель без удаления
- Тест -- подключение, список инструментов, отключение
- Удаление -- удаление из конфигурации
Каталог: просмотр одобренных Nous MCP-серверов (каталог optional-mcps/), установка одним кликом. Серверы, требующие API-ключи, запрашивают их инлайн; значения записываются в .env.
4.12. Webhooks
Управление динамическими подписками на вебхуки:
- Создание -- имя, описание, фильтр событий, цель доставки, промпт агента. После создания отображается URL маршрута и одноразовый HMAC-секрет.
- Включение / Выключение -- переключатель. Отключенные маршруты остаются в файле, но шлюз отклоняет их входящие события (403). Изменения применяются к следующему событию без перезапуска.
- Удаление -- удаление подписки
4.13. Pairing (Сопряжение)
Утверждение и отзыв пользователей мессенджеров без CLI:
- Ожидающие запросы -- платформа, код, пользователь, возраст запроса, кнопка "Approve"
- Утвержденные пользователи -- платформа и пользователь, кнопка "Revoke"
- Очистка ожидающих -- удаление всех ожидающих кодов
4.14. Channels (Каналы)
Подключение Hermes к платформам мессенджеров из браузера -- полный паритет с hermes setup gateway. Список всех поддерживаемых каналов (Telegram, Discord, Slack, Matrix, Mattermost, WhatsApp, Signal, BlueBubbles/iMessage, Email, SMS/Twilio, DingTalk, Feishu/Lark, WeCom, WeChat, QQ Bot, Yuanbao и др.) со статусом подключения.
Функции:
- Настройка -- форма с полями, специфичными для платформы (токен бота, URL сервера, allowlist и др.). Секреты маскируются. Ссылка "Setup guide" ведет к документации платформы.
- Включение / Выключение -- переключатель. Учетные данные сохраняются на диске.
- Тест -- проверка конфигурации, включения и статуса подключения шлюза.
- Перезапуск шлюза -- учетные данные записываются в
~/.hermes/.envиconfig.yaml.
4.15. System (Система)
Сводная панель администрирования:
- Host -- системная статистика в реальном времени: ОС/ядро, архитектура, hostname, Python и Hermes, CPU (количество + загрузка), память, диск, аптайм. Бейдж обновлений (up to date / N коммитов позади) и кнопка "Check for updates". При доступности обновления -- кнопка "Update now" с подтверждением.
- Nous Portal -- статус входа, провайдер инференса, таблица маршрутизации Tool Gateway.
- Skill curator -- статус фонового обслуживания скиллов (active/paused), пауза/возобновление, запуск сейчас.
- Gateway -- запуск, остановка, перезапуск шлюза мессенджеров со статусом (running/stopped, PID, состояние).
- Memory -- выбор внешнего провайдера памяти или сброс встроенных хранилищ
MEMORY.md/USER.md. - Credential pool -- добавление и удаление ротируемых API-ключей (по провайдеру). Ключи маскируются в списке.
- Operations -- doctor, аудит безопасности, бэкап/восстановление, обновление скиллов, размер системного промпта, support dump, миграция конфигурации.
- Checkpoints -- просмотр размера shadow store
/rollbackи его очистка. - Shell hooks -- список настроенных хуков, создание (с предупреждением безопасности и согласием), удаление.
5. Аутентификация
При привязке панели к публичному или не-localhost адресу Hermes включает аутентификацию. Три встроенных провайдера:
Username/Password (без OAuth)
Простой способ защитить self-hosted панель. Нет внешнего провайдера идентичности. Используйте только в доверенных сетях или за VPN.
Конфигурация в config.yaml:
Переменные окружения:
HERMES_DASHBOARD_BASIC_AUTH_USERNAMEHERMES_DASHBOARD_BASIC_AUTH_PASSWORD_HASH(предпочтительно) илиHERMES_DASHBOARD_BASIC_AUTH_PASSWORDHERMES_DASHBOARD_BASIC_AUTH_SECRETHERMES_DASHBOARD_BASIC_AUTH_TTL_SECONDS
Пример из командной строки:
OAuth (Nous Portal)
Для публичных развертываний и подключения Hermes Desktop к удаленному бэкенду. Каждый вход проверяется через Nous Portal.
Регистрация панели:
Запуск с OAuth:
Проверка:
Self-hosted OIDC
Для использования собственного провайдера идентичности (Keycloak, Auth0, Okta, Google, GitHub через OIDC bridge и др.) без Nous Portal.
Когда включается аутентификация
| Условие | Аутентификация |
|---|---|
hermes dashboard (по умолчанию, 127.0.0.1) | Выкл |
hermes dashboard --host 0.0.0.0 | Вкл |
--insecure | Пропуск (ОПАСНО) |
Аутентификация включается если:
- Адрес привязки не
127.0.0.1,::1,localhostили0.0.0.0И - Флаг
--insecureне установлен
6. REST API
Веб-панель предоставляет REST API для автоматизации. Все эндпоинты поддерживают опциональный параметр ?profile=<name> для скопирования операций к конкретному профилю.
Основные эндпоинты
| Метод | Путь | Описание |
|---|---|---|
GET | /api/status | Версия агента, статус шлюза, платформы, активные сессии |
GET | /api/sessions | 20 последних сессий с метаданными |
GET | /api/sessions/{id} | Метаданные одной сессии |
GET | /api/sessions/{id}/messages | Полная история сообщений сессии |
GET | /api/sessions/search?q=... | Полнотекстовый поиск по сообщениям (FTS5) |
DELETE | /api/sessions/{id} | Удаление сессии |
PATCH | /api/sessions/{id} | Переименование / архивирование |
GET | /api/sessions/{id}/export | Экспорт сессии в JSON |
POST | /api/sessions/prune | Удаление сессий старше N дней |
GET | /api/sessions/stats | Статистика хранилища сессий |
Конфигурация и окружение
| Метод | Путь | Описание |
|---|---|---|
GET | /api/config | Текущая конфигурация как JSON |
GET | /api/config/defaults | Значения по умолчанию |
GET | /api/config/schema | Схема полей конфигурации |
PUT | /api/config | Сохранение конфигурации |
GET | /api/env | Все переменные окружения со статусом |
PUT | /api/env | Установка переменной окружения |
DELETE | /api/env | Удаление переменной окружения |
Скиллы и инструменты
| Метод | Путь | Описание |
|---|---|---|
GET | /api/skills | Все скиллы со статусом |
PUT | /api/skills/toggle | Включение/выключение скилла |
GET | /api/tools/toolsets | Все наборы инструментов |
Логи и аналитика
| Метод | Путь | Описание |
|---|---|---|
GET | /api/logs?file=...&lines=...&level=... | Строки логов |
GET | /api/analytics/usage?days=30 | Аналитика использования и стоимости |
Cron
| Метод | Путь | Описание |
|---|---|---|
GET | /api/cron/jobs | Все задачи cron |
POST | /api/cron/jobs | Создание задачи |
PUT | /api/cron/jobs/{id} | Редактирование задачи |
POST | /api/cron/jobs/{id}/pause | Пауза |
POST | /api/cron/jobs/{id}/resume | Возобновление |
POST | /api/cron/jobs/{id}/trigger | Немедленный запуск |
DELETE | /api/cron/jobs/{id} | Удаление |
MCP
| Метод | Путь | Описание |
|---|---|---|
GET | /api/mcp/servers | Список серверов |
POST | /api/mcp/servers | Добавление сервера |
POST | /api/mcp/servers/{name}/test | Тест подключения |
PUT | /api/mcp/servers/{name}/enabled | Включение/выключение |
DELETE | /api/mcp/servers/{name} | Удаление |
GET | /api/mcp/catalog | Каталог Nous MCP |
POST | /api/mcp/catalog/install | Установка из каталога |
Мессенджеры и вебхуки
| Метод | Путь | Описание |
|---|---|---|
GET | /api/messaging/platforms | Все каналы со статусом |
PUT | /api/messaging/platforms/{id} | Настройка канала |
POST | /api/messaging/platforms/{id}/test | Тест канала |
GET | /api/pairing | Ожидающие и утвержденные пользователи |
POST | /api/pairing/approve | Утверждение кода |
POST | /api/pairing/revoke | Отзыв пользователя |
GET | /api/webhooks | Список подписок |
POST | /api/webhooks | Создание подписки |
DELETE | /api/webhooks/{name} | Удаление подписки |
PUT | /api/webhooks/{name}/enabled | Включение/выключение |
Система
| Метод | Путь | Описание |
|---|---|---|
GET | /api/system/stats | Системная статистика |
GET | /api/credentials/pool | Пул API-ключей |
POST | /api/credentials/pool | Добавление ключа |
DELETE | /api/credentials/pool/{provider}/{index} | Удаление ключа |
GET | /api/memory | Статус памяти |
PUT | /api/memory/provider | Выбор провайдера |
POST | /api/memory/reset | Сброс памяти |
POST | /api/gateway/start | Запуск шлюза |
POST | /api/gateway/stop | Остановка шлюза |
POST | /api/gateway/restart | Перезапуск шлюза |
POST | /api/ops/doctor | Диагностика |
POST | /api/ops/backup | Создание бэкапа |
POST | /api/ops/import | Восстановление из бэкапа |
GET | /api/hermes/update/check | Проверка обновлений |
GET | /api/curator | Статус куратора скиллов |
GET | /api/portal | Статус Nous Portal |
Скилл хаб
| Метод | Путь | Описание |
|---|---|---|
GET | /api/skills/hub/search | Поиск в хабе |
POST | /api/skills/hub/install | Установка |
POST | /api/skills/hub/uninstall | Удаление |
POST | /api/skills/hub/update | Обновление |
7. Подключение Hermes Desktop к удаленному бэкенду
Hermes Desktop обычно запускает собственный локальный бэкенд, но может подключиться к панели на удаленной машине через Settings -> Gateway -> Remote gateway.
Предварительное требование: hermes dashboard должен быть запущен на удаленном хосте.
Настройка удаленной панели
Задайте имя пользователя и пароль, затем запустите панель на доступном адресе. Пример конфигурации systemd:
Файл ~/.hermes/.env:
В Desktop введите Remote URL (например, http://VM_IP:9119) и Sign in с именем пользователя и паролем.
Проверка
auth_required: trueи"basic"в списке провайдеров -- процесс "Sign in" будет работать.auth_required: false-- привязка loopback или аутентификация не включена.auth_required: trueно нет"basic"-- переменные окружения не загружены.
8. Команда /reload
При изменении API-ключей через веб-панель или редактировании .env используйте /reload в активной CLI-сессии для применения изменений без перезапуска:
9. Безопасность
- Панель читает и записывает файл
.envс API-ключами и секретами. - По умолчанию привязывается к
127.0.0.1-- доступна только с локальной машины. - Привязка к
0.0.0.0делает учетные данные доступными по сети -- используйте файрвол и аутентификацию. --insecureотключает аутентификацию полностью -- не используйте для удаленных подключений.- Провайдер username/password предназначен для доверенных сетей -- не для публичного интернета.
- Для публичного интернета используйте OAuth (Nous Portal) или self-hosted OIDC.