Blog
Arquitectura Zero-Cloud: cómo Tactic Remote mantiene tu código en tu máquina
Tactic Remote opera con una arquitectura zero-cloud donde toda la ejecución de código, datos de sesión y acceso a archivos permanecen en el Mac del desarrollador, con conexiones cifradas directas entre iPhone y Mac que omiten completamente nuestra infraestructura.
Sigue las novedades de producto e ingeniería de esta categoría.
Ver categoríaCada semana surge una nueva historia sobre una herramienta de IA que subió código fuente a un servicio en la nube, entrenó con datos propietarios sin consentimiento o expuso credenciales del entorno de desarrollo a través de una API mal configurada. Los desarrolladores tienen razón al desconfiar de las herramientas que acceden a su código.
Tactic Remote fue diseñado desde el principio en torno a un principio simple: tu código nunca sale de tu máquina. Este artículo explica exactamente cómo funciona, dónde están los límites de confianza y qué podemos y no podemos ver.
Qué significa "Zero-Cloud"
Tactic Remote no tiene backend en la nube. No operamos servidores que retransmitan, almacenen o procesen tus datos de desarrollo. La conexión entre tu iPhone y tu Mac es directa.
En modo de red local, "directa" significa literalmente directa: tu iPhone se comunica con tu Mac a través de tu red Wi-Fi local. Ningún tráfico sale de tu red. Ninguna resolución DNS accede a servidores externos. La conexión se establece entre dos dispositivos en la misma subred.
En modo Cloudflare Tunnel, el tráfico se enruta a través de la red de borde de Cloudflare para llegar a tu Mac cuando estás fuera de tu red local. Cloudflare proporciona la capa de transporte, pero la carga útil de la capa de aplicación está cifrada de extremo a extremo entre tu iPhone y tu aplicación Mac companion. Cloudflare ve bytes cifrados. Nosotros no vemos nada.
Para ser precisos sobre lo que cubre "zero-cloud":
- Código fuente — nunca se nos transmite. El contenido de los archivos leídos por Claude Code permanece en tu Mac. Cuando se muestran diferencias de archivos en la vista de aprobación de la app para iPhone, viajan directamente de tu Mac a tu iPhone.
- Transcripciones de sesión — la conversación entre tú y Claude Code permanece en tu Mac. El iPhone recibe un flujo de salida del terminal para su visualización, pero este flujo va de Mac a iPhone sin intermediarios que controlemos.
- Salida de comandos shell — permanece en tu Mac. Se transmite por streaming a tu iPhone para visualización, no se almacena en otro lugar.
- Decisiones de aprobación — viajan de iPhone a Mac. No tenemos registro de lo que aprobaste o rechazaste.
- Cargas útiles de notificaciones push — esta es la única área donde interactuamos con la infraestructura de Apple. Consulta la discusión detallada más abajo.
Autenticación entre iPhone y Mac
Cuando emparejas tu iPhone con tu Mac companion, los dispositivos establecen un secreto compartido mediante uno de dos métodos:
Emparejamiento por código QR. El Mac companion genera un código QR que contiene un token de emparejamiento de un solo uso y la dirección de red local del Mac. Lo escaneas con la app del iPhone. Los dispositivos intercambian claves criptográficas durante la conexión inicial, y las conexiones posteriores se autentican usando estas claves. El token de emparejamiento es de un solo uso y expira después de 60 segundos.
Ingreso manual de código. Para situaciones donde escanear el QR no es práctico, el Mac companion muestra un código de 6 dígitos. Lo ingresas en el iPhone. El código cumple la misma función que el token QR: inicia el intercambio de claves.
Después del emparejamiento, la autenticación es automática. El iPhone presenta su clave almacenada en cada conexión, y el Mac companion la valida contra la lista de dispositivos autorizados. Sin contraseñas, sin tokens que rotar, sin flujos OAuth.
Los datos de emparejamiento se almacenan en el macOS Keychain en el Mac y en el iOS Keychain en el iPhone. Ambos son almacenamientos cifrados por hardware proporcionados por el Secure Enclave de Apple.
Límites de confianza
Todo modelo de seguridad tiene límites de confianza: las líneas donde debes confiar en algo externo. Queremos ser explícitos sobre los nuestros:
Confías en Claude Code de Anthropic
Tactic Remote es una capa de control sobre Claude Code. Claude Code se comunica con la API de Anthropic para generar respuestas. Tus prompts y las respuestas de Claude transitan por los servidores de Anthropic. Esto es inherente al uso de Claude Code y no es algo que Tactic Remote agregue o pueda eliminar. Las políticas de manejo de datos de Anthropic se aplican a este tráfico.
Confías en Apple para las notificaciones push
Cuando el Mac companion necesita despertar tu iPhone para entregar una solicitud de aprobación, envía una notificación push a través del servicio de notificaciones push de Apple (APNs). La carga útil de la notificación contiene una alerta mínima: el nombre de la sesión y el tipo de acción (por ejemplo, "Claude quiere ejecutar un comando shell"). No contiene el comando real, contenido de archivos ni código fuente.
Diseñamos la carga útil de la notificación para que sea lo más mínima posible. La información detallada de aprobación es obtenida por la app del iPhone directamente desde tu Mac cuando abres la notificación. Apple ve que recibiste una notificación de Tactic Remote. Apple no ve qué está haciendo Claude Code.
Confías en Cloudflare (solo modo tunnel)
Si usas Cloudflare Tunnel para acceso remoto, el tráfico transita por la red de Cloudflare. Como se discute en nuestro artículo sobre la integración con Cloudflare, la capa de transporte es de Cloudflare, pero la carga útil de la aplicación está cifrada con claves que Cloudflare no posee.
Confías en tu red local (solo modo local)
En modo de red local, la conexión es tan segura como tu red Wi-Fi. En una red doméstica u oficina de confianza, esto está bien. En una red Wi-Fi pública, el tráfico en modo local podría teóricamente ser interceptado. Usamos TLS para la conexión WebSocket independientemente del tipo de red, pero recomendamos el modo Cloudflare Tunnel cuando te conectes a través de redes no confiables.
Lo que podemos y no podemos ver
Creemos que la transparencia sobre el acceso a datos no es negociable. Aquí hay un recuento preciso:
| Datos | ¿Podemos verlo? | Explicación |
|---|---|---|
| Código fuente | No | Nunca sale de tu Mac |
| Transcripciones de sesión | No | Solo de Mac a iPhone |
| Comandos ejecutados | No | Solo de Mac a iPhone |
| Decisiones de aprobación | No | Solo de iPhone a Mac |
| Archivos leídos o escritos | No | Local en tu Mac |
| Estado de entrega de notificaciones | Sí | Apple reporta el estado de entrega |
| Informes de fallos de la app | Sí (opt-in) | Informes de fallos estándar de iOS |
| Analíticas de uso | Sí (opt-in) | Conteo de sesiones, duración — sin contenido |
Las analíticas opcionales, si se habilitan, contienen solo métricas de uso agregadas: cuántas sesiones se iniciaron, duración promedio de sesión, distribución de modos de conexión. Sin contenido, sin rutas de archivos, sin texto de comandos. Las analíticas pueden deshabilitarse completamente en la configuración de la app del iPhone.
Arquitectura de red
A continuación se describe lo que sucede a nivel de red durante una sesión típica de Tactic Remote:
Modo de red local
Tu router ve tráfico local entre dos dispositivos. Tu ISP no ve nada relacionado con Tactic Remote. El único tráfico externo es la comunicación de Claude Code con la API de Anthropic, que ocurre independientemente de si Tactic Remote está involucrado.
Modo Cloudflare Tunnel
Cloudflare ve tráfico de aplicación cifrado. El demonio cloudflared en tu Mac termina el túnel de Cloudflare y reenvía el tráfico al Mac companion en localhost. Ninguna parte externa aparte de la red de borde de Cloudflare maneja el tráfico, y Cloudflare no puede descifrar el cifrado de la capa de aplicación.
Modelo de amenazas
Hemos considerado los siguientes escenarios de ataque y cómo la arquitectura los aborda:
Red Wi-Fi comprometida. TLS en la conexión WebSocket previene la interceptación pasiva. Un atacante activo que realice un ataque de interceptación TLS (MITM) necesitaría comprometer el certificate pinning en la app del iPhone, lo cual es un ataque de alta complejidad.
iPhone robado. La app Tactic Remote requiere autenticación biométrica (Face ID o Touch ID) para abrirse. Las claves de emparejamiento se almacenan en el Secure Enclave y no son extraíbles incluso de un dispositivo con jailbreak. Un iPhone robado no puede aprobar acciones ni ver datos de sesión sin la biometría del propietario.
Mac comprometido. Si un atacante tiene acceso a tu Mac, tiene acceso a todo lo que Claude Code puede acceder — esto es así con o sin Tactic Remote. Tactic Remote no amplía la superficie de ataque de un Mac comprometido.
Actualización maliciosa del Mac companion. El Mac companion se distribuye como un binario firmado a través de nuestro sitio web. macOS Gatekeeper valida la firma de código antes de la ejecución. No tenemos la capacidad de enviar actualizaciones silenciosas — el usuario debe descargar e instalar actualizaciones manualmente.
Por qué esto importa
La tendencia en herramientas de desarrollo asistidas por IA es hacia agentes alojados en la nube que se ejecutan en entornos aislados y acceden a tu código a través de integraciones con repositorios. Este modelo funciona para algunos equipos, pero requiere confiar al proveedor de la herramienta tu código fuente, tus credenciales y tu flujo de trabajo de desarrollo.
Tactic Remote toma el enfoque opuesto. Tu Mac es el entorno de ejecución. Tu código permanece en tu disco. Tus credenciales permanecen en tu Keychain. El único servicio de IA involucrado es la relación existente de Claude Code con la API de Anthropic, a la cual ya accediste cuando instalaste Claude Code.
Esta arquitectura tiene costos. Necesitas un Mac que permanezca encendido. Necesitas gestionar tu propia conectividad de red. No tienes la comodidad de un panel en la nube que funcione desde cualquier navegador.
Creemos que la compensación vale la pena. Para desarrolladores que trabajan en software propietario, manejan datos sensibles u operan en industrias reguladas, la capacidad de decir "mi código nunca salió de mi máquina" no es una característica — es un requisito.
Para recomendaciones de endurecimiento de seguridad y guía detallada de configuración, consulta nuestra documentación de Seguridad y endurecimiento de red.
Prueba Tactic Remote
Controla tus agentes de programación desde el móvil
Conéctate a Claude Code, Codex y otros agentes en tu Mac, Windows o Linux. Consulta el progreso y envía la siguiente instrucción desde el iPhone o iPad.