T3 Code sur un VPS : vos agents pilotés depuis le mobile
Installez T3 Code 0.1.7 sur votre VPS sous un utilisateur dédié, joignez-le par Tailscale depuis votre téléphone, et voyez ce qu'Anthropic dit de votre abonnement Claude.
Faire tourner T3 Code sur un VPS : ce que vous obtenez
Faire tourner T3 Code sur un VPS permet à vos agents de code de continuer à travailler quand l'ordinateur portable est fermé. Le serveur T3 Code tourne sur la machine. Il pilote les CLI (interfaces en ligne de commande) des agents que vous payez déjà, Claude Code ou Codex, et vous le commandez depuis l'application mobile. Le montage le plus sûr tient en cinq étapes : un utilisateur sans droits root, les CLI connectées à vos comptes, T3 Code 0.1.7 en service d'arrière-plan, un accès limité à votre réseau Tailscale, et un appairage du téléphone que vous traitez comme un mot de passe.
T3 Code est un logiciel libre sous licence MIT. D'après son README, il fonctionne avec Claude Code, Codex, Cursor, Grok Build, OpenCode, Google Antigravity et fx. Chaque CLI, sauf Antigravity et Codex connecté par ChatGPT, doit être installée et connectée avant que T3 Code puisse s'en servir. Pour Codex, y compris en 0.1.7, T3 Code gère l'installation et permet de connecter votre compte ChatGPT depuis ses réglages de fournisseurs. Ce guide couvre Claude Code et Codex, les deux cas que rencontrent la plupart des abonnés. Si vous voulez seulement écrire dans une session Claude Code depuis le téléphone, sans interface dédiée, piloter Claude Code depuis un téléphone par SSH reste plus simple, et Claude Code dans tmux sur un VPS garde la session ouverte entre deux connexions.
Ce qu'un téléphone appairé peut faire sur votre serveur
Posez le modèle de menace avant d'installer quoi que ce soit. Un téléphone appairé avec les permissions d'orchestration peut lancer des fils d'agent. Un agent exécute des commandes shell sur le VPS, avec les droits de l'utilisateur qui fait tourner T3 Code. Ce même utilisateur détient vos identifiants : le jeton de connexion Claude Code dans ~/.claude/.credentials.json (mode 0600 sous Linux, d'après la documentation d'Anthropic), le cache de connexion Codex dans ~/.codex/auth.json, qu'OpenAI demande de traiter comme un mot de passe, et vos clés SSH ou jetons Git si vous poussez du code depuis la machine.
La conséquence est directe. Celui qui obtient un lien d'appairage valide avec les permissions complètes par défaut obtient un shell sur votre serveur et l'usage de vos abonnements. Un lien limité à la lecture seule ne donne ni accès au terminal ni permission de piloter les agents. La documentation de T3 Code ajoute un point que l'on oublie : tout terminal ou tout agent en accès complet sur l'hôte peut atteindre des jetons qui ont toutes les permissions. Un agent qui suit une mauvaise instruction peut donc aussi toucher à la gestion des accès. Gardez sur ce VPS uniquement ce que vous acceptez de risquer, et lisez faire tourner Claude Code en sécurité sur un VPS pour la partie isolation. Une machine dédiée, ou des agents de code dans une VM jetable, limite les dégâts si quelque chose tourne mal.
Quelle version installer : 0.1.7, et pourquoi la figer
Au 8 novembre 2026, le registre npm marque 0.1.7 comme latest. La version GitHub v0.1.7 a été publiée le 4 novembre et porte la mention Latest. Ce n'est pas une préversion. En parallèle, des builds nocturnes de 0.1.8 sortent sous l'étiquette nightly, et leur numéro change à chaque build. Ce guide fige tout sur 0.1.7, parce qu'un serveur qui change souvent sous vos pieds est difficile à dépanner.
Deux chemins d'installation existent :
- Le script officiel
install.shtélécharge un binaire autonome dans~/.t3/runtime/versions/<version>, vérifie sa somme de contrôle et crée le lient3dans~/.local/bin. Il n'a besoin que desh,tar,sha256sumetcurlouwget. Il ne demande ni Node.js ni root. C'est le chemin à prendre pour un service permanent. npx t3@0.1.7lance la même version sans rien installer. Le paquet npmt3@0.1.7est un lanceur léger : sa description dit qu'il télécharge l'exécutable autonome depuis la version GitHub. Il déclareengines.node >=20.11.
Une précision sur Node.js, parce que deux plages circulent. Le package.json du serveur, au tag v0.1.7, déclare ^22.16 || ^23.11 || >=24.10. Cette plage concerne le serveur quand il tourne lui-même sous Node, par exemple compilé depuis les sources. Pour le chemin npx, la contrainte déclarée est >=20.11. Vérifiez avec node --version avant de lancer npx.
Pourquoi un utilisateur non root
T3 Code peut ouvrir des onglets de navigateur distants, et il utilise Chrome pour cela. Le bac à sable (sandbox) de Chrome ne peut pas démarrer en root. La documentation de T3 Code demande donc de faire tourner le serveur sous un utilisateur ordinaire, pour garder ce bac à sable actif. La variable T3CODE_SERVER_BROWSER_SANDBOX=0 existe, mais elle ne résout pas le problème : elle désactive le bac à sable de Chrome. Une page web ouverte par un agent tournerait alors sans cette barrière, en root, sur la machine qui détient vos identifiants. N'utilisez pas cette variable.
Il y a une deuxième raison. La documentation du service d'arrière-plan prévient que lancer T3 Code en root crée une installation séparée, avec sa propre identité T3 Connect. Créez l'utilisateur depuis votre compte administrateur :
sudo useradd -m -s /bin/bash agent
sudo install -d -m 700 -o agent -g agent /home/agent/.ssh
sudo cp ~/.ssh/authorized_keys /home/agent/.ssh/authorized_keys
sudo chown agent:agent /home/agent/.ssh/authorized_keys
sudo loginctl enable-linger agentLa dernière ligne active le lingering : systemd garde les services utilisateur de agent en marche après la déconnexion, et les démarre au boot. t3 service install essaie de l'activer lui-même en appelant directement loginctl enable-linger, sans sudo, avec les droits de l'utilisateur courant. Si cet appel échoue, T3 Code vous demande de lancer sudo loginctl enable-linger vous-même, puis de relancer la commande en utilisateur normal. Le faire ici règle la question. Vérifiez :
loginctl show-user agent --property=LingerLa sortie attendue est Linger=yes. Pour la suite, ouvrez une vraie session SSH sous ce compte, ssh agent@votre-vps, plutôt qu'un sudo -iu agent. Les commandes systemctl --user ont besoin d'une session de connexion, et sudo -iu n'en crée pas.
Installer Tailscale et activer HTTPS sur le tailnet
Ce montage n'expose rien sur l'adresse publique du VPS. Le téléphone joint le serveur par Tailscale, un réseau privé entre vos appareils, que Tailscale appelle un tailnet. Sur le VPS, depuis le compte administrateur :
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
sudo tailscale set --operator=agenttailscale up démarre le client et vous connecte : suivez le lien qu'il affiche. Installez ensuite l'application Tailscale sur le téléphone, avec le même compte. La documentation de T3 Code ne demande que cela côté réseau : les deux appareils dans le même tailnet.
La troisième ligne compte. T3 Code tourne sous agent, et c'est lui qui configure Tailscale Serve. D'après la documentation de la CLI Tailscale, --operator désigne un utilisateur Unix autre que root qui peut piloter tailscaled, et cet opérateur peut gérer les cibles de port de Serve et de Funnel. Funnel en fait partie, ce qui veut dire qu'un agent sur la machine pourrait aussi publier un port sur Internet. Contrôlez de temps en temps la sortie de tailscale serve status.
T3 Code utilise Tailscale Serve pour publier le serveur en HTTPS, c'est-à-dire en HTTP chiffré par TLS (transport layer security), à l'intérieur du tailnet. Serve partage un service local avec le tailnet seulement. Funnel l'ouvre à tout Internet : ne l'activez pas ici. La différence entre Tailscale Serve et Funnel a son propre guide.
Les certificats HTTPS de Tailscale demandent deux réglages dans la console d'administration : MagicDNS activé, puis Enable HTTPS dans la section HTTPS Certificates. Tailscale prévient que les noms de machines sont publiés dans un registre public. N'activez pas HTTPS si un nom de machine contient une information sensible, et renommez d'abord le VPS si besoin.
Installer et connecter Claude Code et Codex sur le serveur
Toutes les commandes de cette section se lancent dans la session SSH de agent. T3 Code ne se connecte pas à Claude à votre place. Son guide des fournisseurs le dit en une phrase : T3 Code utilise la connexion et la configuration de Claude Code. Le chemin du binaire vaut claude par défaut, et un réglage de répertoire de configuration vide signifie la configuration normale de Claude Code.
Pour Claude Code, la commande d'installation officielle sous Linux :
curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude auth loginclaude --version doit afficher un numéro de version. Le VPS n'a pas de navigateur. Quand aucun navigateur ne s'ouvre, appuyez sur c pour copier l'URL de connexion, ouvrez-la sur votre ordinateur, puis collez le code obtenu à l'invite Paste code here if prompted. Claude Code demande un compte Pro, Max, Ultra, Team, Enterprise ou Console. Le plan gratuit de claude.ai n'inclut pas Claude Code. Comptez aussi 4 Go de RAM ou plus, selon la page de configuration d'Anthropic.
Un piège propre aux serveurs. Si ANTHROPIC_API_KEY est définie et que vous approuvez son utilisation quand Claude Code le demande, Claude Code utilise cette clé API à la place de l'abonnement, et vous payez des frais d'API. Pour rester sur l'abonnement, lancez unset ANTHROPIC_API_KEY et contrôlez avec /status dans Claude Code. La connexion par abonnement ou par clé API compare les deux modes.
Pour Codex, vous pouvez sélectionner l'environnement du VPS dans Settings → Providers, puis connecter votre compte ChatGPT : T3 Code gère l'installation de Codex. Si vous préférez installer et connecter la CLI vous-même, le README d'OpenAI donne :
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex login --device-auth--device-auth est la connexion par code d'appareil, prévue pour les machines sans navigateur. Elle est en bêta. La documentation d'OpenAI précise qu'elle doit être autorisée dans les paramètres de sécurité de ChatGPT ou dans les permissions de votre espace de travail. Si la connexion échoue, vérifiez ce réglage en premier.
Si vous avez installé les deux CLI vous-même, vérifiez enfin que les deux binaires sont visibles depuis un shell de connexion :
sh -lc "command -v claude codex"La commande doit afficher deux chemins. Un binaire absent de cette sortie n'est pas dans le PATH du shell de connexion : renseignez son chemin dans Binary path, dans les réglages du fournisseur. Codex connecté par ChatGPT et Antigravity utilisent leurs environnements d'exécution gérés sans entrée dans le PATH.
Essayer T3 Code 0.1.7 avec npx, sans exposer le port
Pour un premier test, lancez la version figée au premier plan, liée à l'adresse de boucle locale, et publiée par Tailscale Serve :
npx t3@0.1.7 serve --host 127.0.0.1 --tailscale-serve--host fixe l'interface d'écoute. Le code source de la 0.1.7 montre qu'en mode serve, sans --host ni --lan, l'hôte reste indéfini, et c'est une autre couche du serveur qui décide où il écoute. Avec 127.0.0.1 écrit en toutes lettres, la question ne se pose plus. --tailscale-serve configure Tailscale Serve pour exposer ce serveur en HTTPS sur le tailnet, sur le port 443 par défaut. --tailscale-serve-port change ce port.
Dans une seconde session SSH, vérifiez l'écoute :
ss -tlnp
tailscale serve status
npx t3@0.1.7 statusLe port par défaut compilé dans la 0.1.7 est 3773 (DEFAULT_PORT = 3773 dans le source). Le mode web peut en choisir un autre si 3773 est déjà pris, donc lisez le vrai port dans la sortie de démarrage ou repérez-le dans la sortie de ss -tlnp. t3 status n'affiche pas de numéro de port : il résume l'état du service, de T3 Connect et de l'accès au réseau local. Dans ss, ce port doit apparaître sur 127.0.0.1. Une ligne en 0.0.0.0 ou * veut dire que le serveur écoute sur toutes les interfaces, adresse publique comprise : arrêtez-le et relancez avec --host. tailscale serve status doit lister une adresse en https:// sur votre domaine ts.net.
Le serveur local parle HTTP simple. Le code de démarrage construit une URL http://localhost:<port>, et c'est Tailscale Serve qui ajoute le HTTPS devant. N'ouvrez donc jamais ce port dans le pare-feu du VPS.
Passer en service permanent avec la version figée
Un serveur npx au premier plan s'arrête avec la session SSH. Arrêtez-le avec Ctrl+C, puis installez le binaire en version figée et le service :
curl -fsSL https://t3.codes/install.sh | T3CODE_VERSION=0.1.7 sh
t3 --version
t3 service install
t3 service statusT3CODE_VERSION s'écrit sans v. Le script ajoute lui-même le v dans l'URL de téléchargement, donc T3CODE_VERSION=v0.1.7 demande vv0.1.7 et échoue avec un message qui contient has no release archive. Si le shell répond t3: command not found, ajoutez ~/.local/bin à votre PATH. L'installeur actuel affiche is not on your PATH yet. Add it with:, puis une commande à coller pour bash sous Linux, zsh ou fish, avec les chemins habituels. Ouvrez ensuite une nouvelle session SSH. Le script au tag v0.1.7 ne donnait que le rappel générique Add … to your PATH, then run t3. ; figer T3CODE_VERSION ne fige pas le script téléchargé.
Sous Linux, t3 service install installe et démarre un service utilisateur systemd nommé t3code.service. La documentation de T3 Code le confirme, ainsi que l'activation du lingering pour que le service démarre au boot et survive à la déconnexion. t3 service status indique où se trouvent les journaux. Sous Linux, il vérifie aussi que le service tourne, qu'il est activé et qu'il survivra à la déconnexion. Vous pouvez interroger systemd directement :
systemctl --user status t3code.serviceLa ligne Active: doit indiquer active (running). Un nouveau service n'écoute que sur la machine locale : la documentation l'écrit, et le code source précise que t3 service install écrit T3CODE_LAN=false pour un nouveau service. Pour figer ce choix, ajoutez l'hôte dans ~/.t3/service.env, le fichier de variables qui survit aux installations et aux mises à jour :
printf 'T3CODE_HOST=127.0.0.1\n' >> ~/.t3/service.env
chmod 600 ~/.t3/service.env
t3 service restartN'utilisez ni t3 up --lan ni T3CODE_LAN=true ici. En mode LAN, le service écoute aussi sur les adresses du réseau local et du tailnet. La documentation interne de T3 Code précise qu'il ferme alors les connexions qui ne viennent pas d'une adresse locale, privée ou du tailnet, mais elle ajoute que ce filtre n'est pas un pare-feu. Elle note aussi que, dans ce mode, le code d'appairage devient la seule protection. Sur un VPS, vous ne contrôlez pas ce qui se trouve sur le réseau privé de l'hébergeur.
Appairer le téléphone avec t3 pair, sans donner toutes les clés
Le service tourne. t3 pair --tailscale ajoute la correspondance Tailscale Serve à un serveur déjà lancé et génère un lien d'appairage avec une adresse du type https://machine.tailnet.ts.net/. Cette correspondance est conservée aux redémarrages.
t3 pair --tailscaleDans l'application mobile (iOS et Android, d'après la page d'installation de T3), ouvrez Settings, puis Environments. Ajoutez l'environnement en scannant le QR code ou en collant l'URL d'appairage. Si vous tapez l'adresse à la main, commencez par https:// : sur mobile, une adresse saisie sans schéma part en HTTP.
Traitez ce lien comme un mot de passe. La documentation de T3 Code le dit en ces termes. Ne le collez pas dans une messagerie et ne le laissez pas dans un historique partagé. Chaque nouvel appareil demande un nouveau lien à usage unique.
Sans --scope, les jetons d'appairage et les sessions émises reçoivent toutes les permissions, y compris la gestion des accès et celle de T3 Connect. Un téléphone qui lance des agents n'a pas besoin de créer d'autres appairages. --scope se passe une fois par permission et remplace la liste par défaut. L'exemple de la documentation donne un appairage en lecture seule :
t3 pair --tailscale --scope orchestration:read --scope relay:readCe jeu permet de lire, pas de piloter un agent. La documentation utilisateur ne publie pas la liste complète des permissions : elle cite aussi terminal:operate, orchestration:operate, source-control:write, filesystem:read et filesystem:write. Elle indique que les permissions couvrent l'accès aux fichiers, le terminal, l'orchestration, les réglages, les fournisseurs, la gestion des accès et celle de T3 Connect. Lisez les noms exacts sur votre serveur :
t3 pair --help
t3 auth --helpRègle pratique : pour empêcher un client de gérer les accès, retirez aussi terminal:operate et orchestration:operate, comme le demande la documentation. Un terminal ou un agent en accès complet peut atteindre les jetons de l'hôte même sans permission directe de gestion des accès. Pour changer les permissions d'un client existant, créez un nouveau lien d'appairage. Se reconnecter ne change rien.
Passez en revue les sessions régulièrement :
t3 auth session list
t3 auth session revoke <id>Révoquez tout de suite la session d'un téléphone perdu, puis toute session que vous ne reconnaissez pas.
Mettre à jour T3 Code : t3 update et les canaux Stable et Nightly
La version du client et celle du serveur doivent concorder. En cas d'écart, la connexion est refusée, et un avis indique quel côté mettre à jour. Sur l'hôte, la documentation de la 0.1.7 donne :
t3 update <client-version>Remplacez <client-version> par la version affichée dans l'avis. La commande demande avant de redémarrer le service, parce qu'un redémarrage interrompt les tours d'agent en cours, les terminaux et les clients distants. Si vous refusez, lancez t3 service restart plus tard, à un moment calme. Les fils enregistrés, les réglages et les fichiers des projets restent en place, et si une mise à jour échoue, le service peut revenir à la version précédente.
Deux canaux existent : Stable et Nightly. Un service reste sur son canal. Si vous êtes passé en Nightly et que Stable est plus ancien, le service ne peut pas redescendre à distance. Sur la machine elle-même, lancez :
t3 update --channel stable --allow-downgradeSi le serveur tourne avec npx, il n'y a rien à mettre à jour sur l'hôte. Arrêtez le serveur et relancez npx t3@<client-version> avec la même sous-commande et les mêmes options. La page d'installation précise que les applications mobiles fonctionnent avec les serveurs Stable comme Nightly.
T3 Connect ou Tailscale : qui se place entre le téléphone et le serveur
La FAQ de T3 présente T3 Connect comme son alternative intégrée à Tailscale. Elle ne demande aucune configuration de routeur. Le trafic passe par un tunnel Cloudflare, avec cloudflared qui tourne sur l'hôte. Chaque appareil se connecte au même compte T3 Connect. Par défaut, un compte peut lier 3 machines, sans compter les téléphones et les navigateurs. Un plan payant T3 Chat monte la limite à 10 machines (Pro) ou 100 (Premier). La FAQ dit que T3 Connect est gratuit, et ajoute « pour l'instant ». L'application web hébergée app.t3.codes peut aussi se connecter directement à votre serveur par une adresse HTTPS joignable ; un lien d'appairage ne rend pas une adresse inaccessible joignable et ne transforme pas HTTP en HTTPS.
t3 connect link
t3 connect unlink
t3 connect logoutlink relie l'hôte à T3 Connect. unlink coupe l'exposition et garde votre connexion au compte. logout coupe l'exposition et efface la connexion.
Le vrai choix porte sur les intermédiaires. Avec Tailscale Serve, le chemin passe par votre tailnet, et le compte comme la coordination restent chez Tailscale. Avec T3 Connect, la page de dépannage de T3 décrit ce chemin : votre appareil, puis T3 Connect, puis le tunnel de l'hôte, puis T3 Code. T3 indique que T3 Connect signe les requêtes avec des preuves de courte durée. Sa FAQ précise que le relais établit la liaison sans relayer les sessions HTTP ou WebSocket, et que le code et les prompts vont de votre machine à votre fournisseur. Si vous avez déjà Tailscale, ce guide reste sur Tailscale, parce que T3 Connect ajoute deux acteurs, le compte T3 et Cloudflare, sur le chemin vers une machine qui détient vos identifiants.
Votre abonnement Claude Pro ou Max a-t-il le droit de passer par T3 Code ?
C'est la question qui compte le plus si vous payez un abonnement Claude. Voici d'abord les faits.
T3 Code pilote Claude par l'Agent SDK d'Anthropic. Il ne se contente pas de taper dans la CLI. Sa FAQ le dit, et le code source de la 0.1.7 importe @anthropic-ai/claude-agent-sdk en lui donnant le chemin du binaire claude. Anthropic décrit l'Agent SDK comme une bibliothèque qui exécute le binaire Claude Code. C'est donc bien votre Claude Code installé qui tourne, avec votre compte.
Voici ce que disent les pages d'Anthropic, consultées le 9 novembre 2026 :
- La page juridique de Claude Code dit que l'authentification OAuth est prévue pour les abonnés Free, Pro, Max, Ultra, Team et Enterprise, pour un usage ordinaire de Claude Code et des applications natives d'Anthropic. Elle interdit aux développeurs tiers de proposer la connexion Claude.ai dans leurs propres applications, ou de faire passer des requêtes par les identifiants d'un plan Free, Pro, Max ou Ultra au nom de leurs utilisateurs.
- La même page précise que rien n'empêche un utilisateur final de se connecter au binaire Claude Code non modifié avec son propre abonnement, y compris quand une plateforme héberge Claude Code.
- La présentation de l'Agent SDK porte une note : sauf accord préalable, Anthropic n'autorise pas les développeurs tiers à proposer la connexion claude.ai ou ses limites d'usage pour leurs produits, y compris les agents construits sur l'Agent SDK. Elle renvoie vers l'authentification par clé API.
- Anthropic se réserve le droit de faire respecter ces restrictions, y compris sans préavis.
La FAQ de T3 Code, de son côté, affirme que T3 Code respecte les conditions d'utilisation de Claude Code, de Codex et de Google Antigravity. À la question du bannissement, elle répond « No ». C'est l'affirmation de l'éditeur, pas celle d'Anthropic.
La question reste donc ouverte, et votre cas se situe entre deux phrases d'Anthropic. Vous vous connectez vous-même, avec claude auth login, sur votre propre serveur, au binaire non modifié. Mais cette connexion est ensuite utilisée par un produit tiers construit sur l'Agent SDK. Aucune des pages ne nomme T3 Code. Aucune ne dit si un front-end auto-hébergé de ce type compte comme un développeur tiers qui propose la connexion. Ce guide ne tranche pas à la place d'Anthropic. Si votre compte est en jeu, posez la question au support d'Anthropic, ou passez par une clé API, la voie que désigne la note du SDK.
Sur les limites d'usage, les pages sont plus nettes. L'article du support d'Anthropic sur l'Agent SDK indique que, connecté avec votre plan Claude, l'Agent SDK et claude -p puisent toujours dans les limites de votre abonnement. Ces limites sont partagées entre Claude et Claude Code, et celles annoncées pour Pro, Max et Ultra supposent un usage ordinaire et individuel. La FAQ de T3 ajoute un constat de l'éditeur, pas d'Anthropic : selon elle, l'usage via l'Agent SDK vide la limite de 5 heures plus vite que Claude Code utilisé directement, mais pas les limites hebdomadaires. Depuis la mise à jour du 7 octobre 2026 du même article, les plans Max, Ultra et Team incluent des crédits API mensuels. Ils ne s'appliquent qu'avec une clé API d'une organisation Console liée, et Pro n'apparaît pas dans cette liste.
Pour Codex, OpenAI documente désormais le partage d'un abonnement ChatGPT avec une application libre et hébergée localement, via Sign in with ChatGPT, y compris avec Codex app-server et sur une VM auto-hébergée. L'utilisateur autorise l'application à utiliser son abonnement pour les requêtes éligibles. C'est le chemin proposé par la connexion ChatGPT de T3 Code.
Quand ça casse : les symptômes et leur cause
Le service s'arrête quand vous fermez SSH. Le lingering n'est pas actif pour agent, donc systemd arrête ses services à la fin de la dernière session. t3 service status le signale par linger-disabled. Depuis le compte administrateur, lancez sudo loginctl enable-linger agent.
ss montre le serveur sur 0.0.0.0. Le serveur a été lancé sans --host, ou un ancien service écoute encore sur le réseau local. Un service installé avant l'existence de T3CODE_LAN garde ce comportement, et t3 status le signale. Fixez T3CODE_HOST=127.0.0.1 dans ~/.t3/service.env, puis lancez t3 service restart.
--tailscale-serve ou t3 pair --tailscale est refusé par Tailscale. L'utilisateur agent n'est pas opérateur de tailscaled, donc il ne peut pas modifier la configuration Serve. Depuis le compte administrateur, lancez sudo tailscale set --operator=agent.
Le téléphone ne joint pas l'adresse ts.net. Vérifiez quatre points : HTTPS est activé dans la console Tailscale, l'application Tailscale du téléphone est connectée au même tailnet, l'adresse commence par https://, et tailscale serve status liste bien une correspondance.
La connexion est refusée après une mise à jour de l'application. Le client et le serveur n'ont plus la même version. Lisez la version dans l'avis, puis lancez t3 update <client-version> sur l'hôte.
Les onglets de navigateur distants ne s'ouvrent pas. Sur Ubuntu 23.10 et les versions suivantes, d'après la documentation de T3, le bac à sable de Chrome est bloqué tant qu'un profil AppArmor ne l'autorise pas. Le serveur affiche la ligne exacte à lancer. C'est une configuration unique de l'hôte, sudo t3 browser setup, que vous lancez depuis le compte administrateur avec le chemin complet, sudo /home/agent/.local/bin/t3 browser setup. Ne passez pas à T3CODE_SERVER_BROWSER_SANDBOX=0.
FAQ
Faut-il Node.js 22 pour lancer T3 Code 0.1.7 ?
Non, pas pour les deux chemins de ce guide. Le paquet npm t3@0.1.7 déclare node >=20.11, et c'est un lanceur qui télécharge un exécutable autonome depuis la version GitHub. Le script curl -fsSL https://t3.codes/install.sh | T3CODE_VERSION=0.1.7 sh n'a pas besoin de Node du tout. La plage ^22.16 || ^23.11 || >=24.10 du package.json du serveur ne compte que si vous faites tourner le serveur lui-même sous Node, par exemple depuis les sources.
Sur quel port écoute T3 Code, et en HTTP ou en HTTPS ?
Le port par défaut compilé dans la 0.1.7 est 3773, mais la documentation utilisateur ne le cite pas, et le mode web peut en prendre un autre si celui-ci est occupé. Lisez le vrai port dans la sortie de démarrage ou repérez-le avec ss -tlnp : t3 status ne l'affiche pas. Le serveur local parle HTTP simple. Avec --tailscale-serve ou t3 pair --tailscale, Tailscale Serve ajoute le HTTPS devant, sur le port 443 du tailnet. N'ouvrez jamais le port local sur l'adresse publique du VPS.
Mon abonnement Claude Pro ou Max risque-t-il quelque chose avec T3 Code ?
Anthropic ne tranche pas votre cas. Sa page juridique autorise un utilisateur à se connecter au binaire Claude Code non modifié avec son propre abonnement. Une note de l'Agent SDK interdit, sauf accord préalable, aux développeurs tiers de proposer la connexion claude.ai dans des produits construits sur ce SDK, et T3 Code est construit sur ce SDK. La FAQ de T3 affirme rester dans les conditions d'utilisation, mais c'est la position de l'éditeur. Si votre compte compte pour vous, demandez au support d'Anthropic, ou utilisez une clé API.
Quelle différence entre T3 Connect et Tailscale pour joindre le serveur ?
T3 Connect ne demande aucune configuration réseau : le trafic passe par un tunnel Cloudflare, avec cloudflared sur l'hôte, et chaque appareil se connecte au même compte T3. Il est gratuit pour l'instant selon T3, avec 3 machines par compte par défaut. Tailscale Serve garde le chemin dans votre propre tailnet, avec un certificat HTTPS pour votre machine. Le choix porte sur les acteurs qui se placent entre le téléphone et un serveur qui détient vos identifiants.
Puis-je faire tourner T3 Code en root pour aller plus vite ?
Ce n'est pas recommandé. Le bac à sable de Chrome ne démarre pas en root, et la seule façon de contourner ce blocage, T3CODE_SERVER_BROWSER_SANDBOX=0, désactive le bac à sable. La documentation de T3 Code prévient aussi qu'une installation en root est une installation séparée, avec sa propre identité T3 Connect. Créez un utilisateur dédié, activez son lingering avec sudo loginctl enable-linger, et ne lancez avec sudo que les commandes d'administration.