#SSH

cmux ssh crée un espace de travail pour une machine distante. Les volets du navigateur transitent par le réseau distant, les fichiers glissent et déposent via scp, les agents de codage envoient des notifications à votre barre latérale locale et les sessions se reconnectent lors des dépôts.

#Utilisation

cmux ssh user@remote
cmux ssh user@remote --name "dev server"
cmux ssh user@remote -p 2222
cmux ssh user@remote -i ~/.ssh/id_ed25519

cmux ssh lit votre ~/.ssh/config pour les alias d'hôte, les fichiers d'identité et les paramètres de proxy. Tous les drapeaux reflètent leurs équivalents ssh.

#Drapeaux

DrapeauDescriptif
--nameDéfinir le titre de l'espace de travail
-p, --portPort SSH (22 par défaut)
-i, --identityChemin d'accès au fichier d'identité
-o, --ssh-optionPassez des options SSH arbitraires (par exemple -o StrictHostKeyChecking=no)
--no-focusCréez l'espace de travail sans y accéder

Utilisez les liens profonds cmux SSH lorsqu'un site Web ou un outil souhaite proposer un bouton Ouvrir dans cmux. Le lien ouvre cmux, affiche une invite de confirmation, puis exécute la commande cmux ssh équivalente après confirmation de l'utilisateur.

cmux://ssh?host=dev.example.com
cmux://ssh?host=dev.example.com&user=alice&port=2222&title=GPU%20box
cmux://ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token
cmux://ssh?host=dev.example.com&host-key-policy=accept-new&no-focus=true

Utilisez l'URL de secours cmux.com pour les boutons du site Web. Il ouvre le lien natif et affiche le téléchargement si cmux n'est pas installé.

https://cmux.com/deeplink/ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token&title=Freestyle

Les boutons d’invite et de règles utilisent la même forme de secours. Les virgules, les deux-points et les signes plus littéraux sont conservés lorsqu'ils sont codés en URL :

https://cmux.com/deeplink/prompt?text=Review%20this%20branch
https://cmux.com/deeplink/rules?name=freestyle&text=Prefer%20commas,%20colons:%20and%20small%20PRs

Utilisez l'icône SVG pour les boutons du tableau de bord ou le logo PNG lorsqu'une image raster est requise :

https://cmux.com/cmux-icon.svg
https://cmux.com/logo.png

Créez l'URL de secours avec URLSearchParams afin que les titres, les alias d'hôte et les noms d'utilisateur soient codés en toute sécurité :

const params = new URLSearchParams({
  host: "workspace123.vm-ssh.freestyle.sh",
  user: "workspace123,session-token",
  title: "Freestyle",
});

const href = "https://cmux.com/deeplink/ssh?" + params.toString();
ParamètreSignification
hostHôte SSH requis ou alias ~/.ssh/config.
userUtilisateur SSH facultatif. cmux le combine avec l'hôte en tant qu'utilisateur@hôte.
portPort SSH en option, 1 à 65535.
title / nameTitre de l’espace de travail facultatif. Utilisez un seul titre ou nom.
connect-timeoutValeur ConnectTimeout facultative en secondes, 1 à 600.
server-alive-intervalValeur ServerAliveInterval facultative en secondes, de 1 à 3 600.
server-alive-count-maxValeur ServerAliveCountMax facultative, 1 à 100.
host-key-policyPolitique StrictHostKeyChecking facultative : accept-new, request, strict ou yes.
no-focusBooléen facultatif. true crée l'espace de travail sans y accéder.

Utilisez cmux:// pour l'application stable, cmux-nightly:// pour Nightly et cmux-dev:// pour le débogage ou les versions de développement balisées.

Les liens externes ne peuvent pas transmettre de fichiers d'identité, d'options SSH brutes, de commandes, de ProxyCommand ou de règles de transfert. Mettez plutôt les clés, ProxyJump, HostName et les options avancées dans ~/.ssh/config. cmux affiche l'aperçu de la commande et demande à l'utilisateur de faire confiance à la cible SSH avant de se connecter.

#Volets du navigateur

Les volets du navigateur dans un espace de travail distant acheminent tout le trafic HTTP et WebSocket via le réseau de la machine distante. Tapez localhost:3000 et vous regardez le serveur de développement exécuté sur la machine distante. Pas d'indicateurs -L, pas de redirection de port manuelle. Chaque espace de travail distant dispose d'un magasin de cookies isolé afin que les sessions soient définies par connexion.

#Glisser et déposer

Faites glisser une image ou un fichier dans un terminal distant et cmux le télécharge via scp via la connexion SSH existante. cmux détecte le processus SSH de premier plan par TTY et achemine le téléchargement via le multiplexage ControlMaster.

#Notifications

Les processus sur la machine distante peuvent exécuter des commandes cmux qui s'exécutent sur votre instance locale. Lorsqu'un agent de codage appelle cmux notify sur la boîte distante, la notification apparaît dans votre barre latérale locale. L'anneau bleu s'allume sur l'onglet de l'espace de travail. Cmd+Shift+U y accède. Le spam de notification provenant de connexions irrégulières est supprimé avec un temps de recharge par hôte.

#Agents de codage via SSH

cmux claude-teams et cmux omo fonctionnent tous deux dans les sessions SSH. Le démon de relais Go sur l'hôte distant gère la même traduction tmux-compat que la CLI Swift locale. Les agents Teammate apparaissent lorsque les cmux natifs se divisent sur votre machine locale pendant que le calcul s'exécute sur la machine distante.

# Inside an SSH session:
cmux claude-teams
cmux omo

#Reconnecter

Lorsque la connexion est interrompue, cmux se reconnecte avec une interruption exponentielle (3 s, 6 s, 12 s, jusqu'à 60 s). La session à distance persiste et cmux se rattache à la reconnexion, redimensionnant avec la sémantique du plus petit écran gagnant. Les options keepalive par défaut (ServerAliveInterval=20, ServerAliveCountMax=2) sont injectées à moins que votre configuration ne les définisse déjà.

#Démon relais

Lors de la première connexion, cmux sonde l'hôte distant (uname -s, uname -m) et télécharge un binaire cmuxd-remote versionné. Le binaire parle JSON-RPC sur stdio et gère trois choses :

CaractéristiqueComment
Proxy du trafic du navigateurSOCKS5 et HTTP CONNECT sur le canal stdio du démon
Relais CLITunnel TCP inversé avec authentification HMAC-SHA256 afin que les processus distants puissent appeler des commandes cmux localement
Gestion des séancesMaintient les sessions lors des reconnexions, coordonne le redimensionnement du PTY sur plusieurs pièces jointes

Le binaire du démon est stocké dans ~/.cmux/bin/cmuxd-remote/<version>/<os>-<arch>/cmuxd-remote sur l'hôte distant et vérifié par rapport à un manifeste SHA-256 intégré dans l'application.