OpenClaw

Canal iMessage (Legacy) de OpenClaw

Mensajería
Avanzado

Conecta OpenClaw a Apple iMessage usando la herramienta CLI imsg en macOS. Esta integración heredada utiliza una interfaz JSON-RPC over stdio para leer y enviar iMessages a través de la base de datos nativa de Mensajes de macOS. Nota: Este canal está obsoleto — para nuevas instalaciones, recomendamos encarecidamente usar BlueBubbles, que ofrece una integración basada en REST API más robusta con un soporte de funciones más amplio.

Info rápida
DificultadAvanzado
CategoríaMensajería
Funciones compatibles2 / 6

iMessage (Legacy) Funciones compatibles

Mensajes de texto

Compatible

Medios y archivos

Compatible

Reacciones

No compatible

Hilos

No compatible

Mensajes de voz

No compatible

Chat grupal

No compatible

iMessage (Legacy) Requisitos previos

  • Un Mac con macOS con Mensajes conectado a un Apple ID
  • Permiso de acceso completo al disco otorgado a OpenClaw y al binario imsg
  • Permiso de automatización para enviar mensajes (otorgado mediante avisos TCC de macOS)
  • El CLI imsg instalado mediante Homebrew: brew install steipete/tap/imsg
  • OpenClaw Gateway instalado y en ejecución

iMessage (Legacy) Configuración rápida

1

Instalar el CLI imsg

Ejecuta 'brew install steipete/tap/imsg' para instalar la herramienta CLI de iMessage. Después de la instalación, ejecuta 'imsg' una vez en una terminal GUI para activar los avisos de permisos de macOS (acceso completo al disco y automatización).

2

Otorgar permisos de macOS

Abre Ajustes del Sistema > Privacidad y seguridad. Otorga acceso completo al disco tanto al binario imsg como al proceso OpenClaw. El permiso de automatización para Mensajes se solicitará automáticamente cuando imsg intente enviar un mensaje por primera vez.

3

Configurar e iniciar

Agrega la configuración del canal iMessage en ~/.openclaw/openclaw.json con los ajustes cliPath y dbPath. Inicia el Gateway con 'openclaw start' y envía un iMessage de prueba para verificar la conexión.

iMessage (Legacy) Ejemplo de configuración

config.json
{
  "channels": {
    "imessage": {
      "enabled": true,
      "cliPath": "/opt/homebrew/bin/imsg",
      "dbPath": "/Users/<username>/Library/Messages/chat.db"
    }
  }
}

iMessage (Legacy) Documentación Detallada

Aviso de obsolescencia

El canal iMessage es una integración heredada que podría ser eliminada en futuras versiones de OpenClaw. Depende del CLI de terceros imsg y de los permisos TCC específicos de macOS, que pueden volverse inestables después de actualizaciones del sistema. Para nuevas implementaciones, recomendamos encarecidamente migrar al canal BlueBubbles, que ofrece: • Arquitectura basada en REST API (sin dependencia de CLI) • Soporte de reacciones con emoji • Soporte de chat grupal • Gestión de servidor multiplataforma mediante interfaz web • Entrega de mensajes más confiable basada en webhooks Las configuraciones de iMessage existentes seguirán funcionando, pero no se agregarán nuevas funciones a esta integración.
Este canal está obsoleto. Por favor usa BlueBubbles para nuevas integraciones de iMessage.

Descripción de la arquitectura

La integración de iMessage funciona lanzando el CLI imsg como proceso hijo mediante JSON-RPC over stdio: 1. El Gateway inicia 'imsg rpc' como subproceso, comunicándose via stdin/stdout. 2. El CLI imsg lee mensajes nuevos de la base de datos de Mensajes de macOS (chat.db) usando SQLite. 3. Cuando llega un nuevo mensaje, imsg notifica al Gateway via JSON-RPC. 4. El Gateway procesa el mensaje con tu agente de IA y envía la respuesta a través de imsg, que usa la automatización de macOS para enviar el iMessage. Esta arquitectura requiere que el Gateway se ejecute en el mismo Mac donde Mensajes está conectado. Las respuestas se enrutan de forma determinista a iMessage, y cada conversación (DM o grupo) mantiene un aislamiento de sesión independiente.

Políticas de mensajes directos

Las políticas de DM controlan cómo el bot maneja las conversaciones individuales de iMessage. **pairing (predeterminado)** — Los remitentes desconocidos reciben un código de emparejamiento que debe confirmarse antes de que el bot responda. Esto previene el acceso no autorizado. **allowlist** — Solo los números de teléfono o Apple IDs listados en allowFrom pueden interactuar con el bot. **open** — Cualquier remitente de iMessage recibe una respuesta. Requiere allowFrom: ["*"]. **disabled** — El bot ignora todos los mensajes directos.
openclaw.json
{
  "channels": {
    "imessage": {
      "dmPolicy": "pairing",
      "allowFrom": ["+1234567890", "user@icloud.com"]
    }
  }
}

Configuración de chat grupal

Las políticas de chat grupal controlan el comportamiento del bot en las conversaciones grupales de iMessage. **open** — El bot responde a todos los mensajes en cualquier grupo al que sea agregado. **allowlist** — El bot solo responde en grupos explícitamente listados en la configuración. **disabled (predeterminado)** — El bot no responde en chats grupales. Cuando el chat grupal está habilitado, se puede configurar la activación por mención para que el bot solo responda cuando se mencione su nombre, reduciendo el ruido en grupos activos.
openclaw.json
{
  "channels": {
    "imessage": {
      "groupPolicy": "allowlist",
      "mentionPattern": "@bot"
    }
  }
}

