Control Remoto
Flujo de la app macOS para controlar un gateway OpenClaw remoto sobre SSH
Este flujo permite que la app macOS actúe como control remoto completo para un gateway OpenClaw ejecutándose en otro host (desktop/servidor). Es la función Remoto sobre SSH (ejecución remota) de la app. Todas las funciones—verificaciones de salud, reenvío de Voice Wake, y Web Chat—reusan la misma configuración SSH remota desde Configuración → General.
Modos
- Local (este Mac): Todo se ejecuta en el laptop. Sin SSH involucrado.
- ''Remoto sobre SSH (por defecto)'': Los comandos OpenClaw se ejecutan en el host remoto. La app mac abre una conexión SSH con ''-o BatchMode'' más tu identidad/clave elegida y un reenvío de puerto local.
- Remoto directo (ws/wss): Sin túnel SSH. La app mac se conecta a la URL del gateway directamente (por ejemplo, vía Tailscale Serve o un proxy HTTPS público reverso).
Transportes remotos
El modo remoto soporta dos transportes:
- ''Túnel SSH'' (por defecto): Usa ''ssh -N -L ...'' para reenviar el puerto del gateway a localhost. El gateway verá la IP del nodo como ''127.0.0.1'' porque el túnel es loopback.
- Directo (ws/wss): Se conecta directamente a la URL del gateway. El gateway ve la IP real del cliente.
Requisitos en host remoto
1. Instalar Node + pnpm y construir/instalar CLI OpenClaw (''pnpm install && pnpm build && pnpm link --global'').
2. Asegurar que ''openclaw'' esté en PATH para shells no interactivos (symlink en ''/usr/local/bin'' o ''/opt/homebrew/bin'' si es necesario).
3. Abrir SSH con autenticación de clave. Recomendamos IPs de Tailscale para alcance estable fuera de LAN.
Configuración de app macOS
1. Abrir Configuración → General.
2. Bajo OpenClaw se ejecuta, elegir Remoto sobre SSH y establecer:
- Transporte: Túnel SSH o Directo (ws/wss).
- ''Objetivo SSH'': ''usuario@host'' (opcional '':puerto'').
- Si el gateway está en la misma LAN y anuncia Bonjour, seleccionarlo de la lista descubierta para autocompletar este campo.
- ''URL del Gateway'' (solo Directo): ''wss://gateway.ejemplo.ts.net'' (o ''ws://...'' para local/LAN).
- Archivo de identidad (avanzado): ruta a tu clave.
- Raíz del proyecto (avanzado): ruta de checkout remoto usada para comandos.
- ''Ruta CLI'' (avanzado): ruta opcional a un entrypoint/binario ''openclaw'' ejecutable (autocompletado cuando se anuncia).
3. Presionar ''Probar remoto''. Éxito indica que ''openclaw status --json'' remoto se ejecuta correctamente. Fallos usualmente significan problemas de PATH/CLI; exit 127 significa que CLI no se encuentra remotamente.
4. Las verificaciones de salud y Web Chat ahora se ejecutarán a través de este túnel SSH automáticamente.
Web Chat
- Túnel SSH: Web Chat se conecta al gateway sobre el puerto de control WebSocket reenviado (por defecto 18789).
- Directo (ws/wss): Web Chat se conecta directamente a la URL del gateway configurada.
- Ya no hay un servidor HTTP WebChat separado.
Permisos
- El host remoto necesita las mismas aprobaciones TCC que local (Automatización, Accesibilidad, Grabación de Pantalla, Micrófono, Reconocimiento de Voz, Notificaciones). Ejecutar onboarding en esa máquina para otorgarlas una vez.
- Los nodos anuncian su estado de permisos vía ''node.list'' / ''node.describe'' para que los agentes sepan qué está disponible.
Notas de seguridad
- Preferir binds de loopback en el host remoto y conectar vía SSH o Tailscale.
- Si vinculas el Gateway a una interfaz no loopback, requerir autenticación token/contraseña.
- Ver ''Seguridad'' y ''Tailscale''.
Flujo de login WhatsApp (remoto)
- Ejecutar ''openclaw channels login --verbose'' ''en el host remoto''. Escanear QR con WhatsApp en tu teléfono.
- Re-ejecutar login en ese host si la auth expira. La verificación de salud mostrará problemas de enlace.
Solución de problemas
- ''exit 127 / no encontrado'': ''openclaw'' no está en PATH para shells no login. Agregarlo a ''/etc/paths'', tu shell rc, o symlink en ''/usr/local/bin''/''/opt/homebrew/bin''.
- ''Sondeo de salud fallido'': verificar alcance SSH, PATH, y que Baileys esté logueado (''openclaw status --json'').
- Web Chat atascado: confirmar que el gateway se está ejecutando en el host remoto y que el puerto reenviado coincide con el puerto WS del gateway; la UI requiere una conexión WS saludable.
- IP del nodo muestra 127.0.0.1: esperado con túnel SSH. Cambiar Transporte a Directo (ws/wss) si quieres que el gateway vea la IP real del cliente.
- Voice Wake: las frases de activación se reenvían automáticamente en modo remoto; no se necesita un reenviador separado.
Sonidos de notificación
Elegir sonidos por notificación desde scripts con ''openclaw'' y ''node.invoke'', por ejemplo:
openclaw nodes notify --node '<id>' --title "Ping" --body "Gateway remoto listo" --sound Glass
Ya no hay un toggle global de "sonido por defecto" en la app; los llamadores eligen un sonido (o ninguno) por solicitud.