Jorge Turbica / blog · Blog ← Todos los artículos EN · Read in English
IA

Repo del día: OpenBot, agentes con su propio navegador y cada acción auditada

La plantilla de CopilotKit da a cada agente un contenedor con navegador y pasa cada acción por una política CEL y un registro de auditoría.

OpenBot ronda ya las 8.200 estrellas y el millar de forks, está en la lista de tendencias de GitHub del 30 de octubre de 2026 y la insignia de Trendshift de su README lo sitúa tercero entre los repositorios del día. Lo publica CopilotKit, el equipo detrás del protocolo AG-UI, y su propuesta es concreta: un asistente al estilo ChatGPT que corre en tu infraestructura, donde cada agente tiene su propio navegador y ninguna acción ocurre sin una política que la autorice y una fila de auditoría que la registre.

Qué es y cómo funciona por dentro

OpenBot no es un producto que se contrata, sino una plantilla: el propio README dice que hay que clonarla, sustituir el paquete de ejemplo de examples/ por tus propios agentes y desplegarla. Está en beta, con licencia MIT y unos 590 commits.

La pieza central es un gateway por el que pasa todo lo que un agente hace en un ordenador, un fichero, un servidor MCP o un componente de la interfaz. Para cada llamada a una herramienta resuelve el destino a partir de un snapshot que guarda el servidor, evalúa la política, escribe la fila de auditoría y solo entonces actúa. No hay camino que ejecute algo sin que el registro exista antes.

Las políticas se escriben en CEL y pueden mirar tool.name, page.host, command, file.*, mcp.* o initiator.*, este último para negar a una rutina programada lo que sí se permite a una persona. El diseño es fail closed: las reglas de denegación se evalúan antes que las de permiso, sin política no se permite nada y una regla rota deniega en lugar de abrir.

Cada persona recibe un contenedor propio (el "computer") con Chromium, un directorio /workspace y un perfil de navegador por agente; marcar un agente como Isolated le da un contenedor solo para él, y con COMPUTER_RUNTIME=runsc se ejecutan bajo gVisor. Los agentes son cualquier endpoint que hable AG-UI, así que valen los escritos con LangGraph, Mastra, CrewAI, Pydantic AI, Google ADK o a mano.

El stack: UI en React/Vite, API en Hono sobre Bun, PostgreSQL con pgvector para políticas, auditoría y credenciales cifradas, y CopilotKit Intelligence para hilos y memoria.

Cómo se prueba

La vía más corta es la imagen publicada, con PostgreSQL embebido:

bash
docker run -p 3001:3001 --env-file .env \
  -e EMBEDDED_POSTGRES=on -v openbot-data:/var/lib/postgresql \
  ghcr.io/copilotkit/openbot:latest

El .env necesita al menos DATABASE_URL (o el Postgres embebido), KEY_ENCRYPTION_KEY, las tres variables de CopilotKit Intelligence y una clave de modelo. Para desarrollo local, el repositorio trae scripts/start.sh, que levanta los servicios con Docker Compose (requiere Bun 1.4 o superior), y hay un chart de Helm en charts/openbot.

Un aviso antes de exponerlo a nadie: .env.example trae OPENBOT_SINGLE_USER=true, que admite cada petición como un único administrador sin iniciar sesión. Es cómodo en un portátil y peligroso en cualquier otro sitio, porque esos agentes manejan navegadores con sesiones reales. Hay que borrar esa línea y configurar Google, Microsoft, Okta o un proveedor SAML/OIDC; sin ninguno, el servidor se niega a arrancar.

Lo que me convence y lo que no

Me convence que la gobernanza no es una capa añadida. La política está en el único camino posible hacia las herramientas, las credenciales se guardan cifradas y nunca vuelven por la API, los secretos no entran en la transcripción (solo consta que se pidieron y su longitud) y las rutinas programadas tienen frenos explícitos: un mínimo de 15 minutos entre ejecuciones, como mucho 20 activas y desactivación automática tras 10 fallos seguidos. Son justo las garantías que pediría cualquier equipo de plataforma antes de dar a un agente acceso a sistemas reales.

Lo que no me convence es la dependencia de CopilotKit Intelligence. El servidor no arranca sin sus variables, y la alternativa local es una vista previa solo para macOS con Docker Desktop y una licencia de 30 días renovable. El código es MIT, pero la memoria y los hilos dependen de un servicio de la misma empresa, y el README incluye llamadas a contratar su ayuda para desplegarlo. Además, el propio proyecto se declara en beta y avisa de que habrá cambios.

OpenBot frente a Open WebUI

La referencia para montar un asistente propio es Open WebUI, con unas 157.000 estrellas.

OpenBotOpen WebUI
EnfoqueAgentes que actúan (navegador, shell, MCP) bajo políticaInterfaz de chat para modelos locales y APIs compatibles con OpenAI
Control de accionesGateway con políticas CEL y auditoría por acciónRBAC y flujos de aprobación en plugins
AislamientoContenedor por persona o por agente, gVisor opcionalContenedores por usuario en la edición Enterprise (Terminals)
DespliegueDocker, Compose o Helm; requiere CopilotKit IntelligenceDocker, pip o Kubernetes, sin servicio externo
LicenciaMITOpen WebUI License, que obliga a conservar la marca
MadurezBetaProyecto consolidado

Si lo que necesitas es que tu equipo chatee con modelos propios o de terceros, Open WebUI se instala con un solo docker run y no depende de nadie. OpenBot tiene sentido cuando los agentes van a tocar sistemas (rellenar formularios, ejecutar comandos, usar conectores) y necesitas poder responder quién hizo qué, con qué permiso y por qué se denegó lo que se denegó.

Fuentes

Jorge Turbica

Software Engineer y SRE. Escribo sobre los retos reales que me encuentro en producción.

Ver portfolio ↗