Skip to main content
Glama

Agent Dashboard

Un panel autohospedado donde los agentes de IA informan de lo que están haciendo, y tú observas y diriges en tiempo real.

Los agentes se conectan a través de MCP (Streamable HTTP remoto — sin instalación local) para crear proyectos, publicar actualizaciones de estado con imágenes y vídeo, reclamar tareas, leer tus respuestas y bloquearse hasta que tú apruebes. Observas un feed en vivo en el navegador que se actualiza sin necesidad de recargar.

Estado: en desarrollo. El diseño está completo y confirmado; la implementación se sigue en issues.

Qué hace

  • Actualizaciones de estado enriquecidas — markdown, imágenes y vídeo, publicadas por los agentes mientras trabajan.

  • Proyectos — los agentes los crean; tú los renombras, fijas y archivas.

  • En vivo — todo se transmite a un navegador abierto mediante SSE, sin sondeos ni recargas.

  • Presencia — ve qué agentes están activos en este momento.

  • Plano de control — asigna tareas a los agentes, respóndeles y condiciona su trabajo a una aprobación que tú haces clic.

Related MCP server: Project Manager MCP

Alcance

De un solo propietario y autohospedado. Una implementación, un propietario, sin multiinquilino ni cuentas de usuario. Dimensionado para decenas de agentes y unos pocos miles de actualizaciones en una sola máquina.

Diseño

Consulta docs/superpowers/specs/2026-08-25-agent-dashboard-design.md para la arquitectura completa, el modelo de datos, la superficie de herramientas MCP y la semántica de la puerta de aprobación.

Desarrollo

Requiere Node 22+ y ffmpeg en PATH.

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

Script

Qué hace

npm run dev

Servidor de desarrollo de Vite

npm run build

Compilación de producción mediante el adaptador de Node (build/index.js)

npm test

Pruebas unitarias de Node (Vitest) — la suite predeterminada, sin necesidad de navegador

npm run test:component

Pruebas de componentes de Svelte en un Chromium real (modo navegador de Vitest)

npm run test:e2e

Pruebas de extremo a extremo con Playwright

npm run test:all

Unitarias + de componentes + e2e

npm run typecheck

svelte-check contra tsconfig.json (TypeScript estricto)

npm run lint

Comprobación de Prettier + ESLint

npm run format

Escritura de Prettier

Las pruebas de componentes y e2e descargan una compilación de Chromium en la primera ejecución, por lo que CI y el npm test predeterminado se mantienen deliberadamente solo en la suite de pruebas unitarias de Node.

Estructura

src/ refleja la tabla de módulos en §2 del diseño. Cada directorio tiene un README que indica su única función y los únicos módulos que puede importar.

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 está apuntado a src/http/routes para las rutas y a src/web para $lib, de modo que los directorios propios del framework se alinean con los límites de los módulos en lugar de luchar contra ellos. Importa entre módulos a través de los alias $db, $events, $media, $domain, $mcp, $http y $web.

Configuración

Cada ajuste es una variable de entorno. Consulta .env.example para la lista completa con valores predeterminados y cómo generar cada secreto. src/config.ts los valida al arrancar, por lo que un valor incorrecto falla con el nombre de la variable infractora en lugar de hacerlo en la primera solicitud.

Haz una copia de seguridad de DATA_DIR: la base de datos SQLite más una sincronización rsync de media/. La guía de sqlite3 .backup del diseño necesita la CLI de sqlite3, que es un paquete separado de la biblioteca better-sqlite3 que usa esta aplicación — la parte de empaquetado debe incluirla en la imagen de Docker, o tomar la copia de seguridad en línea a través del propio db.backup() de better-sqlite3.

Despliegue

La aplicación es un único proceso de Node. npm run build y luego node build, escuchando en PORT (por defecto 8010).

Coloca un proxy inverso delante para TLS. Dos cosas sobre ese proxy no son opcionales.

El feed en vivo no debe almacenarse en búfer

El panel transmite mediante Server-Sent Events en /api/stream. Un proxy con almacenamiento en búfer rompe esto de la manera más confusa posible: la página se conecta, no informa de ningún error y simplemente nunca se actualiza. Caddy detecta text/event-stream por sí solo, pero dilo explícitamente para que un cambio posterior de configuración no pueda provocar una regresión.

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
		}
	}
}

Detrás de nginx, el equivalente es proxy_buffering off en esa ruta, además de 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;
}

La dirección del cliente debe reenviarse

Establece ADDRESS_HEADER=X-Forwarded-For y XFF_DEPTH=1 (consulta .env.example). Sin ellos, el adaptador de Node informa del proxy como el cliente de cada solicitud, por lo que el limitador de velocidad de inicio de sesión se colapsa en un único depósito compartido y cinco intentos incorrectos de cualquier extraño bloquean al propietario durante quince minutos. La aplicación se niega a arrancar en este estado en lugar de servir un panel del que puedas quedarte bloqueado.

También establece PUBLIC_BASE_URL al origen accesible externamente. create_upload entrega a los agentes una URL de subida absoluta construida a partir de él, y un agente al que se le da una URL 127.0.0.1 no puede subir nada.

Copias de seguridad

Dos cosas que conservar: el archivo SQLite y data/media/. Toma la copia de la base de datos mediante la copia de seguridad en línea de SQLite en lugar de copiar el archivo mientras el proceso escribe en él — el modo WAL significa que un cp simple puede capturar un estado inconsistente. La CLI de sqlite3 no es necesaria y no se asume que esté instalada.

Licencia

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