Próxima clase

Guía paso a paso

Mi Muse Charm, en el reloj.

Meta abrió el código para conectar aparatos a Muse. Con eso convertí mi Mac en un gadget de Muse y le hice una app al Apple Watch: le hablo a Marley, mi Muse, y me responde en voz ahí mismo, sin sacar el celular. Aquí está cómo lo hice, qué falló y cómo adaptarlo a lo que tú tienes.

TiempoUn día de trabajo
NivelAvanzado: terminal y Xcode
Con quéTu agente de código, una Mac y un Apple Watch

El Muse Charm, el llavero de Meta para hablar con Muse, sale en diciembre. Yo no me aguanté. El 2 de octubre Meta publicó en código abierto lo que usan sus gadgets para conectarse a Muse, y con eso armé el mío en el Apple Watch. Toco a Marley, hablo, y la respuesta me suena en la muñeca. No es un producto para comprar: es un proyecto para armar con un agente de código: Claude Code, Codex de ChatGPT o el que uses. Esta guía te da el mapa y los prompts, y te cuenta en qué me equivoqué para que no lo repitas.

Marley, el avatar de pixel art de mi Muse, moviendo la boca mientras habla
Marley, hablandoEl avatar lo dibujó mi propio Muse.
  • 01Le hablas al reloj y te responde en vozTocas, hablas lo que quieras (hasta dos minutos) y la respuesta empieza a sonar con la primera frase, unos 3 a 6 segundos después.
  • 02Sin el celular en la manoEl reloj llega a Muse por internet, aunque estés fuera de la casa, y la voz no se corta si bajas la muñeca.
  • 03Tu voz se queda en tu computadorLa pasa a texto un modelo que corre en tu propia Mac. A Muse solo le llega el texto.
  • 04Con tu avatar y la voz que elijasLe pides a tu Muse que se dibuje, y eliges una voz en español. La mía es colombiana.
Lo que le dije a Marley desde el reloj y su respuesta, vistos en el chat de la app de Muse
Lo que le dije desde el reloj, y lo que contestóTodo queda también en el chat de la app de Muse.
Si no tienes Apple Watch

El camino oficial es más corto. Meta publicó el firmware para placas ESP32 con pantalla: compras una (la redonda de Waveshare de 1,75 pulgadas o el M5Stack StickS3 están en su lista), le cargas el firmware y la emparejas desde la app de Muse. Trae avatar, botón para hablar e imágenes.

Y si tienes un Raspberry Pi, el SDK de Linux de Meta lo convierte en gadget con un solo instalador. Esta guía es para quien quiere Muse en el reloj, que es la ruta que nadie trae hecha.

Paso 00

Lo que necesitas

Qué y dóndePara qué
La app de Muse (iPhone, Android o web)Tu Muse. Desde la app se empareja el gadget (Settings, Devices, Developer mode).
Tu token SDK, en gadgets.muse.aiCada gadget lo necesita para emparejarse. Es gratis. Lee antes los términos del SDK.
El SDK de Meta, en GitHubEl código abierto de los gadgets: firmware para ESP32 y SDK de Linux. Tu agente lo clona y parte de ahí.
Una Mac que quede siempre prendidaHace de gadget: mantiene la conexión con Muse y le sirve al reloj. La mía es una Mac que ya tenía encendida para otras cosas.
Una placa Seeed XIAO nRF52840Solo para emparejar, una vez. Te explico por qué en el paso 4.
iPhone y Apple Watch, con Xcode en la MacPara instalar la app. Sirve la cuenta gratis de Apple, con sus límites (paso 8).
Un agente de código: Claude Code, Codex de ChatGPT, Cursor o Gemini CLIHace casi todo el trabajo en tu Mac. Tú decides, pruebas y apruebas.
Homebrew y whisper.cppHomebrew instala las herramientas; whisper.cpp pasa tu voz a texto en la Mac. Las dos gratis.
Tailscale, gratis, con FunnelPara que el reloj llegue a la Mac desde la calle.
ElevenLabs (opcional)La voz de la respuesta. Sin esto, el reloj contesta con la voz del sistema.
Con la IA que ya usas