Configuración de Mac remoto vía SSH

Para implementaciones headless o remotas, el CLI imsg puede ejecutarse en otro Mac vía SSH. El Gateway inicia el proceso imsg a través de una conexión SSH, y los archivos adjuntos se transfieren mediante SCP. Esto es útil cuando el Mac que ejecuta Mensajes está en una ubicación diferente (por ejemplo, un servidor Mac Mini), mientras el Gateway se ejecuta en otro lugar. Requisitos: • Autenticación SSH basada en claves (sin avisos interactivos) • El Mac remoto debe tener imsg instalado y los permisos otorgados • SCP debe estar disponible para la transferencia de archivos adjuntos
openclaw.json
{
  "channels": {
    "imessage": {
      "remoteHost": "mac-server.local",
      "cliPath": "/usr/local/bin/imsg"
    }
  }
}
Usa autenticación por clave SSH para evitar avisos interactivos de contraseña.
Herramientas como Tailscale pueden simplificar el acceso remoto al servidor Mac.

Permisos de macOS (TCC)

La integración de iMessage requiere permisos de privacidad específicos de macOS (gestionados por el framework TCC): **Acceso completo al disco** — Necesario para leer la base de datos de Mensajes (chat.db). Tanto el binario imsg como el proceso OpenClaw necesitan este permiso. **Automatización** — Necesaria para enviar mensajes a través de la app Mensajes. Este permiso generalmente se otorga mediante un aviso del sistema cuando imsg intenta enviar por primera vez. Si se ejecuta en modo headless (por ejemplo, vía SSH o launchd), los avisos de permisos pueden no aparecer. En ese caso, ejecuta 'imsg' una vez en una sesión de terminal GUI interactiva para activar los avisos, y luego regresa a la operación headless.
Los avisos de permisos de macOS solo aparecen en sesiones GUI. Ejecuta imsg de forma interactiva al menos una vez antes del despliegue headless.

iMessage (Legacy) Referencia de Configuración

enabled
Type: booleanDefault: true

Activar o desactivar el canal iMessage

cliPath
Type: stringDefault: "/usr/local/bin/imsg"

Ruta al binario CLI imsg. Homebrew instala en /opt/homebrew/bin/imsg en Mac con Apple Silicon o /usr/local/bin/imsg en Mac con Intel

dbPath
Type: stringDefault: "~/Library/Messages/chat.db"

Ruta a la base de datos SQLite de Mensajes de macOS

dmPolicy
Type: stringDefault: "pairing"

Política de acceso DM: 'pairing', 'allowlist', 'open' o 'disabled'

groupPolicy
Type: stringDefault: "disabled"

Política de chat grupal: 'open', 'allowlist' o 'disabled'

allowFrom
Type: string[]Default: []

Números de teléfono o Apple IDs autorizados para contactar al bot

includeAttachments
Type: booleanDefault: false

Si procesar archivos adjuntos multimedia de mensajes entrantes

mediaMaxMb
Type: numberDefault: 10

Tamaño máximo de archivo multimedia en MB

textChunkLimit
Type: numberDefault: 4000

Máximo de caracteres por mensaje saliente

chunkMode
Type: stringDefault: "length"

Modo de división de texto: 'length' (límite de caracteres) o 'newline' (límites de párrafo)

historyLimit
Type: numberDefault: 20

Máximo de mensajes anteriores incluidos como contexto de conversación

configWrites
Type: booleanDefault: true

Permitir comandos /config set|unset vía iMessage

remoteHost
Type: stringDefault: ""

Nombre de host SSH para ejecutar imsg en un Mac remoto

iMessage (Legacy) Preguntas Frecuentes

iMessage (Legacy) Solución de Problemas

El bot no recibe ni envía mensajes

Faltan permisos de macOS (acceso completo al disco o automatización) para el binario imsg o el proceso OpenClaw.

Abre Ajustes del Sistema > Privacidad y seguridad. Verifica que tanto imsg como OpenClaw tengan acceso completo al disco. Ejecuta 'imsg' en una terminal GUI para activar los avisos de permisos faltantes. Reinicia el Gateway después de otorgar los permisos.
Los avisos de permisos no aparecen

El proceso se ejecuta en un entorno headless (SSH, launchd) donde macOS no puede mostrar avisos TCC.

Inicia sesión en el Mac mediante una sesión GUI (pantalla compartida o acceso físico). Ejecuta 'imsg' en Terminal.app para activar los avisos. Una vez otorgados los permisos, puedes volver a la operación headless.
Error: chat.db no encontrado o acceso denegado

La configuración de dbPath es incorrecta o no se ha otorgado el acceso completo al disco.

Verifica que dbPath apunte a la base de datos de Mensajes correcta (generalmente ~/Library/Messages/chat.db). Asegúrate de que el acceso completo al disco esté habilitado para el proceso OpenClaw en Ajustes del Sistema.
La conexión SSH remota falla

La autenticación por clave SSH no está configurada o el host remoto no es accesible.

Asegúrate de que la autenticación por clave SSH esté configurada entre el host Gateway y el Mac remoto. Prueba la conexión manualmente con 'ssh <remoteHost> imsg --version'. Verifica el firewall y la conectividad de red.