Blog
Exécuter Claude Code sur une VM cloud ou un serveur Linux headless et le contrôler depuis votre iPhone
L'agent peut tourner sur n'importe quelle machine Linux toujours allumée — une VM cloud, une machine de développement distante, un conteneur Docker — et votre iPhone devient la surface de contrôle, où que vous soyez.
Suivez les mises à jour produit et ingénierie de cette catégorie.
Voir la catégorieLa plupart des utilisateurs de Tactic Remote font tourner le serveur sur le même Mac où ils écrivent leur code. C'est le point de départ naturel. Mais la machine hôte n'a pas à être votre ordinateur portable, ni à se trouver sur le même bureau.
npx tacticremote fonctionne sur n'importe quelle machine Linux disposant de Node.js — une VM cloud, une machine de développement distante, un boîtier headless sous votre télévision, ou un conteneur Docker. Une fois lancé, l'application iOS se connecte via Cloudflare Tunnel et vous offre le même Chat Mode, Terminal Mode, Quick Prompts, notifications push et approbations en un seul geste qu'en réseau local.
Ce guide porte sur cette configuration : un agent qui tourne en continu sur un serveur distant, et un téléphone qui le contrôle de n'importe où.
Pourquoi faire tourner l'agent sur un serveur distant
Il y a plusieurs raisons de déplacer l'hôte hors de votre ordinateur portable.
Tâches longues sans rester branché à un chargeur. Un refactoring de plusieurs heures, l'exécution d'une grande suite de tests ou une session de développement exploratoire peuvent dépasser votre envie de garder l'écran ouvert. Une VM cloud tourne en continu. Vous fermez l'ordinateur, le travail continue.
Accès permanent depuis le téléphone. Si le serveur est toujours disponible, vous n'avez pas besoin de le démarrer avant de quitter la maison. Ouvrez l'application, la session est là.
Charges de travail proches de la CI. Certaines équipes utilisent des agents IA pour rédiger des correctifs, exécuter des suites de tests sur des branches ou pré-examiner des pull requests. Un serveur Linux dédié — distinct des machines des développeurs individuels — est un hôte naturel pour cela.
Ressources supplémentaires. Déléguer les tâches de l'agent à une machine disposant de plus de CPU ou de RAM, ou à une machine proche du point d'accès à l'API, peut réduire le temps d'exécution sur les tâches importantes.
Mac non requis. Si votre machine principale est un poste de travail Windows mais que vous disposez d'un serveur Linux, vous pouvez y faire tourner l'agent et le contrôler quand même depuis votre iPhone.
Prérequis
Avant de suivre les étapes ci-dessous, vous avez besoin de :
- Un serveur ou une VM Linux accessible depuis internet (toute distribution ; Ubuntu 22.04 ou ultérieur est ce que nous testons)
- Node.js 16 ou ultérieur installé (
node --versionpour vérifier) - L'agent IA que vous souhaitez utiliser, installé et authentifié sur ce serveur :
- Claude Code : suivez les instructions d'installation d'Anthropic, puis
claude login - Codex : installez et authentifiez-vous selon la documentation d'OpenAI
- Amp : installez et connectez-vous selon la documentation d'Amp
- Claude Code : suivez les instructions d'installation d'Anthropic, puis
- L'application iOS installée sur votre iPhone (App Store)
Vous n'avez pas besoin de l'application menu bar macOS ni de l'application Windows — ce sont des interfaces graphiques optionnelles pour l'usage sur poste fixe. Sur un serveur headless, npx tacticremote est tout ce dont vous avez besoin côté hôte.
Installer et lancer le serveur
npx tacticremote télécharge et exécute le serveur sans étape d'installation globale. Sur un serveur fraîchement configuré :
Au premier lancement, il affiche quelque chose comme :
Pour un serveur distant (sans réseau local, sans mDNS), vous vous connecterez via Cloudflare Tunnel. L'API Key affichée ci-dessus est ce qui authentifie votre iPhone. Copiez-la — vous la saisirez dans l'application lors du jumelage.
Si vous souhaitez épingler une version spécifique plutôt que de toujours récupérer la dernière :
Maintenir le serveur actif avec systemd
Lancer npx tacticremote dans un shell fait démarrer le serveur, mais le processus s'arrête quand la session shell se termine. Pour l'exécuter en tant que vrai service en arrière-plan qui démarre au démarrage et redémarre en cas de plantage, utilisez systemd.
Créez un fichier d'unité. Remplacez youruser par l'utilisateur Linux qui doit posséder le processus, et ajustez le WorkingDirectory vers un répertoire de projet si vous souhaitez que l'agent démarre dans un dossier spécifique.
Activez et démarrez le service :
Consultez les journaux à tout moment avec :
Quelques remarques sur le fichier d'unité :
After=network-online.targetgarantit que le réseau est disponible avant que le serveur ne démarre, ce qui est important au démarrage si Cloudflare Tunnel doit se connecter.Restart=on-failureavec un délai de 5 secondes signifie que le serveur récupère automatiquement des erreurs transitoires sans rebondir immédiatement en boucle serrée.- Si
npxne se trouve pas à/usr/bin/npx, trouvez le bon chemin avecwhich npxet mettez à jourExecStarten conséquence. Vous pouvez aussi utiliser le chemin complet vers un binairetacticremoteinstallé globalement si vous préféreznpm install -g tacticremoteà npx. - La ligne
Environment=HOMEgarantit que Node/npm peut trouver le cache et les paquets globaux dans le répertoire personnel du bon utilisateur, ce qui peut être important lors d'une exécution avec élévation sudo.
Connecter l'iPhone via Cloudflare Tunnel
Sur un serveur distant, il n'y a pas de réseau local partagé, donc la découverte mDNS ne fonctionne pas. La méthode de connexion pour cette configuration est Cloudflare Tunnel.
Tactic Remote intègre Cloudflare Tunnel nativement — aucune installation séparée de cloudflared n'est nécessaire pour le tunnel lui-même. Activez-le en passant un paramètre au démarrage du serveur :
Ou si vous utilisez systemd, mettez à jour le fichier d'unité :
Quand Cloudflare Tunnel est actif, le serveur affiche une URL trycloudflare.com :
Sur l'iPhone :
- Ouvrez Tactic Remote
- Appuyez sur Add Host et choisissez Manual
- Entrez l'URL
trycloudflare.comcomme adresse de l'hôte - Entrez l'API Key figurant dans la sortie du serveur
- Appuyez sur Connect
La connexion est chiffrée de bout en bout via Cloudflare. Votre code et la sortie du terminal ne transitent par aucun relais cloud de Tactic Remote — il n'en existe pas. Le trafic va du serveur vers la périphérie de Cloudflare, à travers le tunnel, et directement vers l'application iOS.
Pour une configuration permanente, vous pouvez utiliser un Cloudflare Tunnel nommé rattaché à votre propre domaine plutôt que l'adresse trycloudflare.com éphémère. Cela maintient l'URL de jumelage stable à travers les redémarrages. Consultez le guide de configuration de Cloudflare Tunnel pour cette démarche.
Note de sécurité
Dans cette configuration — serveur distant, Cloudflare Tunnel, API Key — les propriétés de sécurité pertinentes sont les suivantes :
- Le port 8765 du serveur n'a pas besoin d'être ouvert sur internet. Cloudflare Tunnel crée une connexion sortante de votre serveur vers la périphérie de Cloudflare ; aucun port entrant n'a besoin d'être exposé.
- L'authentification par API Key signifie que seuls les appareils connaissant la clé peuvent se connecter. Définissez une clé robuste ou utilisez celle générée aléatoirement.
- Le mode LAN utilise du
ws://simple. Sur un serveur distant vous n'utilisez pas le mode LAN, donc ceci ne s'applique pas — le trafic Cloudflare Tunnel est chiffré en TLS.
Si votre serveur se trouve dans un VPC privé, Cloudflare Tunnel est la façon de l'atteindre sans ouvrir de trous dans un pare-feu.
Multi-agent sur le serveur
La configuration de serveur distant prend en charge les mêmes choix d'agents qu'un hôte Mac ou Windows local. Lorsque vous créez une nouvelle session dans l'application iOS, un sélecteur par session vous permet de choisir Claude Code, Codex ou Amp — selon les agents installés sur le serveur.
Chaque session est indépendante. Vous pouvez avoir une session Claude Code exécutant une longue tâche de test et une session Codex sur une branche différente en même temps. L'application iOS bascule entre elles.
Les notifications push fonctionnent dans cette configuration. Quand l'agent termine, marque une pause pour approbation, ou se termine de façon inattendue, votre iPhone reçoit une notification. Pour les tâches longues que vous vérifiez périodiquement plutôt que de surveiller en permanence, c'est l'atout clé — vous n'avez pas besoin de garder l'application ouverte.
Exécution dans Docker
Si votre environnement serveur est basé sur Docker, vous pouvez faire tourner npx tacticremote à l'intérieur d'un conteneur. Les principales considérations sont :
- Le conteneur a besoin de l'agent (Claude Code, Codex, Amp) installé et authentifié
- Le port 8765 doit être exposé si vous utilisez le mode LAN (non nécessaire pour Cloudflare Tunnel)
- Pour Cloudflare Tunnel, le conteneur a besoin d'un accès internet sortant
- La gestion des processus à l'intérieur du conteneur (utilisez CMD ou un superviseur plutôt que systemd)
Un fragment de Dockerfile minimal :
L'authentification persistante pour l'agent (le répertoire ~/.claude de Claude Code, par exemple) doit être montée en tant que volume pour survivre aux redémarrages du conteneur.
Mises en garde
L'agent a toujours besoin de ses identifiants sur le serveur. npx tacticremote ne gère pas l'authentification pour Claude Code, Codex ou Amp. Ces agents doivent être installés et connectés sur la machine serveur avant que Tactic Remote puisse démarrer des sessions avec eux.
Cloudflare Tunnel ajoute une légère surcharge de latence. Pour un usage interactif, cela est généralement imperceptible (moins de 100 ms dans la plupart des régions). Pour une sortie de terminal à très haut débit, c'est perceptible. Le mode LAN est plus rapide quand il est disponible, mais il exige que le téléphone et le serveur soient sur le même réseau.
La version de Node.js est importante. Node 16 est le minimum ; Node 20 LTS est recommandé. Vérifiez avec node --version.
npx télécharge le paquet au premier lancement. Si votre serveur a des règles de sortie strictes, autorisez le registre npm. Sinon, installez globalement avec npm install -g tacticremote et utilisez tacticremote directement dans le fichier d'unité systemd.
tmux est utilisé pour la persistance des sessions sous Linux. Assurez-vous que tmux est installé (apt install tmux ou équivalent). Si tmux est absent, les sessions ne persisteront pas à travers les reconnexions.
L'offre gratuite de l'application iOS convient à cette configuration. Chat Mode, Terminal Mode, notifications push et multi-agent sont disponibles gratuitement. Pro ajoute des fonctionnalités supplémentaires. Tarification : Gratuit / Pro 2,99 $ par mois / 19,99 $ par an.
Faire tourner l'agent sur un serveur toujours allumé est l'utilisation la plus efficace du modèle de contrôle à distance : l'agent travaille toute la nuit, pendant les réunions, pendant les vols, et votre téléphone est la fenêtre par laquelle vous suivez l'avancement.
Si vous configurez cela pour la première fois, commencez par l'approche npx tacticremote --tunnel --api-key YOUR_SECRET_KEY de base, confirmez la connectivité de bout en bout depuis l'iPhone, puis ajoutez le service systemd pour la fiabilité.
Voir aussi
- Comment exécuter Claude Code depuis votre iPhone — le guide de configuration fondamental
- Configuration de Cloudflare Tunnel — tunnels nommés, domaines personnalisés et configuration persistante
- Choix de conception multiplateforme — pourquoi la même application iOS fonctionne sur Mac, Windows, Linux et CLI
Essayez Tactic Remote
Pilotez vos agents de programmation depuis votre téléphone
Connectez-vous à Claude Code, Codex et aux autres agents sur votre Mac, PC Windows ou Linux. Consultez leur progression et envoyez la prochaine instruction depuis votre iPhone ou iPad.