iMessage es único entre los canales de Sentō. No hay bot, no hay token, no hay API. La integración lee y escribe a través de la base de datos SQLite local de la app Messages de macOS, lo que significa que el agente tiene que correr en una Mac.
Requisitos previos
- Estás en la ruta de instalación en macOS
- Tenés sesión iniciada en iMessage en la app Messages
- Te sentís cómodo con que el agente lea tu base de datos de Mensajes — tiene que hacerlo para recibir mensajes
Dar Acceso Total al Disco
macOS bloquea el acceso a la base de datos de Messages por defecto. Tenés que darlo manualmente.
- Configuración del Sistema → Privacidad y Seguridad → Acceso Total al Disco
- Click
+, navegá a Aplicaciones → Utilidades → Terminal (o iTerm, Warp, Ghostty, la terminal que uses) - Activalo ON
- Reiniciá tu terminal para que el permiso tome efecto
Sin esto, el plugin de iMessage va a tirar SQLITE_CANTOPEN en el primer mensaje.
Correr sento init
npx sentoagent init
Elegí iMessage. Sin token para pegar. El instalador te pide el número de teléfono o email asociado a la cuenta de iMessage desde la que querés que el agente responda y con la que hable.
Cómo funciona
- Entrada: un proceso en background revisa
~/Library/Messages/chat.dbcada pocos segundos buscando mensajes nuevos que coincidan con la identidad configurada. - Salida: AppleScript le dice a la app Messages que envíe. Los mensajes pasan por tu cuenta real de iMessage, así que los destinatarios los ven desde tu número/email.
Limitaciones
- Sólo Mac. Apple no ofrece una API pública de iMessage. La base de datos de Messages es la única forma de entrar.
- Compatibilidad best-effort. Apple puede cambiar el esquema de la base de datos en cualquier actualización de macOS. Cuando pasa, Sentō puede necesitar un version bump.
- Los group chats tienen soporte parcial dependiendo de la versión de macOS.
- Sin read receipts / indicadores de "escribiendo" — la API de send de AppleScript no los expone.
Si algo se rompe
- Primer chequeo: ¿Messages.app está corriendo y con sesión iniciada?
- Segundo: ¿le diste Acceso Total al Disco a la terminal desde la que lanzaste Sentō (no otra)?
- Tercero:
sento logs -n 50y buscá erroresSQLITE_*.
Si Apple sube la versión de macOS y el esquema cambia, abrí un issue en GitHub con tu versión de macOS y los logs recientes.