Yo lo hice con Claude Code, pero los prompts sirven igual en Codex de ChatGPT, Cursor o Gemini CLI. Lo único que sí necesitas es un agente que trabaje dentro de tu computador: que pueda leer archivos, correr comandos y compilar. El chat normal de ChatGPT o de Claude en el navegador no alcanza, porque no puede tocar tu Mac ni tu reloj.

Paso 01

Cómo funciona

El Apple Watch no puede ser el gadget solo. Para emparejarse con Muse hay que anunciarse por Bluetooth, y una app de reloj no puede hacerlo. Para hablar con Muse hay que mantener una conexión cifrada abierta todo el tiempo, y watchOS no lo permite fuera de las apps de audio. Entonces el trabajo se reparte:

  1. El reloj graba lo que dices cuando tocas a Marley.
  2. Tu Mac lo recibe por internet y lo pasa a texto con Whisper, en local.
  3. La Mac se lo manda a Muse como si fuera un gadget oficial, porque lo es.
  4. Muse contesta, y cada frase que termina la Mac la convierte en voz.
  5. El reloj reproduce las frases a medida que llegan, sin esperar la respuesta completa.

Paso 02

Tu token de Muse

En gadgets.muse.ai, en Settings y luego SDK tokens, creas uno. Empieza por mgst_.

No lo pegues en el chat de ninguna IA. Guárdalo en un archivo con permisos solo para tu usuario y pídele a tu agente que lo lea de ahí sin mostrarlo. Yo lo copio al portapapeles y el agente lo guarda con pbpaste validando el formato, sin imprimirlo nunca. Si se te filtra, lo revocas y creas otro.

Los términos de Meta dicen que el token es para uso personal y no comercial, en hasta 50 aparatos. No se puede vender lo que armes con él.

Paso 03

El relé en la Mac

La base es el SDK de Linux de Meta, que está escrito en Python. Casi todo corre igual en Mac; lo único atado a Linux es el Bluetooth del emparejamiento. A eso hay que sumarle dos cosas que el SDK no trae: recibir las respuestas de Muse (están en el firmware ESP32, en la suscripción /chat/subscribe) y una API pequeña para el reloj.

Lo más importante de toda la guía. El SDK de Linux le da a Muse permiso para correr comandos en tu terminal y leer o escribir archivos. En la Mac donde tienes tus claves, eso no se acepta. Mi relé registra cero comandos: Muse solo conversa.
Para tu agente de código
Clona github.com/facebookincubator/muse-gadget-sdk y lee linux/README.md, linux/src/musegadget/link_client.py y esp32/components/muse/muse_chat_session.cpp.
Quiero un relé en Python para esta Mac que sea un gadget de Muse:
1. Reutiliza la sesión del SDK de Linux, pero registra CERO comandos (nada de system.run ni file.read/write). Si Muse pide algo, se rechaza.
2. Porta desde el firmware ESP32 la suscripción /chat/subscribe para recibir las respuestas por eventos.
3. Expón una API local en 127.0.0.1 con token Bearer: POST /turno (audio o texto), GET /turno/{id} con long-poll, y GET del audio.
4. El token SDK se lee de ~/.claude/muse.env y nunca se imprime.
Antes de escribir código, explícame el plan y lo que no vas a poder probar.

Paso 04

Emparejar con Muse

Aquí me trabé. El gadget oficial se anuncia por Bluetooth con un dato de fabricante que la app de Muse lee para mostrarlo en la lista. macOS no deja que una app incluya ese dato. Con la Mac sola, el teléfono nunca la encuentra.

La salida fue usar una placa XIAO nRF52840 como antena: anuncia exactamente igual que el gadget oficial y le pasa todo a la Mac por el cable USB. Se usa una sola vez. Después del emparejamiento, todo va por internet y la placa se guarda.

