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

Веб-панель управления

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

подсказка

Аутентификация в хостинг-режиме использует OAuth Nous Portal; если вы также хотите, чтобы панель взаимодействовала с реальным бэкендом, vibeos setup --portal настраивает и модельный, и инструментальный шлюзы. См. Nous Portal.

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

vibeos dashboard

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

Параметры​

ФлагПо умолчаниюОписание
--port9119Порт для запуска веб-сервера
--host127.0.0.1Адрес привязки
--no-open—Не открывать браузер автоматически
--insecureвыкл.Разрешить привязку к адресам, отличным от localhost (ОПАСНО — открывает API-ключи в сети; используйте только с файрволом и надёжной аутентификацией)
--isolatedвыкл.При запуске из именованного профиля (worker dashboard) запускает выделенный сервер для этого профиля вместо маршрутизации к машинной панели
# Пользовательский порт
vibeos dashboard --port 8080

# Привязка ко всем интерфейсам (с осторожностью в общих сетях)
vibeos dashboard --host 0.0.0.0

# Запуск без открытия браузера
vibeos dashboard --no-open

Управление несколькими профилями​

Панель — это интерфейс управления на уровне машины: один сервер управляет всеми профилями на машине. Переключатель профилей на боковой панели (видимый, когда существует более одного профиля) определяет, какой профиль читают и записывают страницы управления — Конфигурация, API-ключи, Навыки, MCP, Модели и вкладка Чат следуют за ним. Когда выбран профиль, отличный от собственного профиля панели, янтарный баннер указывает имя управляемого профиля, чтобы цель записи никогда не была неоднозначной.

Выбор хранится в URL (?profile=<name>), поэтому глубокие ссылки вроде http://127.0.0.1:9119/skills?profile=worker открываются с предварительно выбранным переключателем и сохраняются при обновлении страницы.

Запуск панели из псевдонима профиля направляет запрос к машинной панели вместо запуска второго сервера:

worker dashboard
# → уже запущена: открывает браузер с ?profile=worker
# → не запущена: запускает машинную панель с предварительно выбранным "worker"

Используйте --isolated, чтобы отказаться от этого поведения и запустить выделенный сервер, ограниченный этим профилем (поведение до унификации — полезно, если вы намеренно открываете разные панели профилей с разной аутентификацией).

Вкладка Чат также следует за переключателем: ограниченный чат запускает свой дочерний PTY-процесс с VIBEOS_HOME выбранного профиля, поэтому разговор ведётся с моделью, навыками, памятью и историей сессий этого профиля. Переключение профилей запускает новый терминальный сеанс.

Что остаётся привязанным к профилю и не поглощается переключателем: процессы шлюза (управляйте ими через vibeos -p <name> gateway …), база данных сессий каждого профиля и планировщики cron (страница Cron уже агрегирует данные по всем профилям с собственным фильтром).

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

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

cd ~/.vibeos/vibeos-agent && uv pip install -e ".[web,pty]"

Дополнение web устанавливает FastAPI/Uvicorn; pty устанавливает ptyprocess (POSIX) или pywinpty (нативный Windows — обратите внимание, что сам встроенный TUI всё ещё требует WSL). cd ~/.vibeos/vibeos-agent && uv pip install -e ".[all]" включает оба дополнения и является самым простым путём, если вам также нужны мессенджеры/голос и т.д.

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

Вкладка Чат является частью каждого запуска vibeos dashboard — встроенная панель чата в браузере (запускающая TUI через PTY/WebSocket) всегда доступна без дополнительных флагов.

Страницы​

Статус​

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

  • Версия агента и дата релиза
  • Статус шлюза — запущен/остановлен, PID, подключённые платформы и их состояние
  • Активные сессии — количество сессий, активных за последние 5 минут
  • Последние сессии — список 20 самых последних сессий с моделью, количеством сообщений, использованием токенов и превью разговора

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

Чат​

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

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

  • /api/pty открывает WebSocket, аутентифицированный токеном сессии панели
  • Сервер запускает vibeos --tui за POSIX-псевдотерминалом
  • Нажатия клавиш передаются в PTY; ANSI-вывод потоком возвращается в браузер
  • WebGL-рендерер xterm.js отрисовывает каждую ячейку на целочисленной сетке пикселей; отслеживание мыши (SGR 1006), широкие символы (Unicode 11) и символы псевдографики рендерятся нативно
  • Изменение размера окна браузера изменяет размер TUI через аддон @xterm/addon-fit

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

