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.

  1. Configuración del Sistema → Privacidad y Seguridad → Acceso Total al Disco
  2. Click +, navegá a Aplicaciones → Utilidades → Terminal (o iTerm, Warp, Ghostty, la terminal que uses)
  3. Activalo ON
  4. 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.db cada 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 50 y buscá errores SQLITE_*.

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.