#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 -p 2222
cmux ssh user@remote -i ~/.ssh/id_ed25519

cmux 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

BandeiraDescrição
--nameDefina o título do espaço de trabalho
-p, --portPorta SSH (padrão 22)
-i, --identityCaminho para o arquivo de identidade
-o, --ssh-optionPasse opções SSH arbitrárias (por exemplo, -o StrictHostKeyChecking=no)
--no-focusCrie o espaço de trabalho sem mudar para ele

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=true

Use 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=Freestyle

Os 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%20PRs

Use 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.png

Crie 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âmetroSignificado
hostHost SSH necessário ou alias ~/.ssh/config.
userUsuário SSH opcional. cmux combina-o com host como user@host.
portPorta SSH opcional, de 1 a 65535.
title / nameTítulo opcional do espaço de trabalho. Use apenas um título ou nome.
connect-timeoutValor opcional de ConnectTimeout em segundos, de 1 a 600.
server-alive-intervalValor opcional de ServerAliveInterval em segundos, de 1 a 3600.
server-alive-count-maxValor opcional de ServerAliveCountMax, de 1 a 100.
host-key-policyPolítica StrictHostKeyChecking opcional: aceitar novo, perguntar, estrito ou sim.
no-focusBooleano 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:

RecursoComo
Proxy de tráfego do navegadorSOCKS5 e HTTP CONNECT através do canal stdio do daemon
Retransmissão CLITúnel TCP reverso com autenticação HMAC-SHA256 para que processos remotos possam chamar comandos cmux localmente
Gerenciamento de sessãoPersiste 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.