Vas bien si: en la app de Muse, en Settings, Devices, Developer mode y Add Device, aparece un MuseGadget…, lo eliges, y el registro del relé termina con «setup complete».
Para tu agente de código
macOS no puede anunciar manufacturer data por BLE y la app de Muse lo necesita para listar el gadget. Escribe un firmware para mi Seeed XIAO nRF52840 (Arduino, núcleo Seeeduino:nrf52) que anuncie el servicio de setup del SDK con el dato de fabricante 0xFFFF,0x00 y el nombre en la respuesta de escaneo, y que pase las escrituras y notificaciones GATT a la Mac por USB serial. Luego adapta el emparejamiento del SDK para usar la placa en vez de BlueZ.

Si vas a dejar el relé en otra Mac, empareja desde la que tiene la placa funcionando y pasa los dos archivos de estado (identidad y emparejamiento) a la otra. Son solo credenciales; no dependen de qué computador tenía la placa.

Paso 05

Tu voz a texto, en tu Mac

El gadget oficial le manda a Muse una nota de voz, y Muse deja de escuchar a los 15 segundos. Yo lo cambié: el reloj graba hasta dos minutos, la Mac lo transcribe con whisper.cpp y a Muse solo le llega el texto. Con el modelo large-v3-turbo comprimido (574 MB) y el servidor de Whisper corriendo de fondo, transcribe en menos de un segundo.

Para tu agente de código
Instala whisper-cpp con brew, baja ggml-large-v3-turbo-q5_0.bin y déjalo corriendo como servicio de launchd (whisper-server en 127.0.0.1, idioma es). En el relé, cuando llegue audio: conviértelo con ffmpeg a WAV de 16 kHz mono escribiéndolo a un archivo temporal (no por tubería, los m4a del reloj llegan vacíos así), transcríbelo y manda a Muse solo el texto. Si Whisper falla, vuelve a la nota de voz de 15 segundos. Mide el tiempo de transcripción.

Paso 06

La respuesta, en voz

Muse responde en texto: el firmware oficial lo dice tal cual, y deja el espacio para que tú pongas la voz. Yo uso ElevenLabs con una voz colombiana en español. El truco de velocidad fue no esperar la respuesta entera: cada frase que Muse termina se convierte en voz y se manda al reloj, y el reloj las va sonando en orden. Así Mateo empieza a hablar a los 3 a 6 segundos, en vez de los 7 a 11 que tardaba esperando el final.

Antes de mandar el texto a la voz, quita asteriscos, viñetas y enlaces, o la voz te los lee.

Paso 07

Que funcione en la calle

El relé escucha solo dentro de tu Mac. Para que el reloj llegue desde afuera usé Tailscale Funnel, que le da a la Mac una dirección web pública y fija, sin abrir puertos del router. Tailscale normal no sirve: funciona como VPN, y el Apple Watch no sale a internet por la VPN.

Sin token, nadie entra. La dirección es pública, así que cada petición lleva un token largo que solo conocen el reloj y la Mac. Pruébalo: abre la dirección en el navegador y debe responder «no autorizado».

Recién activado, el nombre de Funnel tardó unos 20 minutos en aparecer en internet. Si al principio el teléfono dice que no encuentra el servidor, espera.

Paso 08

La app del reloj

Una app de SwiftUI con dos partes: la del iPhone, donde pegas el token una sola vez (queda en el llavero y se pasa al reloj), y la del reloj, con el avatar. Tocas para grabar y otra vez para enviar; el doble toque con los dedos también sirve. Al abrirla empieza a escuchar de una vez.

Si el audio se corta cuando bajas la muñeca: watchOS suspende la app. Hay que pedir una sesión extendida (la de tipo «self-care») apenas tocas, y cerrarla cuando termina de hablar.

Con la cuenta gratis de Apple funciona, con tres límites que me tocaron todos:

  • Máximo tres apps de desarrollo en el iPhone. Me tocó borrar una para hacerle espacio.
  • La app caduca a los siete días y hay que reinstalarla desde Xcode.
  • Xcode tiene que ver el reloj. En Xcode 27 se empareja desde Device Hub (el botón +), con el reloj en Ajustes, Privacidad y seguridad, Modo desarrollador.

Paso 09

Tu avatar, dibujado por tu Muse

