Skip to main content
Glama

Agent Dashboard

Панель управления с самостоятельным хостингом, где AI-агенты, пишущие код, сообщают о том, что они делают, а вы наблюдаете и направляете их в реальном времени.

Агенты подключаются через MCP (удалённый Streamable HTTP — без локальной установки), чтобы создавать проекты, публиковать обновления статуса с изображениями и видео, брать задачи, читать ваши ответы и останавливаться в ожидании вашего одобрения. Вы наблюдаете за живой лентой в браузере, которая обновляется без перезагрузки.

Статус: в разработке. Дизайн завершён и зафиксирован; реализация отслеживается в issues.

Что он делает

  • Расширенные обновления статуса — markdown, изображения и видео, публикуемые агентами по мере работы.

  • Проекты — агенты создают их; вы переименовываете, закрепляете и архивируете их.

  • В реальном времени — всё передаётся в открытый браузер через SSE, без опроса и без перезагрузки.

  • Присутствие — видно, какие агенты сейчас в сети.

  • Плоскость управления — назначайте задачи агентам, отвечайте им и пропускайте их работу через одобрение, которое вы подтверждаете кликом.

Related MCP server: Project Manager MCP

Область применения

Один владелец и собственный хостинг. Один инстанс, один владелец, без мультитенантности и учётных записей. Рассчитано на десятки агентов и несколько тысяч обновлений на одной машине.

Дизайн

Полная архитектура, модель данных, набор инструментов MCP и семантика шлюза одобрения описаны в docs/superpowers/specs/2026-08-25-agent-dashboard-design.md.

Разработка

Требуются Node 22+ и ffmpeg в PATH.

npm ci
cp .env.example .env   # then fill in the secrets
npm run dev

Скрипт

Что делает

npm run dev

Dev-сервер Vite

npm run build

Продакшен-сборка через Node-адаптер (build/index.js)

npm test

Node-юнит-тесты (Vitest) — набор по умолчанию, браузер не нужен

npm run test:component

Тесты Svelte-компонентов в реальном Chromium (браузерный режим Vitest)

npm run test:e2e

Сквозные тесты Playwright

npm run test:all

Юнит + компонентные + e2e

npm run typecheck

svelte-check по tsconfig.json (строгий TypeScript)

npm run lint

Проверка Prettier + ESLint

npm run format

Форматирование через Prettier

При первом запуске компонентные и e2e-тесты скачивают сборку Chromium, поэтому CI и стандартный npm test намеренно остаются на наборе юнит-тестов, работающих только на Node.

Структура

src/ повторяет таблицу модулей из §2 дизайна. В каждом каталоге есть README, где указаны его единственная задача и единственные модули, которые ему разрешено импортировать.

src/db/       SQLite connection, migrations, repositories
src/events/   typed in-process pub/sub + SSE ring buffer
src/media/    upload tokens, ingest, derivatives, disk layout
src/domain/   all business rules
src/mcp/      MCP Streamable HTTP tool surface
src/http/     SvelteKit routes (browser REST, SSE, /mcp mount, media, auth)
src/web/      Svelte components and client stores

SvelteKit указывает на src/http/routes для маршрутов и на src/web для $lib, поэтому собственные каталоги фреймворка совпадают с границами модулей, а не конфликтуют с ними. Импорт между модулями выполняется через алиасы $db, $events, $media, $domain, $mcp, $http и $web.

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

Каждая настройка — это переменная окружения. Полный список со значениями по умолчанию и инструкциями по генерации каждого секрета см. в .env.example. src/config.ts проверяет их при запуске, поэтому некорректное значение приводит к ошибке с указанием проблемной переменной, а не на первом запросе.

Резервируйте DATA_DIR: базу SQLite плюс rsync каталога media/. Рекомендация из дизайна об использовании sqlite3 .backup требует CLI sqlite3, который является отдельным пакетом от используемой в приложении библиотеки better-sqlite3 — часть, отвечающая за упаковку, должна либо включить его в Docker-образ, либо выполнять онлайн-резервное копирование через собственный метод db.backup() из better-sqlite3.

Развёртывание

Приложение — это один Node-процесс. Выполните npm run build, затем node build; оно слушает порт PORT (по умолчанию 8010).

Для TLS поместите перед приложением обратный прокси. Два требования к этому прокси не являются опциональными.

Живая лента не должна буферизоваться

Дашборд передаёт данные через Server-Sent Events по адресу /api/stream. Буферизующий прокси ломает это самым запутанным образом: страница подключается, не сообщает об ошибке и просто никогда не обновляется. Caddy сам распознаёт text/event-stream, но укажите это явно, чтобы будущее изменение конфигурации не вызвало регрессию.

agents.wildware.dev {
	@stream path /api/stream
	reverse_proxy @stream 127.0.0.1:8010 {
		flush_interval -1
	}

	# Wide enough for slow video uploads and the 55s approval-gate holds.
	reverse_proxy 127.0.0.1:8010 {
		transport http {
			read_timeout 300s
		}
	}
}

В nginx эквивалентом будет proxy_buffering off для этого маршрута плюс proxy_read_timeout 300s:

location /api/stream {
	proxy_pass http://127.0.0.1:8010;
	proxy_buffering off;
	proxy_cache off;
	proxy_read_timeout 300s;
	proxy_set_header Connection '';
	proxy_http_version 1.1;
}

Адрес клиента должен передаваться

Задайте ADDRESS_HEADER=X-Forwarded-For и XFF_DEPTH=1 (см. .env.example). Без них Node-адаптер сообщает о прокси как о клиенте каждого запроса, поэтому ограничитель частоты попыток входа схлопывается в один общий бакет, и пять неверных попыток любого постороннего блокируют владельцу доступ на пятнадцать минут. В таком состоянии приложение отказывается запускаться, а не отдаёт дашборд, из которого вас могут заблокировать.

Также установите PUBLIC_BASE_URL на внешне доступный origin. Функция create_upload выдаёт агентам абсолютный URL для загрузки, построенный из него, и агент, получивший URL с 127.0.0.1, не сможет ничего загрузить.

Резервное копирование

Нужно сохранить две вещи: файл SQLite и data/media/. Копию базы делайте через онлайн-резервное копирование SQLite, а не копированием файла, пока процесс пишет в него, — в режиме WAL обычный cp может захватить несогласованное состояние. CLI sqlite3 не требуется, и его наличие не предполагается.

Лицензия

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Build and run visual creative-production workflows from your AI agent.

  • Turns any agent into a full agentic application — branded, interactive screens generated at runtime.

  • Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wildware-uk/agent-dashboard'

If you have feedback or need assistance with the MCP directory API, please join our Discord server