#SSH
cmux ssh cria um espaço de trabalho para uma máquina remota. Os painéis do navegador roteiam pela rede remota, os arquivos são arrastados e soltos via scp, os agentes de codificação enviam notificações para a barra lateral local e as sessões são reconectadas quando descartadas.
#Uso
cmux ssh user@remote
cmux ssh user@remote --name "dev server"
cmux ssh user@remote --command 'omp "investigate auth"'
cmux ssh user@remote -p 2222
cmux ssh user@remote -i ~/.ssh/id_ed25519
cmux ssh user@remote --transport mosh
cmux mosh user@remote
cmux mosh-tmux user@remote
cmux mosh-tmux user@remote --session agent-maincmux ssh lê seu ~/.ssh/config para aliases de host, arquivos de identidade e configurações de proxy. Todos os sinalizadores espelham seus equivalentes ssh.
#Bandeiras
| Bandeira | Descrição |
|---|---|
--name | Defina o título do espaço de trabalho |
--command | Execute o texto do comando uma vez no terminal remoto inicial após iniciar o shell |
-p, --port | Porta SSH (padrão 22) |
-i, --identity | Caminho para o arquivo de identidade |
-o, --ssh-option | Passe opções SSH arbitrárias (por exemplo, -o StrictHostKeyChecking=no) |
--transport | Transporte do terminal interativo: ssh (padrão) ou mosh |
--no-focus | Crie o espaço de trabalho sem mudar para ele |
#Transporte de terminal Mosh
Use cmux ssh user@remote --transport mosh quando o terminal interativo precisar sobreviver a trocas de Wi-Fi, VPN ou hotspot e a suspensão ou reativação. O Mosh transporta apenas o PTY do terminal; o SSH continua gerenciando metadados remotos, configuração e controle do serviço cmux, proxy do navegador, uploads e reconexões.
O cmux requer Mosh 1.4 ou mais recente localmente e verifica o mosh-server remoto antes de iniciar. Se o cliente estiver ausente ou for incompatível, se o servidor estiver ausente ou se a verificação remota falhar, o cmux explica o motivo e continua por SSH.
Crie um workspace Mosh que cria ou conecta uma sessão tmux nomeada (padrão: main). O perfil tmux persiste após reconexão e restauração da sessão do app. É um terminal tmux com roaming, não o espelho nativo de cmux ssh-tmux. --session <name> escolhe a sessão; as demais opções correspondem a cmux mosh. Sem Mosh, o mesmo perfil roda por SSH.
#Links diretos SSH
Use links diretos SSH do cmux quando um site ou ferramenta quiser oferecer um botão Abrir no cmux. O link abre o cmux, mostra um prompt de confirmação e executa o comando cmux ssh equivalente após a confirmação do usuário.
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=trueUse o URL substituto cmux.com para botões de sites. Ele abre o link nativo e mostra o download caso o cmux não esteja instalado.
https://cmux.com/deeplink/ssh?host=workspace123.vm-ssh.freestyle.sh&user=workspace123%2Csession-token&title=FreestyleOs botões de prompt e regras usam o mesmo formato substituto. Vírgulas, dois-pontos e sinais de adição literais são preservados quando são codificados em URL:
https://cmux.com/deeplink/prompt?text=Review%20this%20branch
https://cmux.com/deeplink/rules?name=freestyle&text=Prefer%20commas,%20colons:%20and%20small%20PRsUse o ícone SVG para botões do painel ou o logotipo PNG quando uma imagem raster for necessária:
https://cmux.com/cmux-icon.svg
https://cmux.com/logo.pngCrie o URL substituto com URLSearchParams para que títulos, aliases de host e nomes de usuário sejam codificados com segurança:
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();| Parâmetro | Significado |
|---|---|
host | Host SSH necessário ou alias ~/.ssh/config. |
user | Usuário SSH opcional. cmux combina-o com host como user@host. |
port | Porta SSH opcional, de 1 a 65535. |
title / name | Título opcional do espaço de trabalho. Use apenas um título ou nome. |
connect-timeout | Valor opcional de ConnectTimeout em segundos, de 1 a 600. |
server-alive-interval | Valor opcional de ServerAliveInterval em segundos, de 1 a 3600. |
server-alive-count-max | Valor opcional de ServerAliveCountMax, de 1 a 100. |
host-key-policy | Política StrictHostKeyChecking opcional: aceitar novo, perguntar, estrito ou sim. |
no-focus | Booleano opcional. true cria o espaço de trabalho sem mudar para ele. |
Use cmux:// para o aplicativo estável, cmux-nightly:// para Nightly e cmux-dev:// para Debug ou compilações dev marcadas.
Links externos não podem transmitir arquivos de identidade, opções SSH brutas, comandos, ProxyCommand ou regras de encaminhamento. Coloque chaves, ProxyJump, HostName e opções avançadas em ~/.ssh/config. cmux exibe a visualização do comando e exige que o usuário confie no destino SSH antes de se conectar.
#Painéis do navegador
Os painéis do navegador em um espaço de trabalho remoto roteiam todo o tráfego HTTP e WebSocket pela rede da máquina remota. Digite localhost:3000 e você verá o servidor de desenvolvimento em execução na caixa remota. Sem sinalizadores -L, sem encaminhamento manual de porta. Cada espaço de trabalho remoto obtém um armazenamento de cookies isolado para que as sessões tenham escopo por conexão.
#Arraste e solte
Arraste uma imagem ou arquivo para um terminal remoto e o cmux carrega-o via scp por meio da conexão SSH existente. cmux detecta o processo SSH em primeiro plano por TTY e roteia o upload por meio da multiplexação ControlMaster.
#Notificações
Os processos na máquina remota podem executar comandos cmux executados na sua instância local. Quando um agente de codificação chama cmux notify na caixa remota, a notificação aparece na barra lateral local. O anel azul acende na guia da área de trabalho. Cmd+Shift+U salta para ele. O spam de notificação de conexões instáveis é suprimido com um resfriamento por host.
#Agentes de codificação por SSH
cmux claude-teams e cmux omo trabalham dentro de sessões SSH. O daemon de retransmissão Go no host remoto lida com a mesma tradução tmux-compat que a CLI local do Swift faz. Os agentes do Teammate aparecem como divisões nativas do cmux em sua máquina local enquanto a computação é executada na caixa remota.
# Inside an SSH session:
cmux claude-teams
cmux omo#Reconectar
Quando a conexão cai, o cmux se reconecta com espera exponencial (3s, 6s, 12s, até 60s). A sessão remota persiste e o cmux é reconectado ao reconectar, redimensionando com a semântica de menor ganho de tela. As opções padrão de keepalive (ServerAliveInterval=20, ServerAliveCountMax=2) são injetadas, a menos que sua configuração já as defina.
#Daemon de retransmissão
Na primeira conexão, o cmux investiga o host remoto (uname -s, uname -m) e carrega um binário cmuxd-remote versionado. O binário fala JSON-RPC sobre stdio e lida com três coisas:
| Recurso | Como |
|---|---|
| Proxy de tráfego do navegador | SOCKS5 e HTTP CONNECT através do canal stdio do daemon |
| Retransmissão CLI | Túnel TCP reverso com autenticação HMAC-SHA256 para que processos remotos possam chamar comandos cmux localmente |
| Gerenciamento de sessão | Persiste sessões em reconexões, coordena o redimensionamento de PTY em vários anexos |
O binário daemon é armazenado em ~/.cmux/bin/cmuxd-remote/<version>/<os>-<arch>/cmuxd-remote no host remoto e verificado em um manifesto SHA-256 incorporado no aplicativo.