El muñeco por defecto de los gadgets es un personaje de Meta y su licencia no lo cubre. Pero el SDK trae una receta oficial: un prompt que le pide a tu Muse que se dibuje a sí mismo en pixel art de 64 por 64, con una animación para cada estado. Se la mandé por el relé y a los minutos me devolvió a Marley en versión tamagotchi, a partir del mismo avatar que tengo en la app. Ese código lo convertí en cuadros para el reloj.

El avatar de mi Muse en la app: Marley, un perro blanco con pañoleta y gafas verdes
Marley en la app de MuseMi avatar, tal como lo tengo.
Los seis estados de Marley: reposo, escuchando, pensando, hablando, feliz y error
Y así se dibujó para el relojReposo, escuchando, pensando, hablando, feliz y error.

La receta está en el repositorio, en esp32/tools/muse/avatar_prompt.md. Ojo: la respuesta puede llegar en tu chat principal de Muse y no como contestación directa; deja algo escuchando hasta que llegue el bloque de código.

Para no repetirlo

Lo que falló

Todo esto me pasó en el mismo día. Ninguno es grave si sabes que viene.

La Mac no aparecía en la app de Muse. Es el dato de fabricante que macOS no deja anunciar. Placa como antena (paso 4).
Las herramientas de la placa no corrían en una Mac con chip Apple. El compilador de Seeed solo existe para Intel: hay que instalar Rosetta. Y no lo reemplaces por otra versión de ctags o de compilador: el firmware compila, pero la placa se cuelga al arrancar y desaparece del USB.
Si la placa desaparece del USB, no está dañada. Doble toque rápido al botón de reset hasta que aparezca el disco XIAO-SENSE, y le cargas el programa otra vez.
Un firmware compilado en otra Mac dejó la placa muda. Mismo código, distinto resultado. Empareja desde la Mac donde la placa ya funcionó.
El chat aparte no sirve. Quise mandar lo del reloj a un chat lateral de Muse para que no se mezclara con el principal, y las respuestas nunca llegaron. Va en el chat principal.
Algunas preguntas tardan mucho. Hay respuestas que salen en 3 segundos y otras en 40, porque Muse se pone a investigar. Eso no lo arregla el relé.
AirDrop dejó de funcionar. Mientras Xcode y Device Hub están conectados al reloj por la red, pueden dejar a AirDrop sin su canal. Ciérralos cuando termines de instalar, y si sigue sin funcionar, reinicia la Mac.
El botón de acción del Ultra todavía no me funciona. En watchOS 26 una app puede tener un control para ese botón; el mío está instalado pero el reloj no lo muestra en la lista. Mientras tanto, abrirla ya la pone a escuchar.

Resumen

El orden, en una lista

  1. Saca el token SDK y guárdalo en un archivo, nunca en el chat.
  2. Pídele a tu agente el relé con cero comandos para Muse.
  3. Empareja con la placa como antena, una sola vez.
  4. Prueba con texto desde la terminal: si Muse te contesta ahí, lo difícil ya está.
  5. Agrega Whisper y la voz, y mide cuándo empieza a sonar la respuesta.
  6. Abre el relé a la calle con Funnel y comprueba que sin token diga «no autorizado».
  7. Instala la app del reloj desde Xcode y prueba bajando la muñeca.
  8. Pídele a tu Muse que se dibuje.

Créditos

Fuentes

El SDK y el firmware de los gadgets: gadgets.muse.ai y el repositorio de Meta en GitHub, licencia Apache 2.0. El anuncio: AI Weekly. El Muse Charm y su salida en diciembre: Tech Jack Solutions. La transcripción: whisper.cpp. Verificado el 3 de octubre de 2026.

Cuando lo tengas

Mándame por DM en Instagram un video de tu reloj, o de tu placa, contestándote. Y si te trabas en un paso, dime en cuál y te digo qué revisar.

Lo primero, hoy: saca tu token SDK en gadgets.muse.ai. Sin eso no arranca nada.

Apúntate a la próxima clase

Aprende una habilidad nueva en la próxima clase.

Te aviso cuando publiquemos la fecha.

Avísame de la próxima clase