Aplicación Clawdbot para macOS

La aplicación complementaria de Clawdbot para macOS proporciona integración con la barra de menú, gestión de permisos y capacidades nativas de macOS para tu asistente de IA.

Descripción General del Complemento Clawdbot para macOS

La aplicación Clawdbot para macOS es el complemento de la barra de menú para Clawdbot. Gestiona los permisos, administra/conecta al Gateway localmente (launchd o manual) y expone las capacidades de macOS al agente como un nodo.

Qué Hace

  • Muestra notificaciones nativas y estado en la barra de menú
  • Gestiona las solicitudes TCC (Notificaciones, Accesibilidad, Grabación de Pantalla, Micrófono, Reconocimiento de Voz, Automatización/AppleScript)
  • Ejecuta o conecta al Gateway (local o remoto)
  • Expone herramientas exclusivas de macOS (Canvas, Cámara, Grabación de Pantalla, system.run)
  • Administra el servicio de host de nodo local
  • Instala el CLI global (clawdbot) vía npm/pnpm cuando se solicita

Modo Local vs Remoto

ModoDescripción
Local (predeterminado)La app conecta al Gateway local en ejecución; habilita el servicio launchd si es necesario
RemotoLa app conecta al Gateway vía SSH/Tailscale; inicia el servicio de host de nodo local

La aplicación no genera el Gateway como proceso hijo.

Control de Launchd

La aplicación gestiona un LaunchAgent por usuario etiquetado como bot.molt.gateway (o bot.molt.<profile> cuando se usa --profile).

# Reiniciar el gateway
launchctl kickstart -k gui/$UID/bot.molt.gateway

# Detener el gateway
launchctl bootout gui/$UID/bot.molt.gateway

Si el LaunchAgent no está instalado, habilítalo desde la aplicación o ejecuta:

clawdbot gateway install

Capacidades del Nodo (macOS)

La aplicación macOS se presenta como un nodo con estas capacidades:

CategoríaComandos
Canvascanvas.present, canvas.navigate, canvas.eval, canvas.snapshot
Cámaracamera.snap, camera.clip
Pantallascreen.record
Sistemasystem.run, system.notify

El nodo reporta un mapa de permisos para que los agentes puedan decidir qué está permitido.

Aprobaciones de Ejecución (system.run)

system.run está controlado por las aprobaciones de ejecución en la aplicación macOS (Ajustes → Aprobaciones de ejecución).

Configuración almacenada en:

~/.clawdbot/exec-approvals.json

Ejemplo de configuración:

{
  "version": 1,
  "defaults": {
    "security": "deny",
    "ask": "on-miss"
  },
  "agents": {
    "main": {
      "security": "allowlist",
      "ask": "on-miss",
      "allowlist": [{"pattern": "/opt/homebrew/bin/rg"}]
    }
  }
}

Notas:

  • Las entradas de la lista de permitidos son patrones glob para rutas de binarios resueltas
  • Elegir "Permitir siempre" en el aviso añade ese comando a la lista de permitidos

Enlaces Profundos

La aplicación registra el esquema de URL clawdbot:// para acciones locales.

clawdbot://agent

Activa una solicitud al agente del Gateway:

open 'clawdbot://agent?message=Hello%20from%20deep%20link'

Parámetros de consulta:

ParámetroDescripción
messageRequerido - el mensaje a enviar
sessionKeyOpcional - identificador de sesión
thinkingOpcional - habilitar modo de pensamiento
deliver / to / channelOpcional - destino de entrega
timeoutSecondsOpcional - tiempo de espera de la solicitud
keyOpcional - clave de modo desatendido

Seguridad: Sin key, la aplicación solicita confirmación.

Flujo de Incorporación

  1. Instala e inicia Clawdbot.app
  2. Completa la lista de verificación de permisos (avisos TCC)
  3. Asegúrate de que el modo Local esté activo y el Gateway esté ejecutándose
  4. Instala el CLI si deseas acceso por terminal

Flujo de Desarrollo y Compilación

cd apps/macos && swift build
swift run Clawdbot  # o usa Xcode

# Empaquetar la aplicación
scripts/package-mac-app.sh

Depurar Conectividad del Gateway

Usa el CLI de depuración para probar el handshake WebSocket del Gateway:

cd apps/macos
swift run clawdbot-mac connect --json
swift run clawdbot-mac discover --timeout 3000 --json

Opciones de conexión:

OpciónDescripción
--url <ws://host:port>Sobrescribir configuración
--mode <local|remote>Resolver desde configuración
--probeForzar nueva sonda de salud
--timeout <ms>Tiempo de espera de solicitud (predeterminado: 15000)
--jsonSalida estructurada

Conexión Remota (Túneles SSH)

Para acceso remoto al Gateway:

# Túnel de control (puerto WebSocket del Gateway)
ssh -N -L 18789:127.0.0.1:18789 user@host

Próximos Pasos