Переключатель сессий (правая панель): вкладка Чат имеет собственный список разговоров в стиле ChatGPT в тонкой правой панели рядом с терминалом, так что вы можете переключаться между разговорами, не покидая страницу. Панель размещает выбор модели сверху и список сессий непосредственно под ним; терминал занимает большую часть экрана. Список показывает ваши последние сессии для активного профиля — заголовок (с запасным вариантом в виде превью сообщения), относительное время последней активности, количество сообщений и исходный канал для не-CLI сессий. Нажмите на любую строку, чтобы возобновить её на месте (терминал перезапускается с историей этого разговора); активная сессия выделена. Новый чат начинает новую сессию, а элемент управления обновлением перезагружает список. Панель доступна только для чтения при переключении — удаление, переименование, экспорт и массовая очистка по-прежнему находятся на вкладке Сессии. На узких экранах она сворачивается в выдвижную панель.

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

  • Node.js (то же требование, что и для vibeos --tui; пакет TUI собирается при первом запуске)
  • ptyprocess — устанавливается дополнением pty (cd ~/.vibeos/vibeos-agent && uv pip install -e ".[web,pty]", или [all] включает оба)
  • Ядро POSIX (Linux, macOS или WSL2). Панель терминала /chat требует POSIX PTY — нативный Windows Python не имеет аналога, поэтому в нативной установке Windows остальная часть панели (сессии, задачи, метрики, редактор конфигурации) работает, но вкладка /chat покажет баннер с предложением использовать WSL2 для этой функции.

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

Чтобы подключить VibeOS Desktop к панели, работающей на другой машине, вместо собственного встроенного бэкенда, см. раздел об удалённом бэкенде ниже.

Подключение VibeOS Desktop к удалённому бэкенду​

VibeOS Desktop обычно запускает свой собственный локальный бэкенд, но он также может подключаться к панели, работающей на удалённой машине (ВМ, домашний сервер и т.д.) через Настройки → Шлюз → Удалённый шлюз. Это наиболее частый источник сообщений «Desktop говорит, что бэкенд готов, но чат никогда не работает», потому что проверка готовности Desktop проверяет меньше, чем нужно для реального подключения чата.

Предварительное требование: на удалённом хосте должен быть запущен vibeos dashboard

«Удалённый бэкенд», к которому подключается Desktop, является процессом vibeos dashboard, работающим на удалённой машине — тем же сервером, который описан на этой странице. Он должен быть запущен и доступен до того, как какие-либо из следующих шагов будут иметь значение; Desktop подключается к нему, а не запускает его для вас. Держите его работающим под systemd/tmux/и т.д., чтобы он переживал выход из системы и перезагрузки. Шлюз (Telegram/Discord/Slack/и т.д.) — это отдельный долго работающий процесс — запускайте его независимо, если вы полагаетесь на каналы обмена сообщениями; это не то, к чему подключается десктопное приложение.

Проверка готовности «удалённый бэкенд» Desktop выполняет только GET /api/status, который является публичной конечной точкой — он отвечает, как только любая панель запущена на хосте. Подключение к живому чату — это отдельный WebSocket к /api/ws (и /api/pty), и этот сокет защищён двумя дополнительными проверками, которые проверка статуса никогда не затрагивает:

  1. Вы должны быть аутентифицированы. Когда панель привязана к адресу, отличному от loopback, она включает шлюз аутентификации. Защитите её именем пользователя и паролем (встроенный провайдер имя пользователя/пароль); Desktop входит один раз и повторно использует полученную сессию для WebSocket через одноразовый билет. Без настроенного провайдера панель на не-loopback адресе закрывается при запуске.
  2. Хост привязки должен разрешать клиента и соответствовать заголовку Host. Привязка к loopback (127.0.0.1) принимает только loopback-клиентов, поэтому удалённая машина отклоняется на уровне сокета независимо от учётных данных. Привяжитесь к адресу, отличному от loopback (--host 0.0.0.0), чтобы защита по IP-адресу пира пропустила удалённого клиента. Удалённый URL, который вы вводите в Desktop, должен достигать панели через тот же хост, к которому она привязана — защита от DNS-реббиндинга требует соответствия заголовка Host.

