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 omoReconectar
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.