Conexión inversa, sin IP pública
El adaptador de tu PC solo realiza conexiones salientes: sin IP pública, mapeo de puertos ni túnel. Cualquier cortafuegos o red corporativa funciona.
tunnelbox pone opencode, Claude Code, Codex, DeepSeek Harness, OpenClaw, Hermes, Cursor, CodeBuddy, Kimi Code, TraeCode y Qoder en tu bolsillo: observa la salida en streaming, lanza tareas y aprueba acciones de riesgo. Sin IP pública ni redirección de puertos.
$ opencode serve --print-logs
[tunnelbox] Conectando al relay wss://relay.tunnelbox.top …
[tunnelbox] Código de emparejamiento: 8F3K-9Q2Z (válido 10 minutos)
[tunnelbox] Escanea el QR con tu móvil para empezar:
└ o abre la app tunnelbox en tu móvil e introduce el código manualmente
[tunnelbox] ✓ agente registrado agentID: opencode-main
[tunnelbox] ✓ Esperando la conexión del móvil …▍
Funciones clave
Una pasarela remota unificada sobre el ecosistema de agentes CLI / headless: sesiones, streaming, permisos y comandos normalizados en un único protocolo.
El adaptador de tu PC solo realiza conexiones salientes: sin IP pública, mapeo de puertos ni túnel. Cualquier cortafuegos o red corporativa funciona.
Ejecuta opencode, Claude Code, Codex y más en paralelo. Cada uno se empareja y conecta de forma independiente; cambia entre ellos en tu móvil e incluso compara agentes en la misma tarea.
Antes de ejecutar bash o editar archivos, la solicitud de permiso se envía a una tarjeta en tu móvil: permitir / denegar / permitir siempre con un toque. Nada peligroso se aprueba automáticamente.
El terminal imprime un código QR y un código de emparejamiento. Usa «Escanear para emparejar» en la app tunnelbox para conectar al instante; los códigos son de un solo uso y caducan a los 10 minutos.
Listas de sesiones / salida en streaming / aprobaciones de permisos / comandos de barra se normalizan en un único protocolo: tu móvil nunca necesita saber qué agente hay detrás.
El relay solo hace reenvío sin estado y no almacena contenido de conversaciones. El transporte es totalmente TLS. Los usuarios sensibles a la privacidad pueden autoalojar el relay y mantener el control.
Agentes compatibles
Cada agente corresponde a un adaptador que normaliza sus sesiones / streaming / permisos en el protocolo remoto unificado: sin conocimiento para el relay ni tu móvil.
| Agente | Adaptador | Tipo | Estado |
|---|---|---|---|
| O opencode | Plugin en proceso (@tunnelbox/opencode) | A | ✅ MVP · Implementado |
| DS DeepSeek Harness (dsh) | Plugin nativo de Cordis (@tunnelbox/dsh-tunnelbox) | B | ✅ Implementado |
| CC Claude Code | Puente claude-agent-sdk (proceso separado) | B | ✅ Implementado |
| CX Codex | Puente codex app-server (proceso separado) | B | ✅ Implementado |
| OW OpenClaw | Gateway operator WS oficial · Gateway ≥ 2026.6.11 | B | ✅ Implementado · probado (6.35 / 9.4) |
| HM Hermes | Puente hermes chat -Q -q oneshot (+ plugin nativo) | B | ✅ Implementado |
| CS Cursor | Cursor CLI agent acp (proceso separado) | B | ✅ Implementado |
| CB CodeBuddy | CodeBuddy CLI codebuddy --acp (proceso separado) | B | ✅ Implementado |
| K Kimi Code | Kimi Code CLI kimi acp (proceso separado) | B | ✅ Implementado |
| T TraeCode | TraeCode CLI traecli acp serve (proceso separado) | B | ✅ Implementado · experimental · e2e pendiente |
| Q Qoder | Qoder CLI qoder --acp (proceso separado) | B | ✅ Implementado |
A Plugin en proceso · se ejecuta dentro del proceso servidor del agente · B Puente CLI / headless · un proceso conector separado impulsa el modo no interactivo. Se admiten varias instancias del mismo tipo (opencode1 / opencode2 …).
Cómo funciona
Una pasarela remota unificada para el ecosistema de agentes: tu móvil se conecta al relay y los adaptadores de tu PC se reconectan en sentido inverso: los mensajes fluyen en ambos sentidos.
App Android · iOS
Servidor en la nube · autoalojable
Adaptadores de agentes
Las conexiones inversas atraviesan NAT y cortafuegos de forma natural: las redes corporativas y las residencias funcionan sin problema, sin IP pública ni servicio de túnel.
Bajo coste y fácil de escalar. Los nodos no tienen estado y se reconectan automáticamente; los datos de sesión siempre residen solo en el almacenamiento local de tu agente en el PC.
Tras el primer escaneo obtienes un token de sesión y te reconectas automáticamente. Con MySQL configurado, reiniciar el relay tampoco requiere volver a emparejar.
Descarga
Descarga la app tunnelbox desde el sitio oficial (Android e iOS disponibles). Escanea el código QR o pulsa un botón abajo.
Escanea para descargar la app
App móvil nativa: emparejamiento por escaneo, sesiones remotas, salida en streaming, aprobación de acciones de riesgo y notificaciones push.
Tutorial
Todos los agentes siguen el mismo camino: instala el adaptador en tu PC → escanea con tu móvil → listo. El manual de instalación de abajo ofrece comandos paso a paso para cada agente: cópialos con un clic.
Instala y ejecuta el adaptador de tu agente (comandos en el «Manual de instalación» de abajo). Una vez en marcha, el terminal imprime un código QR + código de emparejamiento.
Descarga e instala la app tunnelbox (Android e iOS) desde el sitio oficial y luego inicia sesión.
Pulsa «Escanear para emparejar» y apunta al código QR del terminal para conectar automáticamente, o escribe el código de emparejamiento a mano. El agente aparece en tu lista de inicio una vez emparejado.
Abre la página de chat del agente: cambia / crea sesiones con las pestañas, envía prompts, observa la salida en streaming en tiempo real, aprueba acciones de riesgo en la tarjeta y pulsa «Detener» cuando quieras.
Elige tu agente abajo y sigue los pasos uno a uno: cada comando tiene un botón de copiar con un clic.
Primero instala opencode en sí (una línea oficial para macOS / Linux; en Windows usa WSL, o Chocolatey / Scoop):
# macOS / Linux (official one-line installer)
curl -fsSL https://opencode.ai/install | bash
# Windows (PowerShell): Chocolatey / Scoop / WSL
choco install opencodeTras la instalación, opencode --version debería mostrar un número de versión.
// opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@tunnelbox/opencode"]
}--print-logs); el plugin se conecta al relay e imprime un código QR + código de emparejamiento. Dentro de opencode también puedes pedir «mostrar el código de emparejamiento del móvil» o escribir /pair en cualquier momento para obtener el código y un QR escaneable directamente en el chat.opencode serve --print-logs✅ Listo cuando el terminal muestre el código QR [tunnelbox]: escanéalo con tu móvil para emparejar.
No se necesita configuración para el relay oficial. Para usar tu propio relay, define la variable de entorno TUNNELBOX_RELAY_URL o pasa options.relayUrl mediante la forma de objeto en opencode.json:
// opencode.json (custom relay)
{
"plugin": [{ "package": "@tunnelbox/opencode", "options": { "relayUrl": "wss://relay.tunnelbox.top" } }]
}El estado reside en ~/.tunnelbox/remote-state.json (solo tu ID de agente y el idioma). Puedes ejecutar varios adaptadores en un mismo PC: cada uno se empareja de forma independiente y el móvil te permite cambiar entre ellos con un toque.
Primero instala Claude Code en sí (instalador nativo oficial: se actualiza solo y no requiere runtime adicional):
# macOS / Linux / WSL (official native installer)
curl -fsSL https://claude.ai/install.sh | bash
# Windows PowerShell
irm https://claude.ai/install.ps1 | iexTras la instalación, claude --version debería funcionar; inicia sesión con una cuenta de Claude de pago en el primer arranque.
# no repo clone needed
npm install -g @tunnelbox/claude-codetunnelbox-claude-code✅ Listo cuando aparezca el código QR: escanéalo con tu móvil.
Todo opcional. Ejemplo común:
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_CWD=D:/workspace/project \
TUNNELBOX_CLAUDE_MODE=plan \
tunnelbox-claude-codeLas aprobaciones de herramientas se envían a tu móvil por defecto (permitir / denegar / permitir siempre). Si se desconecta o pasan 120 s, la solicitud se deniega automáticamente (fail-closed): nada se aprueba solo. Modos: default / plan / acceptEdits / bypassPermissions.
codex app-serverPrimero instala el Codex CLI en sí (instalador oficial o npm):
# macOS / Linux (official installer)
curl -fsSL https://chatgpt.com/codex/install.sh | sh
# Windows PowerShell
irm https://chatgpt.com/codex/install.ps1 | iex
# or Node: npm install -g @openai/codex
npm install -g @openai/codexVerifica con codex --version y luego codex login para iniciar sesión. Autocomprobación del adaptador: tunnelbox-codex --check (confirma que codex app-server está disponible).
# no repo clone needed
npm install -g @tunnelbox/codextunnelbox-codex✅ Listo cuando aparezca el código QR: escanéalo con tu móvil.
Todo opcional. Ejemplo común:
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_CODEX_SANDBOX=workspace-write \
tunnelbox-codex
# optional: TUNNELBOX_CODEX_APPSERVER_ARGS="--stdio"Las aprobaciones y elecciones son nativas: codex envía las solicitudes de aprobación de herramientas y las preguntas de opción múltiple directamente a tu móvil (permitir / denegar, elegir una opción), y su razonamiento se transmite en directo. La desconexión / el tiempo de espera se deniegan automáticamente (fail-closed). Lo permitido sigue limitado por TUNNELBOX_CODEX_SANDBOX (read-only / workspace-write / danger-full-access).
$DSH_HOME/.credentials.yaml, por defecto ~/.dsh)Primero instala dsh en sí (paquete npm oficial de DeepSeek; requiere Node.js ^22.19 o >=24):
# Install dsh globally (official package)
npm install -g @deepseek-ai/dsh
# or try instantly: npx @deepseek-ai/dsh webTras la instalación, dsh --version debería funcionar; en el primer uso configura una clave API de DeepSeek (se guarda en $DSH_HOME/.credentials.yaml).
dsh plugin --profile tunnelbox add @tunnelbox/dsh-tunnelbox
dsh --profile tunnelbox --dump-config # verify the tunnelbox-dsh layerdsh --profile tunnelbox✅ Listo cuando aparezca el código QR. El modelo / directorio de trabajo se pueden definir en el cordis.yml del perfil.
Todo opcional. Ejemplo de configuración del perfil (cordis.patch.yml):
- id: tunnelbox-dsh
config:
relayUrl: 'wss://relay.tunnelbox.top'
model: 'deepseek-v4-flash'
cwd: 'D:/workspace/project'Las aprobaciones siguen la approval / sandbox-policy de dsh (por defecto workspace-write + ask): las acciones de riesgo se envían a tu móvil. Ejecuta varias instancias con valores DSH_HOME distintos.
Primero instala OpenClaw (instalador oficial) y completa el asistente onboard:
# macOS / Linux (official installer)
curl -fsSL https://openclaw.ai/install.sh | bash
# Windows PowerShell
iwr -useb https://openclaw.ai/install.ps1 | iex
# finish the setup wizard after install
openclaw onboardEstás listo cuando openclaw funcione y el Gateway esté en ejecución.
# no repo clone needed
npm install -g @tunnelbox/openclawEl adaptador lee automáticamente tu token del Gateway desde ~/.openclaw/openclaw.json (o TUNNELBOX_OPENCLAW_TOKEN). Si tu Gateway pide aprobación de dispositivo, apruébala una vez:
openclaw devices list # note the requestId
openclaw devices approve <requestId>tunnelbox-openclaw✅ Tras aprobar el dispositivo aparece el código QR: escanéalo con tu móvil para emparejar.
Todo opcional. Ejemplo común:
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_OPENCLAW_GATEWAY_URL=ws://127.0.0.1:18789 \
tunnelbox-openclawEl borrado de sesiones es definitivo vía el Gateway (sessions.delete, requiere operator.admin). El adaptador descubre automáticamente gateway.auth.token / password (config, env, el proceso Gateway en ejecución o los archivos de credenciales posteriores a 2026.9.1); define TUNNELBOX_OPENCLAW_TOKEN para sobrescribir, --check-gateway-auth para inspeccionar, --save-token para guardar uno, o TUNNELBOX_OPENCLAW_AUTOSTART=start|install para iniciar el Gateway automáticamente. Las aprobaciones (exec/plugin) y las tarjetas de herramientas (con argumentos de comando) se envían a tu móvil; las tarjetas interactivas de elección/pregunta requieren Gateway ≥ 2026.7 (question.*), mientras que los gateways más antiguos muestran esos avisos como aprobaciones o texto plano.
hermes setup)Primero instala Hermes Agent (instalador oficial) y termina la configuración:
# official installer
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# finish setup after install
hermes setupEstás listo cuando hermes chat -Q -q "hi" responda.
# no repo clone needed
npm install -g @tunnelbox/hermestunnelbox-hermes✅ Listo cuando aparezca el código QR: escanéalo con tu móvil.
Todo opcional. Ejemplo común:
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_HERMES_MODEL="anthropic/claude-sonnet-4" \
tunnelbox-hermesNota: este adaptador headless no ofrece aprobación en el móvil; las operaciones peligrosas se rigen por la política de seguridad del propio hermes (fail-closed). Las sesiones continúan en la sesión real de Hermes (el id se descubre automáticamente tras el primer turno). Los flujos de aprobación/pregunta de sesiones interactivas están en el plugin nativo oficial de Hermes (native-plugin/).
Primero instala el Cursor CLI en sí (instalador oficial):
# macOS / Linux (official installer)
curl https://cursor.com/install -fsS | bash
# Windows PowerShell
irm 'https://cursor.com/install?win32=true' | iexEstás listo cuando agent -p "hello" produzca salida normal (el uso headless lo factura Cursor).
# no repo clone needed
npm install -g @tunnelbox/cursortunnelbox-cursor✅ Listo cuando aparezca el código QR: escanéalo con tu móvil.
Todo opcional. Ejemplo común (modo plan + permitir editar archivos):
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_CURSOR_MODE=plan \
TUNNELBOX_CURSOR_FORCE=1 \
tunnelbox-cursorLa aprobación en el móvil no es posible (los hooks de Cursor son solo para IDE / agentes Cloud; el headless agent -p no tiene relay de aprobación externo), y el modo print suprime el pensamiento (sin tarjetas de razonamiento). Lo que se ejecuta lo deciden permissions allow/deny + --force/--yolo + --sandbox. Solo lectura por defecto (sin --force, el agente solo propone, no edita). Define TUNNELBOX_CURSOR_FORCE=1 para editar archivos de verdad. ¿Aún sin CLI? macOS / Linux: curl https://cursor.com/install -fsS | bash; Windows: irm 'https://cursor.com/install?win32=true' | iex.
Primero instala el CodeBuddy CLI en sí (instalación global con npm):
# install the CodeBuddy CLI
npm install -g @tencent-ai/codebuddy-code
# first login (or use CODEBUDDY_API_KEY)
codebuddyEstás listo cuando codebuddy --version muestre una versión; la primera ejecución requiere iniciar sesión.
# no repo clone needed
npm install -g @tunnelbox/codebuddytunnelbox-codebuddy✅ Listo cuando aparezca el código QR: escanéalo con tu móvil.
Todo opcional. Ejemplo común (modo plan):
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_CODEBUDDY_MODE=plan \
tunnelbox-codebuddyControla codebuddy --acp (ACP). Las aprobaciones de herramientas van al móvil (permitir / denegar / permitir siempre); sin conexión o con un tiempo de espera de 120 s se rechaza automáticamente (fail-closed). Selección / plan / preguntas son ACP nativo (AskUserQuestion / ExitPlanMode / elicitation). Si no has iniciado sesión, ejecuta codebuddy una vez para iniciarla (o define CODEBUDDY_API_KEY).
Primero instala el Kimi Code CLI en sí (script oficial o npm), luego ejecútalo una vez y envía /login:
# macOS / Linux (official installer)
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash
# Windows PowerShell
irm https://code.kimi.com/kimi-code/install.ps1 | iex
# first login
kimi # then send /loginEstás listo cuando kimi --version muestre una versión; la primera ejecución requiere /login.
# no repo clone needed
npm install -g @tunnelbox/kimitunnelbox-kimi✅ Listo cuando aparezca el código QR: escanéalo con tu móvil.
Todo opcional. Ejemplo común (modo plan):
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_KIMI_MODE=plan \
tunnelbox-kimiControla kimi acp (ACP). La matriz de capacidades oficial incluye session/list|resume|delete nativos; la aprobación de herramientas y las preguntas comparten session/request_permission y van al móvil; sin conexión o con un tiempo de espera de 120 s se rechaza automáticamente (fail-closed). Si no has iniciado sesión, ejecuta kimi una vez y envía /login.
Primero instala el TraeCode CLI en sí según la documentación oficial y luego inicia sesión:
# see https://docs.trae.cn/cli_what-is-trae-cli
traecli loginEstás listo cuando traecli --version funcione y traecli login tenga éxito.
# no repo clone needed
npm install -g @tunnelbox/traetunnelbox-trae✅ Listo cuando aparezca el código QR: escanéalo con tu móvil.
Todo opcional. Ejemplo común (modo de permiso auto):
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_TRAE_PERMISSION_MODE=auto \
tunnelbox-traeControla traecli acp serve (ACP). La documentación oficial solo indica compatibilidad con ACP y no publica una matriz de capacidades, por lo que este adaptador es experimental: verifica el streaming / la aprobación / la selección / la cancelación con el CLI real (npm run probe). Las aprobaciones son fail-closed por defecto. TraeCode CLI requiere un plan TRAE Enterprise Flagship y usa el modo Max por defecto (ojo con la cuota).
Primero instala el Qoder CLI en sí (npm) y luego inicia sesión:
# install Qoder CLI
npm install -g @qoder-ai/qodercli
# log in (or set QODER_PERSONAL_ACCESS_TOKEN)
qoder loginEstás listo cuando qoder --version muestre una versión y hayas iniciado sesión.
# no repo clone needed
npm install -g @tunnelbox/qodertunnelbox-qoder✅ Listo cuando aparezca el código QR: escanéalo con tu móvil.
Todo opcional. Ejemplo común (modo de permiso auto):
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_QODER_PERMISSION_MODE=auto \
tunnelbox-qoderControla qoder --acp (ACP). Las aprobaciones de herramientas van al móvil (permitir / denegar / permitir siempre); sin conexión o con un tiempo de espera de 120 s se rechaza automáticamente (fail-closed). Selección / plan / preguntas pasan por el canal de permisos ACP. Si no has iniciado sesión, ejecuta qoder login o define QODER_PERSONAL_ACCESS_TOKEN.
plugin/ en el repositorio.docker compose up -d despliega el relay con un solo comando (persistencia MySQL opcional). Una plantilla nginx.conf proporciona HTTPS mediante proxy inverso; define NATS_URL para escalar a varios nodos.FAQ
Sí. El adaptador de tu PC solo realiza conexiones WebSocket salientes (una conexión inversa). No se necesita IP pública, reenvío de puertos ni túnel; atraviesa NAT y cortafuegos, así que las redes corporativas funcionan sin problema.
El relay solo hace reenvío sin estado y no almacena contenido de conversaciones. El transporte es totalmente TLS; los códigos de emparejamiento son de un solo uso y caducan a los 10 minutos; los tokens de sesión se guardan como hashes SHA-256. Los usuarios sensibles a la privacidad pueden autoalojar el relay para que los datos permanezcan en su propio servidor.
Solo en el almacenamiento local del agente en tu PC. La app obtiene el historial de tu ordenador en tiempo real cuando abres una sesión; no es accesible mientras el PC está apagado o el plugin está sin conexión. El relay no hace sincronización ni copia de seguridad en la nube: ese es el compromiso deliberado, respetuoso con la privacidad y de bajo coste.
Se admiten opencode, Claude Code, Codex, DeepSeek Harness, OpenClaw, Hermes y Cursor, y se permiten varias instancias del mismo tipo (p. ej. opencode1 / opencode2). Cada una se empareja y conecta de forma independiente: cambia entre ellas desde la lista de tu móvil o deja que distintos agentes hagan la misma tarea para comparar en paralelo.
Sí. Cuando se invocan herramientas como bash o la edición de archivos, la solicitud sigue el modelo nativo de ask / aprobación de cada agente y se envía a tu móvil: solo se ejecuta tras permitir o denegar. También puedes elegir «permitir siempre» para una herramienta durante la sesión actual.
Gratis y de código abierto (consulta la LICENSE del repositorio). El relay es autoalojable: Docker / docker compose lo despliega con un solo comando, con HTTPS mediante proxy inverso nginx, persistencia MySQL y escalado multinodo NATS. Las apps Android / iOS están disponibles en el sitio oficial.
tunnelbox está diseñado en torno al control remoto desde tu móvil: conexión inversa mediante relay más apps nativas Android / iOS, para que puedas manejar varios agentes CLI de tu PC desde cualquier lugar. Un protocolo unificado, un relay sin estado y una gran facilidad de autoalojamiento permiten ejecutar y gestionar muchos agentes en una sola máquina.
Instala el adaptador en tu PC, saca el móvil y escanea. Todos tus agentes, listos para servir.