OpenMuse: el agente personal open source de CopilotKit, instalado y probado
OpenMuse es un agente personal open source de CopilotKit: le pides un resultado ("rellena este formulario", "resume mis gastos", "vigila esta página") y el agente hace un plan, trabaja en el servidor con su propio navegador, una terminal Linux y tus archivos, y te pide permiso antes de enviar nada. Tiene licencia MIT, app para iOS, Android y web, y en seis semanas ha pasado de cero a más de 5.500 estrellas en GitHub.
Lo instalamos en un contenedor Linux limpio, corrimos sus 487 tests y usamos la app web de verdad con los datos ficticios que trae. Aquí tienes qué es, cómo está construido, cómo instalarlo, qué funcionó en nuestra prueba y la letra pequeña que el README menciona de pasada: el chat no arranca sin una clave de CopilotKit Intelligence, un servicio externo que no forma parte del código MIT.

Qué es OpenMuse y quién lo hace
- Repositorio: github.com/CopilotKit/OpenMuse
- Autor: CopilotKit, la empresa detrás del framework de copilotos para React y del protocolo AG-UI.
- Versión analizada: 0.1.0-alpha (primera versión pública del 15 de septiembre de 2026), en el commit
50b016cdel 25 de octubre de 2026. - Licencia: MIT ("Copyright (c) 2026 OpenMuse contributors"). Puedes usarlo, modificarlo y venderlo. Ojo: CopilotKit Intelligence, el servicio que guarda las conversaciones, no está cubierto por esa licencia.
- Estado: alfa, pensado para autoalojarlo y construir encima. El propio README dice "Clone this template and customize it however you want".
La idea es la de los agentes tipo "modo agente" de los asistentes comerciales, pero con el código en tu servidor: el agente tiene un ordenador (Chromium persistente más un contenedor Linux opcional), su trabajo es visible (planes, pasos, recibos) y los resultados llegan como tarjetas dentro del chat: correos, páginas web, PDFs, planes y resúmenes de gastos.
Qué hace: las pantallas de la app
La app (Expo + React Native) tiene cinco pestañas abajo: Chat, Actividad, Ideas, Objetivos y Apps. Esto es lo que incluye la alfa, según su tabla de funciones y lo que vimos al usarla:
| Superficie | Qué hace |
|---|---|
| **Chat** | Chat de CopilotKit con eventos AG-UI en streaming, cola de mensajes, borradores que no se pierden y tarjetas de correo, navegador, PDF y finanzas. |
| **Ordenador del agente** | Perfiles de Chromium persistentes con botón **Take control** para seguir tú; terminal Linux opcional con recibos de cada comando y editor de archivos. |
| **Actividad** | Tareas duraderas con plan, progreso, peticiones de datos, pausa, reanudar, cancelar, aprobaciones y recibos. |
| **Ideas** | Sugerencias sacadas de tu correo y calendario, con la evidencia a la vista; las aceptas, editas o descartas. |
| **Objetivos y seguimiento** | Metas con hitos y vigilancia periódica de páginas públicas: cambios, texto que aparece o precio por debajo de un umbral. |
| **Documentos** | Adjunto de correo → PDF → valores del formulario → copia rellenada → respuesta revisada → recibo. |
| **Finanzas** | Importa un CSV de transacciones y genera un resumen con categorías y una meta de ahorro. |
| **Gmail y Calendar** | Adaptadores OAuth de Google; cada envío o cambio de evento exige una revisión guardada. |
Lo que no hace todavía (está en el roadmap): reservas y pagos automáticos, conectores de banca, salud o redes sociales, notificaciones push, voz, multiusuario y OCR de PDFs escaneados.
Cómo está construido

