Connexion inverse, sans IP publique
L'adaptateur sur votre PC n'établit que des connexions sortantes — aucune IP publique, redirection de port ou tunnel. N'importe quel pare-feu ou réseau d'entreprise fonctionne.
tunnelbox met opencode, Claude Code, Codex, DeepSeek Harness, OpenClaw, Hermes, Cursor, CodeBuddy, Kimi Code, TraeCode et Qoder dans votre poche — suivez la sortie en streaming, lancez des tâches et approuvez les actions risquées. Sans IP publique ni redirection de ports.
$ opencode serve --print-logs
[tunnelbox] Connexion au relais wss://relay.tunnelbox.top …
[tunnelbox] Code d'appairage : 8F3K-9Q2Z (valable 10 minutes)
[tunnelbox] Scannez le QR avec votre téléphone pour commencer :
└ ou ouvrez l'application tunnelbox sur votre téléphone et saisissez le code manuellement
[tunnelbox] ✓ agent enregistré agentID: opencode-main
[tunnelbox] ✓ En attente de la connexion du téléphone …▍
Fonctionnalités clés
Une passerelle distante unifiée au-dessus de l'écosystème d'agents CLI / headless — sessions, streaming, permissions et commandes normalisés dans un seul protocole.
L'adaptateur sur votre PC n'établit que des connexions sortantes — aucune IP publique, redirection de port ou tunnel. N'importe quel pare-feu ou réseau d'entreprise fonctionne.
Exécutez opencode, Claude Code, Codex et d'autres côte à côte. Chacun s'appaire et se connecte indépendamment ; basculez entre eux sur votre téléphone, et comparez même les agents sur une même tâche.
Avant l'exécution de bash ou d'une édition de fichier, la demande d'autorisation est poussée sur une carte de votre téléphone — autoriser / refuser / toujours autoriser en un geste. Rien de dangereux n'est approuvé automatiquement.
Le terminal affiche un QR code et un code d'appairage. Utilisez « Scanner pour appairer » dans l'application tunnelbox pour vous connecter instantanément ; les codes sont à usage unique et expirent après 10 minutes.
Listes de sessions / sortie en streaming / approbations de permissions / commandes slash sont tous normalisés dans un seul protocole — votre téléphone n'a jamais à savoir quel agent se trouve derrière.
Le relais ne fait qu'un transfert sans état et ne stocke aucun contenu de conversation. Le transport est entièrement TLS. Les utilisateurs soucieux de la confidentialité peuvent héberger le relais eux-mêmes et garder le contrôle.
Agents pris en charge
Chaque agent correspond à un adaptateur qui normalise ses sessions / streaming / permissions dans le protocole distant unifié — transparence totale pour le relais et votre téléphone.
| Agent | Adaptateur | Type | Statut |
|---|---|---|---|
| O opencode | Plugin in-process (@tunnelbox/opencode) | A | ✅ MVP · Implémenté |
| DS DeepSeek Harness (dsh) | Plugin Cordis natif (@tunnelbox/dsh-tunnelbox) | B | ✅ Implémenté |
| CC Claude Code | Pont claude-agent-sdk (processus séparé) | B | ✅ Implémenté |
| CX Codex | Pont codex app-server (processus séparé) | B | ✅ Implémenté |
| OW OpenClaw | Gateway operator WS officiel · Gateway ≥ 2026.6.11 | B | ✅ Implémenté · testé (6.35 / 9.4) |
| HM Hermes | Pont hermes chat -Q -q oneshot (+ plugin natif) | B | ✅ Implémenté |
| CS Cursor | Cursor CLI agent acp (processus séparé) | B | ✅ Implémenté |
| CB CodeBuddy | CodeBuddy CLI codebuddy --acp (processus séparé) | B | ✅ Implémenté |
| K Kimi Code | Kimi Code CLI kimi acp (processus séparé) | B | ✅ Implémenté |
| T TraeCode | TraeCode CLI traecli acp serve (processus séparé) | B | ✅ Implémenté · expérimental · e2e en attente |
| Q Qoder | Qoder CLI qoder --acp (processus séparé) | B | ✅ Implémenté |
A Plugin in-process · s'exécute dans le processus serveur de l'agent · B Pont CLI / headless · un processus connecteur séparé pilote le mode non interactif. Plusieurs instances du même type sont prises en charge (opencode1 / opencode2 …).
Fonctionnement
Une passerelle distante unifiée pour l'écosystème des agents : votre téléphone se connecte au relais, et les adaptateurs de votre PC se reconnectent en sens inverse — les messages circulent dans les deux sens.
Application Android · iOS
Serveur cloud · auto-hébergeable
Adaptateurs d'agents
Les connexions inverses traversent naturellement le NAT et les pare-feu — les réseaux d'entreprise et les résidences fonctionnent parfaitement, sans IP publique ni service de tunnel.
Coût faible et mise à l'échelle facile. Les nœuds sont sans état et se reconnectent automatiquement ; les données de session restent toujours uniquement dans le stockage local de votre agent sur le PC.
Après le premier scan, vous obtenez un jeton de session et vous vous reconnectez automatiquement. Avec MySQL configuré, un redémarrage du relais ne nécessite pas non plus de réappairer.
Téléchargement
Téléchargez l'application tunnelbox depuis le site officiel (Android et iOS disponibles). Scannez le QR code ou appuyez sur un bouton ci-dessous.
Scannez pour télécharger l'application
Application mobile native : appairage par scan, sessions distantes, sortie en streaming, approbation des actions risquées et notifications push.
Tutoriel
Chaque agent suit le même chemin : installez l'adaptateur sur votre PC → scannez avec votre téléphone → c'est parti. Le manuel d'installation ci-dessous fournit des commandes pas à pas pour chaque agent — copiez-les en un clic.
Installez et exécutez l'adaptateur correspondant à votre agent (commandes dans le « Manuel d'installation » ci-dessous). Une fois lancé, le terminal affiche un QR code + code d'appairage.
Téléchargez et installez l'application tunnelbox (Android et iOS) depuis le site officiel, puis connectez-vous.
Appuyez sur « Scanner pour appairer » et pointez vers le QR code du terminal pour vous connecter automatiquement — ou saisissez le code d'appairage manuellement. L'agent apparaît dans votre liste d'accueil une fois appairé.
Ouvrez la page de chat de l'agent : changez / créez des sessions via les onglets, envoyez des invites, suivez la sortie en streaming en temps réel, approuvez les actions risquées sur la carte et appuyez sur « Arrêter » à tout moment.
Choisissez votre agent ci-dessous et suivez les étapes une à une — chaque commande dispose d'un bouton de copie en un clic.
Installez d'abord opencode lui-même (one-liner officiel pour macOS / Linux ; sous Windows, utilisez WSL, ou Chocolatey / Scoop) :
# macOS / Linux (official one-line installer)
curl -fsSL https://opencode.ai/install | bash
# Windows (PowerShell): Chocolatey / Scoop / WSL
choco install opencodeAprès l'installation, opencode --version doit afficher un numéro de version.
// opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@tunnelbox/opencode"]
}--print-logs recommandé) ; le plugin se connecte au relais et affiche un QR code + code d'appairage. Dans opencode, vous pouvez aussi demander « afficher le code d'appairage du téléphone » ou taper /pair à tout moment pour obtenir le code et un QR scannable directement dans le chat.opencode serve --print-logs✅ C'est terminé quand le terminal affiche le QR code [tunnelbox] — scannez-le avec votre téléphone pour appairer.
Aucune configuration n'est nécessaire pour le relais officiel. Pour utiliser votre propre relais, définissez la variable d'environnement TUNNELBOX_RELAY_URL, ou passez options.relayUrl via la forme objet dans opencode.json :
// opencode.json (custom relay)
{
"plugin": [{ "package": "@tunnelbox/opencode", "options": { "relayUrl": "wss://relay.tunnelbox.top" } }]
}L'état réside dans ~/.tunnelbox/remote-state.json (uniquement votre ID d'agent et la langue). Vous pouvez exécuter plusieurs adaptateurs sur un même PC — chacun s'appaire indépendamment et le téléphone vous permet de basculer entre eux d'un simple geste.
Installez d'abord Claude Code lui-même (installateur natif officiel — mises à jour automatiques, aucun runtime supplémentaire) :
# macOS / Linux / WSL (official native installer)
curl -fsSL https://claude.ai/install.sh | bash
# Windows PowerShell
irm https://claude.ai/install.ps1 | iexAprès l'installation, claude --version doit fonctionner ; connectez-vous avec un compte Claude payant au premier lancement.
# no repo clone needed
npm install -g @tunnelbox/claude-codetunnelbox-claude-code✅ C'est terminé quand le QR code apparaît — scannez-le avec votre téléphone.
Tout est facultatif. Exemple courant :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_CWD=D:/workspace/project \
TUNNELBOX_CLAUDE_MODE=plan \
tunnelbox-claude-codeLes approbations d'outils sont poussées vers votre téléphone par défaut (autoriser / refuser / toujours autoriser). En cas de déconnexion ou d'un délai de 120 s, la demande est automatiquement refusée (fail-closed) — rien n'est approuvé automatiquement. Modes : default / plan / acceptEdits / bypassPermissions.
codex app-serverInstallez d'abord le Codex CLI lui-même (installateur officiel ou 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/codexVérifiez avec codex --version, puis codex login pour vous connecter. Auto-vérification de l'adaptateur : tunnelbox-codex --check (confirme que codex app-server est disponible).
# no repo clone needed
npm install -g @tunnelbox/codextunnelbox-codex✅ C'est terminé quand le QR code apparaît — scannez-le avec votre téléphone.
Tout est facultatif. Exemple courant :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_CODEX_SANDBOX=workspace-write \
tunnelbox-codex
# optional: TUNNELBOX_CODEX_APPSERVER_ARGS="--stdio"Les approbations et les choix sont natifs : codex envoie directement les demandes d'approbation d'outils et les questions à choix multiple vers votre téléphone (autoriser / refuser, choisir une option), et son raisonnement est diffusé en direct. Déconnexion / délai sont refusés automatiquement (fail-closed). Ce qui est autorisé reste borné par TUNNELBOX_CODEX_SANDBOX (read-only / workspace-write / danger-full-access).
$DSH_HOME/.credentials.yaml, par défaut ~/.dsh)Installez d'abord dsh lui-même (paquet npm officiel de DeepSeek ; nécessite Node.js ^22.19 ou >=24) :
# Install dsh globally (official package)
npm install -g @deepseek-ai/dsh
# or try instantly: npx @deepseek-ai/dsh webAprès l'installation, dsh --version doit fonctionner ; à la première utilisation, configurez une clé API DeepSeek (stockée dans $DSH_HOME/.credentials.yaml).
dsh plugin --profile tunnelbox add @tunnelbox/dsh-tunnelbox
dsh --profile tunnelbox --dump-config # verify the tunnelbox-dsh layerdsh --profile tunnelbox✅ C'est terminé quand le QR code apparaît. Le modèle / répertoire de travail peuvent être définis dans le cordis.yml du profil.
Tout est facultatif. Exemple de configuration de profil (cordis.patch.yml) :
- id: tunnelbox-dsh
config:
relayUrl: 'wss://relay.tunnelbox.top'
model: 'deepseek-v4-flash'
cwd: 'D:/workspace/project'Les approbations suivent la approval / sandbox-policy de dsh (par défaut workspace-write + ask) — les actions risquées sont poussées vers votre téléphone. Exécutez plusieurs instances avec des valeurs DSH_HOME distinctes.
Installez d'abord OpenClaw (installateur officiel) et terminez l'assistant 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 onboardVous êtes prêt dès que openclaw fonctionne et que le Gateway est en cours d'exécution.
# no repo clone needed
npm install -g @tunnelbox/openclawL'adaptateur lit automatiquement votre jeton Gateway depuis ~/.openclaw/openclaw.json (ou TUNNELBOX_OPENCLAW_TOKEN). Si votre Gateway demande plutôt une approbation d'appareil, approuvez-la une fois :
openclaw devices list # note the requestId
openclaw devices approve <requestId>tunnelbox-openclaw✅ Après avoir approuvé l'appareil, le QR code apparaît — scannez-le avec votre téléphone pour appairer.
Tout est facultatif. Exemple courant :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_OPENCLAW_GATEWAY_URL=ws://127.0.0.1:18789 \
tunnelbox-openclawLa suppression de session est définitive via le Gateway (sessions.delete, nécessite operator.admin). L'adaptateur découvre automatiquement gateway.auth.token / password (config, env, processus Gateway en cours, ou fichiers d'identifiants post-2026.9.1) ; définissez TUNNELBOX_OPENCLAW_TOKEN pour remplacer, --check-gateway-auth pour inspecter, --save-token pour en conserver un, ou TUNNELBOX_OPENCLAW_AUTOSTART=start|install pour démarrer le Gateway automatiquement. Les approbations (exec/plugin) et les cartes d'outils (avec arguments de commande) sont poussées vers votre téléphone ; les cartes de choix/questions interactives nécessitent un Gateway ≥ 2026.7 (question.*), tandis que les gateways plus anciens présentent ces invites comme des approbations ou du texte brut.
hermes setup)Installez d'abord Hermes Agent (installateur officiel) et terminez la configuration :
# official installer
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# finish setup after install
hermes setupVous êtes prêt lorsque hermes chat -Q -q "hi" répond.
# no repo clone needed
npm install -g @tunnelbox/hermestunnelbox-hermes✅ C'est terminé quand le QR code apparaît — scannez-le avec votre téléphone.
Tout est facultatif. Exemple courant :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_HERMES_MODEL="anthropic/claude-sonnet-4" \
tunnelbox-hermesRemarque : cet adaptateur headless ne fournit pas d'approbation sur téléphone ; les opérations dangereuses sont régies par la politique de sécurité de hermes lui-même (fail-closed). Les sessions se poursuivent sur la vraie session Hermes (l'id est découvert automatiquement après le premier tour). Les flux d'approbation / question des sessions interactives se trouvent dans le plugin natif officiel Hermes (native-plugin/).
Installez d'abord le Cursor CLI lui-même (installateur officiel) :
# macOS / Linux (official installer)
curl https://cursor.com/install -fsS | bash
# Windows PowerShell
irm 'https://cursor.com/install?win32=true' | iexVous êtes prêt lorsque agent -p "hello" produit une sortie normale (l'usage headless est facturé par Cursor).
# no repo clone needed
npm install -g @tunnelbox/cursortunnelbox-cursor✅ C'est terminé quand le QR code apparaît — scannez-le avec votre téléphone.
Tout est facultatif. Exemple courant (mode plan + autoriser les éditions de fichiers) :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_CURSOR_MODE=plan \
TUNNELBOX_CURSOR_FORCE=1 \
tunnelbox-cursorL'approbation sur téléphone n'est pas possible (les hooks Cursor sont réservés à l'IDE / aux agents Cloud ; le mode headless agent -p n'a pas de relais d'approbation externe), et le mode print supprime la réflexion (pas de cartes de raisonnement). Ce qui s'exécute est décidé par les allow/deny de permissions + --force/--yolo + --sandbox. Lecture seule par défaut (sans --force, l'agent propose seulement, il n'édite pas). Définissez TUNNELBOX_CURSOR_FORCE=1 pour réellement éditer les fichiers. Pas encore de CLI ? macOS / Linux : curl https://cursor.com/install -fsS | bash ; Windows : irm 'https://cursor.com/install?win32=true' | iex.
Installez d'abord le CodeBuddy CLI lui-même (installation npm globale) :
# install the CodeBuddy CLI
npm install -g @tencent-ai/codebuddy-code
# first login (or use CODEBUDDY_API_KEY)
codebuddyVous êtes prêt lorsque codebuddy --version affiche une version ; la première exécution nécessite une connexion.
# no repo clone needed
npm install -g @tunnelbox/codebuddytunnelbox-codebuddy✅ C'est terminé quand le QR code apparaît — scannez-le avec votre téléphone.
Tout est facultatif. Exemple courant (mode plan) :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_CODEBUDDY_MODE=plan \
tunnelbox-codebuddyPilote codebuddy --acp (ACP). Les approbations d'outils vont sur le téléphone (autoriser / refuser / toujours autoriser) ; hors ligne ou un délai de 120 s rejette automatiquement (fail-closed). Sélection / plan / questions sont natifs ACP (AskUserQuestion / ExitPlanMode / elicitation). Si vous n'êtes pas connecté, exécutez codebuddy une fois pour vous connecter (ou définissez CODEBUDDY_API_KEY).
Installez d'abord le Kimi Code CLI lui-même (script officiel ou npm), puis exécutez-le une fois et envoyez /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 /loginVous êtes prêt lorsque kimi --version affiche une version ; la première exécution nécessite /login.
# no repo clone needed
npm install -g @tunnelbox/kimitunnelbox-kimi✅ C'est terminé quand le QR code apparaît — scannez-le avec votre téléphone.
Tout est facultatif. Exemple courant (mode plan) :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_KIMI_MODE=plan \
tunnelbox-kimiPilote kimi acp (ACP). La matrice de capacités officielle inclut les session/list|resume|delete natifs ; l'approbation d'outils et les invites de questions partagent session/request_permission et vont sur le téléphone ; hors ligne ou un délai de 120 s rejette automatiquement (fail-closed). Si vous n'êtes pas connecté, exécutez kimi une fois et envoyez /login.
Installez d'abord le TraeCode CLI lui-même selon la documentation officielle, puis connectez-vous :
# see https://docs.trae.cn/cli_what-is-trae-cli
traecli loginVous êtes prêt lorsque traecli --version fonctionne et que traecli login réussit.
# no repo clone needed
npm install -g @tunnelbox/traetunnelbox-trae✅ C'est terminé quand le QR code apparaît — scannez-le avec votre téléphone.
Tout est facultatif. Exemple courant (mode de permission auto) :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_TRAE_PERMISSION_MODE=auto \
tunnelbox-traePilote traecli acp serve (ACP). La documentation officielle ne mentionne que la prise en charge ACP et ne publie aucune matrice de capacités, cet adaptateur est donc expérimental — vérifiez le streaming / l'approbation / la sélection / l'interruption avec le CLI réel (npm run probe). Les approbations sont fail-closed par défaut. TraeCode CLI nécessite un forfait TRAE Enterprise Flagship et utilise le mode Max par défaut (attention au quota).
Installez d'abord le Qoder CLI lui-même (npm), puis connectez-vous :
# install Qoder CLI
npm install -g @qoder-ai/qodercli
# log in (or set QODER_PERSONAL_ACCESS_TOKEN)
qoder loginVous êtes prêt lorsque qoder --version affiche une version et que vous êtes connecté.
# no repo clone needed
npm install -g @tunnelbox/qodertunnelbox-qoder✅ C'est terminé quand le QR code apparaît — scannez-le avec votre téléphone.
Tout est facultatif. Exemple courant (mode de permission auto) :
TUNNELBOX_RELAY_URL=wss://relay.tunnelbox.top \
TUNNELBOX_QODER_PERMISSION_MODE=auto \
tunnelbox-qoderPilote qoder --acp (ACP). Les approbations d'outils vont sur le téléphone (autoriser / refuser / toujours autoriser) ; hors ligne ou un délai de 120 s rejette automatiquement (fail-closed). Sélection / plan / questions passent par le canal de permission ACP. Si vous n'êtes pas connecté, exécutez qoder login ou définissez QODER_PERSONAL_ACCESS_TOKEN.
plugin/ dans le dépôt.docker compose up -d déploie le relais en une commande (persistance MySQL facultative). Un modèle nginx.conf fournit le reverse-proxy HTTPS ; définissez NATS_URL pour monter en charge sur plusieurs nœuds.FAQ
Oui. L'adaptateur sur votre PC n'établit que des connexions WebSocket sortantes (une connexion inverse). Aucune IP publique, redirection de port ou tunnel n'est nécessaire ; il traverse le NAT et les pare-feu, donc les réseaux d'entreprise fonctionnent parfaitement.
Le relais ne fait qu'un transfert sans état et ne stocke aucun contenu de conversation. Le transport est entièrement TLS ; les codes d'appairage sont à usage unique et expirent après 10 minutes ; les jetons de session sont stockés sous forme de hachages SHA-256. Les utilisateurs soucieux de la confidentialité peuvent héberger le relais eux-mêmes pour que les données restent sur leur propre serveur.
Uniquement dans le stockage local de l'agent sur votre PC. L'application récupère l'historique depuis votre ordinateur en temps réel lorsque vous ouvrez une session ; il est inaccessible lorsque le PC est éteint ou que le plugin est hors ligne. Le relais ne fait ni synchronisation cloud ni sauvegarde — c'est le compromis délibéré, respectueux de la vie privée et à faible coût.
opencode, Claude Code, Codex, DeepSeek Harness, OpenClaw, Hermes et Cursor sont pris en charge, et plusieurs instances du même type sont autorisées (par ex. opencode1 / opencode2). Chacune s'appaire et se connecte indépendamment — basculez entre elles depuis la liste de votre téléphone, ou laissez différents agents exécuter la même tâche pour une comparaison côte à côte.
Oui. Lorsque des outils tels que bash ou l'édition de fichiers sont invoqués, la demande suit le modèle ask / approbation natif de chaque agent et est poussée vers votre téléphone — elle ne s'exécute qu'après votre autorisation ou refus. Vous pouvez aussi choisir « toujours autoriser » pour un outil pendant la session en cours.
Gratuit et open source (voir la LICENSE dans le dépôt). Le relais est auto-hébergeable : Docker / docker compose le déploie en une commande, avec HTTPS via un reverse-proxy nginx, la persistance MySQL et la mise à l'échelle multi-nœuds NATS. Les applications Android / iOS sont disponibles sur le site officiel.
tunnelbox est conçu autour du contrôle à distance depuis votre téléphone : connexion inverse via relais et applications natives Android / iOS, pour piloter plusieurs agents CLI sur votre PC depuis n'importe où. Un protocole unifié, un relais sans état et une grande facilité d'auto-hébergement permettent d'exécuter et de gérer facilement de nombreux agents sur une seule machine.
Installez l'adaptateur sur votre PC, sortez votre téléphone et scannez. Tous vos agents, prêts à servir.