# Aplicaciones Companion ## Que Son las Aplicaciones Companion? Las aplicaciones companion son aplicaciones nativas para iOS, Android y macOS que se conectan a su Gateway como **nodos**. Los nodos exponen capacidades del dispositivo -- camara, canvas, grabacion de pantalla, ubicacion, voz y ejecucion de sistema -- a sus agentes. Pienselo de esta manera: el Gateway es el cerebro, y las aplicaciones companion son las manos y los ojos en sus dispositivos. ## Como Funcionan los Nodos 1. **Conectar** -- La aplicacion companion se conecta a su Gateway por WebSocket 2. **Emparejar** -- Los dispositivos nuevos pasan por un proceso de aprobacion de emparejamiento 3. **Registrar capacidades** -- La app le dice al Gateway lo que puede hacer (camara, canvas, ubicacion, etc.) 4. **Los agentes invocan** -- Durante las conversaciones, los agentes pueden solicitar al nodo tomar una foto, grabar pantalla, renderizar un canvas y mas Los nodos **no son gateways** -- no ejecutan su propia IA. Son dispositivos perifericos que extienden lo que sus agentes pueden hacer. ## Aplicacion Companion de macOS La aplicacion de macOS vive en su barra de menu y sirve como nodo companion y gestor de gateway. ### Capacidades - **Canvas** -- Renderizar contenido web interactivo en una ventana nativa - **Camara** -- Tomar fotos y clips de video (frontal/trasera) - **Grabacion de pantalla** -- Grabacion de pantalla completa o por aplicacion - **Ejecucion de sistema** -- Ejecutar comandos shell en el Mac (controlado por aprobaciones de ejecucion) - **Notificaciones** -- Enviar notificaciones nativas de macOS con opciones de prioridad - **Ubicacion** -- GPS cuando esta disponible ### Caracteristicas Adicionales - **Gestion de Gateway** -- Iniciar, detener y monitorear el Gateway - **Propiedad de permisos** -- Gestiona permisos TCC de macOS (Notificaciones, Accesibilidad, Grabacion de Pantalla, Microfono, Reconocimiento de Voz, AppleScript) - **Deep Links** -- Esquema de URL `neotask://` para lanzar agentes con parametros - **Instalacion de CLI** -- Instala la herramienta de linea de comandos `neotask` ## Aplicacion iOS La aplicacion iOS se conecta como un nodo a su Gateway, trayendo capacidades moviles a sus agentes. ### Capacidades - **Canvas** -- Renderizado de contenido interactivo basado en SwiftUI - **Camara** -- Fotos y clips de video (camaras frontal/trasera) - **Grabacion de audio** -- Captura de microfono - **Ubicacion** -- GPS con seleccion de precision - **Notificaciones** -- Notificaciones push nativas de iOS ### Caracteristicas - **Descubrimiento** -- Encuentra su Gateway via Bonjour (LAN), Tailscale (VPN) o entrada manual - **Emparejamiento** -- Emparejamiento seguro de dispositivos con aprobacion del Gateway - **Activacion por voz** -- Activacion por palabra de activacion para interaccion manos libres - **Modo de conversacion** -- Conversacion de voz continua - **Extension de compartir** -- Compartir contenido de otras apps directamente a su agente - **A2UI** -- Renderizado de UI impulsado por agente en el canvas del dispositivo ### Limitaciones - Diseno de primer plano (iOS suspende conexiones WebSocket en segundo plano) - Restricciones estrictas de comandos en segundo plano - Actualmente en preview interno ## Aplicacion Android La aplicacion Android se conecta como un nodo con capacidades similares a iOS. ### Capacidades - **Canvas** -- Renderizado de UI basado en Jetpack Compose - **Camara** -- Fotos y video (frontal/trasera, controlado por permisos) - **Grabacion de pantalla** -- Captura de pantalla del sistema (Android 10+) - **Ubicacion** -- GPS con modos de precision - **Envio de SMS** -- En dispositivos con soporte de telefonia - **Chat e historial** -- Ver historial de conversaciones en el dispositivo ### Caracteristicas - **Servicio en primer plano** -- Notificacion persistente mantiene la conexion activa - **Sesiones compartidas** -- Misma sesion en todos los nodos conectados - **Android moderno** -- Requiere Android 12+ (API 31) ## Host de Nodo Headless Ejecute un nodo sin ninguna interfaz -- ideal para servidores de compilacion, maquinas remotas o cajas Linux headless. ### Capacidades - **Ejecucion de sistema** -- Ejecutar comandos en el host del nodo - **Lista de permitidos de comandos** -- Configurar que comandos puede ejecutar el nodo - **Servicio persistente** -- Instalar como servicio launchd/systemd ### Casos de Uso - Agentes de compilacion CI/CD -- Dejar que su agente de IA active compilaciones en un servidor remoto - Automatizacion de laboratorio domestico -- Ejecutar comandos en un Raspberry Pi o servidor domestico - Orquestacion multi-maquina -- Coordinar tareas entre multiples maquinas ## Emparejamiento de Dispositivos ### Flujo de Emparejamiento 1. La aplicacion companion presenta su identidad de dispositivo (huella digital + clave publica) 2. El Gateway emite una solicitud de aprobacion de emparejamiento 3. Usted aprueba el dispositivo a traves de la aplicacion de escritorio o el panel 4. El Gateway emite un token de dispositivo para futuras conexiones ### Modelo de Confianza - **Dispositivos locales** (loopback) se aprueban automaticamente por conveniencia - **Dispositivos no locales** requieren aprobacion explicita - Los tokens de dispositivo se almacenan localmente y se reutilizan al reconectar ## Aprobaciones de Ejecucion Para nodos que pueden ejecutar comandos del sistema (macOS, hosts headless), las aprobaciones de ejecucion controlan lo que esta permitido: - **Modo lista de permitidos** -- Solo los comandos pre-aprobados se ejecutan - **Modo preguntar** -- Los comandos desconocidos le solicitan aprobacion - **Modo completo** -- Sin restricciones (usar con precaucion) Configure listas de permitidos por nodo para controlar precisamente lo que cada dispositivo puede hacer.