Es un monorepo TypeScript con pnpm. Las piezas que importan:
apps/server: API en Hono con el runtime de CopilotKit, el motor de tareas, las revisiones, los archivos y la persistencia. Por defecto usa PGlite (Postgres embebido) en.openmuse/; para separar el worker de tareas necesitas PostgreSQL, porque PGlite no se puede abrir desde dos procesos.apps/mobile: la misma interfaz para iOS, Android y web con los hooks headless de@copilotkit/react-native.apps/worker: servicio de navegador con Playwright y Chromium, protegido por token y con perfiles persistentes en el puerto 8790.apps/computer: imagen Docker de Linux sin root para la terminal del agente.- Modelos: el agente usa TanStack AI con adaptadores de OpenAI, Anthropic y Google (
MODEL=proveedor/modelo). El despliegue de Render traeopenai/gpt-5por defecto. - Búsqueda web: activada por defecto con el MCP de búsqueda gratuito de Parallel. Las consultas y parte del contexto salen hacia Parallel; se desactiva con
WEB_SEARCH_ENABLED=false.
El diseño de seguridad es lo más trabajado del proyecto. Cada acción externa (enviar un correo, crear un evento) genera una propuesta ligada a la cuenta, al contenido y a la versión, y el servidor no la ejecuta sin una aprobación registrada. Si una escritura queda en estado incierto por un fallo de red, no se reintenta sola. El contenedor Linux corre como UID 1000, con el sistema de archivos de solo lectura, sin capacidades, sin red, 512 MB de RAM, una CPU y 30 segundos por comando. Y el README lo resume en una frase que conviene leer dos veces: el contenido de webs, correos y documentos "aporta evidencia, no permiso para actuar".
Requisitos e instalación
El README pide Node 24 LTS, pnpm 11.19.0 y una clave de proyecto de CopilotKit Intelligence. No hace falta modelo, cuenta de Google ni Docker para la app de ejemplo. Nosotros lo hicimos con Node 22.22.0 (el package.json admite >=22) y funcionó.
git clone https://github.com/CopilotKit/OpenMuse.git openmuse
cd openmuse
pnpm install --frozen-lockfile
cp .env.example .env
npx copilotkit@latest login
npx copilotkit@latest project select
pnpm devproject select genera dos valores que van al .env del servidor: CPK_INTELLIGENCE_API_KEY y CPK_TELEMETRY_ID. En otra terminal arrancas la web:
pnpm dev:webLa app queda en http://localhost:8081 y la API en http://localhost:8787/api/health. Para iOS o Android: pnpm --dir apps/mobile ios o pnpm --dir apps/mobile android (necesitas Xcode o las herramientas de Android).
Para que el agente navegue, añade el worker de Chromium:
pnpm --dir apps/worker exec playwright install chromium
pnpm dev:browsercon BROWSER_WORKER_URL=http://127.0.0.1:8790 y un WORKER_TOKEN aleatorio de al menos 32 caracteres en el .env. Y para la terminal Linux:
docker build -t openmuse-computer:local apps/computer
COMPUTER_ENABLED=true pnpm devPara un modelo real: AGENT_BACKEND=model, MODEL=anthropic/<id-del-modelo> (u openai/..., google/...) y la clave del proveedor correspondiente.
Desplegarlo en un servidor
El repo trae un render.yaml con tres servicios: la API (plan Standard con disco de 1 GB), la web estática y el navegador como servicio privado. El README avisa de que con 512 MB la API se queda sin memoria antes de abrir el puerto, por culpa de PGlite. Si prefieres tu propio VPS, también hay un infra/compose.yaml para el worker de navegador con contenedor de solo lectura, cap_drop: ALL y límite de 2 GB.
En modo live (el que necesitas fuera de localhost) hacen falta además OPENMUSE_ACCESS_KEY (24+ caracteres) y TOKEN_ENCRYPTION_KEY (32 bytes en base64). Es un solo dueño por despliegue protegido con una clave compartida: no es un sistema multiusuario.
Nuestra prueba real en un contenedor limpio
Lo instalamos en un contenedor Linux sin nada previo, con los datos ficticios de ejemplo (modo sample) y sin cuenta de CopilotKit, para ver qué parte del producto funciona sola.
1. Los tests: 487 de 487
pnpm install --frozen-lockfile tardó 18 segundos. pnpm test ejecutó 487 tests en 2 minutos: 487 en verde, 0 fallos, 0 saltados. Cubren el motor de tareas, persistencia con reinicios de PGlite, carreras entre workers, revisiones, adaptadores de Google con servidores HTTP simulados, el navegador y el ordenador. Para comparar, el documento de verificación de septiembre hablaba de 154 tests: el proyecto se mueve rápido.
2. El chat no arranca sin CopilotKit Intelligence
Con una clave de relleno, la API arranca (/api/health responde {"ok":true,"mode":"sample","agentConfigured":true}) y la web exportada con Expo carga, pero el chat muestra esto:

En el log del servidor se ve la causa: la API llama a api.intelligence.copilotkit.ai para crear el hilo principal (getOrCreateThread) y, si falla, devuelve un 502. Es decir: el chat, que es el corazón del producto, depende de un servicio externo de CopilotKit en todos los modos, también en el local. La app de ejemplo no necesita modelo, pero sí esa cuenta. Es gratis registrarse, pero conviene saberlo antes de presentarlo como "100 % autoalojado".
3. Lo que sí funciona sin cuenta: tareas, PDFs, finanzas y seguimiento
Todo lo que no pasa por el chat funciona contra la API local. En la pestaña Ideas aparecen dos sugerencias sacadas del buzón ficticio, cada una con su correo de origen:

Pulsamos Start this en la de la autorización escolar. La tarea encuentra el PDF adjunto y se para a pedir los datos: lista los campos que admite el formulario (participant_name, guardian_name, emergency_contact, emergency_phone, additional_notes, permission_granted) y avisa de que el original no se toca.

Al continuar, el servidor genera Field trip permission slip — filled.pdf (2 páginas), prepara la respuesta al colegio y se queda en Waiting approval. La revisión muestra cuenta, destinatario, asunto, cuerpo, el adjunto con su versión (81948de5) y una caducidad de 30 minutos:

Aprobamos con Approve locally y la tarea terminó con "Reply saved in your local Sent mail". Abrimos el PDF generado en disco (.openmuse/files/) y los campos estaban rellenados:

Después delegamos una tarea de Finanzas desde Menú → Delegate task → Finance → Try example transactions con cuatro transacciones de ejemplo. En segundos, el plan de tres pasos (validar, calcular, guardar) terminó con ingresos 4.200,00, gastos 110,99 y restante 4.089,01: la captura del principio. Por último, en Goals → Track creamos un seguimiento sobre la página de disponibilidad incorporada, que quedó programado cada 15 minutos. En el móvil, la pestaña Actividad lo recoge todo:

Lo que no pudimos probar
No conectamos un modelo real ni una cuenta de Google, y el navegador del agente no pudo salir a internet desde nuestro contenedor, así que no evaluamos la calidad del agente en tareas abiertas. El propio proyecto es honesto con esto: su documento de verificación dice que sus vídeos de demo usan respuestas de modelo guionizadas (CopilotKit AI Mock) sobre un Chromium real, y que la aceptación con modelos en vivo y cuentas de Google reales sigue pendiente.
Seguridad y privacidad: lo que debes saber
- Telemetría activada por defecto. El SDK de CopilotKit envía eventos de uso a
telemetry.copilotkit.ai(PostHog) etiquetados como OpenMuse, con muestreo del 100 %. Se desactiva conCOPILOTKIT_TELEMETRY_DISABLED=trueoDO_NOT_TRACK=1. - Las conversaciones viven en CopilotKit Intelligence, no en tu base de datos. Tareas, PDFs y memoria sí se quedan en
.openmuse/. - El navegador no es una frontera de seguridad. Playwright desactiva el sandbox interno de Chromium; el worker debe ser privado y con su propio token.
- El proveedor opcional E2B cambia las reglas: el escritorio tiene internet,
sudosin contraseña y los puertos abiertos son públicos. Un agente con inyección de prompt podría sacar datos desde ahí, como advierte suSECURITY.md. - Guarda
.env,.openmuse/y los perfiles del navegador como datos privados: contienen tokens y sesiones.
Si vas a dar a un agente acceso a tu correo, merece la pena leer también nuestra guía sobre cómo escanear skills antes de instalarlas: el riesgo de inyección es el mismo.
Errores frecuentes
"Main conversation is unavailable. Check the Rich Threads connection and try again." Falta CPK_INTELLIGENCE_API_KEY o no es válida, o el servidor no llega a api.intelligence.copilotkit.ai. Repite npx copilotkit@latest login y project select y reinicia la API.
"OpenMuse requires CPK_INTELLIGENCE_API_KEY" al arrancar. El servidor se niega a iniciar sin esa variable en cualquier modo. Ponla en el .env de la raíz.
La API de Render se reinicia sin abrir el puerto. Plan de 512 MB: PGlite no cabe. Sube a Standard.
El modo sample rechaza el host. El modo sample solo acepta loopback (127.0.0.1). En un servidor usa WORKSPACE_MODE=live con OPENMUSE_ACCESS_KEY y TOKEN_ENCRYPTION_KEY.
El botón "Start tracking" o "Delegate task" no responde. Está deshabilitado hasta que rellenas el campo de texto principal ("What are you watching?" o "What would you like done?").
Preguntas frecuentes
¿OpenMuse es gratis? El código sí (MIT). Pagas el modelo que uses y, si lo despliegas, el hosting. CopilotKit Intelligence tiene registro gratuito, pero es un servicio aparte con sus propios términos.
¿Puedo usarlo con Claude? Sí: AGENT_BACKEND=model, MODEL=anthropic/<id-del-modelo> y ANTHROPIC_API_KEY.
¿Funciona sin internet? No del todo: el chat necesita CopilotKit Intelligence. Las tareas, PDFs, finanzas y seguimientos sí funcionan contra la API local.
¿Es multiusuario? No. Un dueño por despliegue con una clave compartida.
¿Sirve para producción? Es una alfa. Para experimentar o como base de un producto propio, sí; para darle tu Gmail real sin revisar el código, todavía no.
Conclusión
OpenMuse es una de las bases más serias que hemos visto para construir un agente personal: tareas duraderas que sobreviven a reinicios, aprobaciones ligadas a versión, un contenedor sin red para los comandos y 487 tests que pasan a la primera. El "pero" es que el chat depende de CopilotKit Intelligence incluso en local, y que la telemetría viene activada. Si quieres un agente propio para tu negocio, clónalo, desactiva la telemetría, conecta tu modelo y empieza por los flujos de documentos y finanzas, que son los que ya funcionan de punta a punta.
¿Te interesan más agentes y skills para trabajar con IA? Echa un vistazo a Superpowers para Claude Code y a nuestra guía de skills de Claude Code.
// código fuente
// kit para agencias
// implementación
Más sobre Agentes de IA

- Skills para tus agentes
- Claude Code

- Skills para tus agentes
- Claude Code

- Skills para tus agentes
- Claude Code