Настройка удалённой панели​

Установите имя пользователя и пароль, затем запустите панель, привязанную к доступному адресу. Для службы systemd:

[Service]
EnvironmentFile=%h/.vibeos/.env
ExecStart=/path/to/venv/bin/python -m vibeos_cli.main dashboard \
--host 0.0.0.0 --port 9119 --no-open

с ~/.vibeos/.env, содержащим:

VIBEOS_DASHBOARD_BASIC_AUTH_USERNAME=admin
VIBEOS_DASHBOARD_BASIC_AUTH_PASSWORD=выберите-надёжный-пароль
VIBEOS_DASHBOARD_BASIC_AUTH_SECRET=<32+ случайных байт; openssl rand -base64 32>

Затем в Desktop введите Удалённый URL (например, http://VM_IP:9119) и Войдите, используя это имя пользователя и пароль. См. раздел провайдер имя пользователя/пароль для полной поверхности конфигурации.

Проверьте, что шлюз включён, прежде чем повторять попытку Desktop

С любой машины проверьте, что панель рекламирует провайдер имя пользователя/пароль:

curl -s http://VM_IP:9119/api/status | jq '.auth_required, .auth_providers'
# true
# ["basic"]
  • auth_required: true и "basic" в списке провайдеров → процесс Входа в Desktop будет работать.
  • auth_required: false → привязка к loopback, или шлюз не включился. Привяжитесь к адресу, отличному от loopback.
  • auth_required: true, но нет провайдера "basic" → переменные окружения имя пользователя/пароль не загружены. Сначала исправьте их.

Если /api/status показывает, что шлюз включён с провайдером "basic", а Desktop всё ещё не может подключиться после входа, проблема выходит за рамки базовой настройки — возьмите свежий desktop.log (Настройки → Шлюз → Открыть логи) вместе с логами панели из того же окна повторных попыток и найдите код закрытия /api/ws (4403 = чат WS отклонён защитой запроса, например, несоответствие Host/пир; 4401 = билет WS не прошёл аутентификацию).

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

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

Страница администрирования конфигурации — фильтры разделов слева, автоматически обнаруженные поля справа

  • model — модель по умолчанию, провайдер, базовый URL, настройки рассуждений
  • terminal — бэкенд (local/docker/ssh/modal), таймаут, настройки оболочки
  • display — скин, прогресс инструментов, отображение возобновления, настройки спиннера
  • agent — максимальное количество итераций, таймаут шлюза, уровень обслуживания
  • delegation — лимиты под-агентов, усилия рассуждений
  • memory — выбор провайдера, настройки инъекции контекста
  • approvals — режим одобрения опасных команд (ask/yolo/deny)
  • И многое другое — каждый раздел config.yaml имеет соответствующие поля формы

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

Действия:

  • Сохранить — немедленно записывает изменения в config.yaml
  • Сбросить на умолчания — возвращает все поля к значениям по умолчанию (не сохраняется, пока вы не нажмёте «Сохранить»)
  • Экспорт — загружает текущую конфигурацию в формате JSON
  • Импорт — загружает JSON-файл конфигурации для замены текущих значений
подсказка

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

API-ключи​

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

  • LLM-провайдеры — OpenRouter, Anthropic, OpenAI, DeepSeek и т.д.
  • API-ключи инструментов — Browserbase, Firecrawl, Tavily, ElevenLabs и т.д.
  • Платформы обмена сообщениями — токены ботов Telegram, Discord, Slack и т.д.
  • Настройки агента — несекретные переменные окружения, такие как API_SERVER_ENABLED

Для каждого ключа отображается:

  • Установлен ли он в данный момент (с затемнённым превью значения)
  • Описание его назначения
  • Ссылка на страницу регистрации/получения ключа провайдера
  • Поле ввода для установки или обновления значения
  • Кнопка удаления

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

Сессии​

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

  • Поиск — полнотекстовый поиск по всем сообщениям с использованием FTS5. Результаты показывают подсвеченные фрагменты и автоматически прокручиваются к первому совпадающему сообщению при разворачивании.
  • Статистика — сводная панель показывает общее количество сессий, сколько из них активны в хранилище, количество архивированных, общее количество сообщений и разбивку по источникам.
  • Развернуть — нажмите на сессию, чтобы загрузить полную историю сообщений. Сообщения цветные в зависимости от роли (пользователь, ассистент, система, инструмент) и отображаются в формате Markdown с подсветкой синтаксиса.
  • Вызовы инструментов — сообщения ассистента с вызовами инструментов показывают сворачиваемые блоки с именем функции и JSON-аргументами.
  • Переименовать — установить или очистить заголовок сессии прямо в строке (значок карандаша).
  • Экспорт — загрузить сессию (метаданные + полная история сообщений) в формате JSON (значок загрузки).
  • Очистка — кнопка «Очистить старые сессии» в заголовке удаляет завершённые сессии старше N дней.
  • Удалить — удалить сессию и её историю сообщений значком корзины.

Страница администрирования сессий — панель статистики, очистка и построчное переименование/экспорт/удаление

Логи​

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

  • Файл — переключение между файлами логов agent, errors и gateway
  • Уровень — фильтрация по уровню логирования: ALL, DEBUG, INFO, WARNING или ERROR
  • Компонент — фильтрация по исходному компоненту: all, gateway, agent, tools, cli или cron
  • Строки — выбор количества отображаемых строк (50, 100, 200 или 500)
  • Автообновление — включение отслеживания в реальном времени с опросом новых строк лога каждые 5 секунд
  • Цветовая кодировка — строки лога окрашены по серьёзности (красный для ошибок, жёлтый для предупреждений, тусклый для отладки)

Аналитика​

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

  • Сводные карточки — общее количество токенов (входные/выходные), процент попаданий в кэш, общая расчётная или фактическая стоимость и общее количество сессий со среднесуточным значением
  • График ежедневных токенов — столбчатая диаграмма с накоплением, показывающая использование входных и выходных токенов по дням, с всплывающими подсказками с разбивкой и стоимостью
  • Таблица ежедневной разбивки — дата, количество сессий, входные токены, выходные токены, процент попаданий в кэш и стоимость за каждый день
  • Разбивка по моделям — таблица, показывающая каждую использованную модель, количество её сессий, использование токенов и расчётную стоимость

Cron​

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

  • Создать — заполните имя (необязательно), промпт, cron-выражение (например, 0 9 * * *) и цель доставки (local, Telegram, Discord, Slack или email)
  • Список задач — каждая задача показывает своё имя, превью промпта, выражение расписания, значок состояния (включено/приостановлено/ошибка), цель доставки, время последнего запуска и время следующего запуска
  • Приостановить / Возобновить — переключение задачи между активным и приостановленным состояниями
  • Редактировать — открытие предварительно заполненного модального окна для изменения промпта, расписания, имени или цели доставки задачи
  • Запустить сейчас — немедленное выполнение задачи вне её обычного расписания
  • Удалить — окончательное удаление cron-задачи

Профили​

Создание и управление профилями — изолированными экземплярами VibeOS с собственной конфигурацией, навыками и сессиями.

  • Карточки профилей — каждая показывает модель/провайдера, количество навыков, состояние шлюза, описание и значки (активный, по умолчанию, псевдоним)
  • Создать — имя + необязательные параметры: клонировать-из-умолчания / клонировать-всё / без-встроенных-навыков, описание и модель; выделенная страница Profile Builder (/profiles/new) предлагает полный процесс (модель, MCP, навыки)
  • Управление навыками и инструментами — переход на страницу Навыков, ограниченную этим профилем (устанавливает переключатель профилей на боковой панели)
  • Установить как активный — переключает постоянное значение по умолчанию, которое будущие запуски CLI/шлюза будут использовать (то же, что и vibeos profile use). Это не меняет то, чем управляет панель — это работа переключателя профилей
  • Редактировать модель / описание / SOUL — встроенные редакторы, записывающие данные в этот профиль
  • Переименовать / Удалить — только для именованных профилей

Навыки​

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

  • Поиск — фильтрация установленных навыков и наборов инструментов по имени, описанию или категории
  • Фильтр по категориям — нажмите на пилюли категорий, чтобы сузить список (например, MLOps, MCP, Red Teaming, AI)
  • Включение/отключение — включение или отключение отдельных навыков с помощью переключателя. Изменения вступают в силу при следующей сессии.
  • Наборы инструментов — отдельное представление показывает встроенные наборы инструментов (файловые операции, веб-сёрфинг и т.д.) с их статусом активен/неактивен, требованиями к настройке и списком включённых инструментов
  • Обзор хаба — третье представление выполняет поиск в хабе навыков по всем источникам (то же, что и vibeos skills search), устанавливает любой результат по идентификатору с живым логом установки и предлагает кнопку «Обновить всё» для обновления установленных навыков.

Страница администрирования навыков — представление обзора хаба: поиск, установка и обновление

MCP​

Управление MCP серверами без CLI. Тот же блок mcp_servers в config.yaml, который читает vibeos mcp.

Ваши MCP-серверы:

  • Добавить — зарегистрировать HTTP/SSE-сервер (URL) или stdio-сервер (команда + аргументы), с необязательными переменными окружения KEY=VALUE для stdio-серверов
  • Включить / отключить — переключить сервер без удаления. Отключённый сервер остаётся в конфигурации, чтобы вы могли включить его позже. Вступает в силу при следующем перезапуске шлюза.
  • Тест — подключиться к серверу, вывести список его инструментов и отключиться — проверяет соединение до того, как агент начнёт его использовать
  • Удалить — удалить сервер из конфигурации
  • Значения переменных окружения, похожие на секреты, скрыты в представлении списка

Каталог: просмотр одобренных Nous MCP-серверов (встроенный каталог optional-mcps/) и установка любого из них одним кликом. Записи, требующие API-ключи, запрашивают их прямо на странице; значения попадают в .env. Это тот же каталог, который используют vibeos mcp catalog / vibeos mcp install.

Страница администрирования MCP — ваши серверы с переключателями включения/отключения, а также каталог установки

Вебхуки​

Управление динамическими подписками на вебхуки. Платформа вебхуков должна быть сначала включена в настройках обмена сообщениями; страница показывает подсказку, если это не так.

  • Создать — имя, описание, фильтр событий, цель доставки, необязательный режим прямой доставки и промпт агента. При создании страница показывает URL маршрута и одноразовый HMAC-секрет для копирования.
  • Включить / отключить — переключение подписки. Отключённые маршруты остаются в файле подписок, но шлюз отклоняет их входящие события (403). Шлюз перезагружает файл «на лету», поэтому изменение вступает в силу при следующем событии — перезапуск не требуется.
  • Список — каждая подписка показывает свой URL, события и цель доставки
  • Удалить — удалить подписку

Страница администрирования вебхуков — подписки с переключателями включения/отключения

Привязка​

Одобрение и отзыв пользователей мессенджеров без CLI — как удалённый администратор добавляет пользователей Telegram/Discord/и т.д. к привязанному шлюзу. Полная функциональная эквивалентность с vibeos pairing.

  • Ожидающие запросы — каждый показывает платформу, код, пользователя и время ожидания, с кнопкой «Одобрить»
  • Одобренные пользователи — каждый показывает платформу и пользователя, с кнопкой «Отозвать»
  • Очистить ожидающие — удалить все необработанные коды привязки

Страница администрирования привязки

Каналы​

Подключение VibeOS к любой платформе обмена сообщениями из браузера — полная функциональная эквивалентность с vibeos setup gateway. Страница перечисляет каждый поддерживаемый канал (Telegram, Discord, Slack, Matrix, Mattermost, WhatsApp, Signal, BlueBubbles/iMessage, Email, SMS/Twilio, DingTalk, Feishu/Lark, WeCom, WeChat, QQ Bot, Yuanbao, а также конечные точки API-сервера и вебхуков) с его статусом подключения в реальном времени.

  • Настроить — открытие формы для каждой платформы с полями, необходимыми для этого канала (токен бота, токен приложения, URL сервера, белый список и т.д.). Секреты отображаются как поля ввода пароля и хранятся скрытыми; оставление поля пустым сохраняет существующее значение. Обязательные поля отмечены и проверяются. Ссылка «Руководство по настройке» ведёт к документации по учётным данным платформы.
  • Включить / отключить — переключение канала. Учётные данные остаются на диске; изменяется только состояние активности.
  • Тест — проверка, настроен ли канал, включён ли он и сообщает ли о живом подключении от шлюза.
  • Перезапустить шлюз — учётные данные записываются в ~/.vibeos/.env, а флаг включения — в config.yaml; шлюз подключает каждый включённый канал при следующем перезапуске, который вы можете инициировать прямо со страницы.

![Страница администрирования каналов — каждая платформа обмена сообщениями со статусом, пере