~/codigoagente
Agentes de IA

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.

Tarea delegada en OpenMuse que resume cuatro transacciones de septiembre: plan de tres pasos completado, ingresos 4.200,00, gastos 110,99 y restante 4.089,01
Una tarea de finanzas delegada desde el menú y terminada por el servidor, en nuestra instalación · codigoagente

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 50b016c del 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:

SuperficieQué 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

Diagrama de la arquitectura de OpenMuse: app Expo, API Hono con runtime de CopilotKit, motor de tareas, PGlite o PostgreSQL, worker de Chromium, ordenador Linux en Docker, revisión obligatoria, Gmail y Calendar, modelo de IA y CopilotKit Intelligence
Arquitectura de OpenMuse a partir de su código y su README · codigoagente

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 trae openai/gpt-5 por 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ó.

terminalsh
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 dev

project select genera dos valores que van al .env del servidor: CPK_INTELLIGENCE_API_KEY y CPK_TELEMETRY_ID. En otra terminal arrancas la web:

terminalsh
pnpm dev:web

La 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:

terminalsh
pnpm --dir apps/worker exec playwright install chromium
pnpm dev:browser

con 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:

terminalsh
docker build -t openmuse-computer:local apps/computer
COMPUTER_ENABLED=true pnpm dev

Para 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:

Pantalla principal de OpenMuse con el mensaje "Main conversation is unavailable. Check the Rich Threads connection and try again"
Sin una clave válida de CopilotKit Intelligence, la conversación principal no carga · codigoagente

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:

Pestaña Ideas de OpenMuse con dos sugerencias: coordinar un café con Jamie Chen y completar la autorización de una excursión escolar
Ideas generadas a partir del correo de ejemplo, con la evidencia enlazada · codigoagente

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.

Tarea de OpenMuse en estado Waiting input con el formulario de la autorización rellenado con datos ficticios y el plan de cinco pasos debajo
La tarea pide los valores del formulario antes de seguir; el plan muestra los cinco pasos · codigoagente

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:

Pantalla One last look de OpenMuse con el correo de respuesta preparado: cuenta, destinatario, asunto, cuerpo y adjunto con versión, pendiente de aprobación
Nada sale sin esta pantalla: la aprobación vale solo para lo que se muestra · codigoagente

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:

Primera página del PDF de autorización generado por OpenMuse con los campos de participante y tutor rellenados
El PDF que generó OpenMuse, abierto fuera de la app · codigoagente

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:

Pestaña Actividad de OpenMuse en un móvil con tres tareas: seguimiento programado, autorización escolar completada y resumen de gastos completado
Las tres tareas en la vista móvil (390 px) de la web · codigoagente

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 con COPILOTKIT_TELEMETRY_DISABLED=true o DO_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, sudo sin contraseña y los puertos abiertos son públicos. Un agente con inyección de prompt podría sacar datos desde ahí, como advierte su SECURITY.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

Repositorio del artículo
El código del que habla este artículo es público: revísalo, dale una estrella o clónalo desde aquí.

// kit para agencias

¿Haces webs para clientes con Claude Code?
5 skills que preparan la propuesta, crean la web, la revisan antes de entregarla y auditan la de tus prospectos, con una guía de 24 páginas probada en un caso real. Lo vende Safe Build Labs, la agencia que patrocina codigoagente.

// implementación

¿Necesitas implementar esta automatización en tu negocio?
No pierdas semanas configurando servidores, APIs y agentes. Safe Build Labs, la agencia que patrocina codigoagente, lo construye por ti, listo para producción.
Probamos mcp-builder, la skill de Anthropic para crear servidores MCP: hicimos uno para una tienda en 99 segundos por 0,25 USD y hallamos dos fallos de versión.
  • Skills para tus agentes
  • Claude Code
leer artículo
Probamos webapp-testing, la skill oficial de Anthropic que prueba tu web local con Playwright: instalación, with_server.py, dos trampas reales y cuánto cuesta.
  • Skills para tus agentes
  • Claude Code
leer artículo
video-shotcraft es una skill Apache-2.0 con 150 planos para que Claude Code haga el vídeo promo de tu web en Remotion. Cómo funciona y cuánto cuesta.
  • Skills para tus agentes
  • Claude Code
leer artículo