ssh local. O que estava rodando do outro lado — o build, o tail -f, o deploy pela metade — não tem nada a ver com isso.
O TYBA leva essa distinção a sério: toda sessão SSH nasce dentro de um tmux no host. O ssh é o cano. A sessão é do host.
O tmux que você não vê
Ao conectar, o comando que o TYBA manda para o host é este:-Aé o que faz reatar em vez de criar outra. O mesmo pane, voltando à mesma sessão, é semprenew-session -Acom o mesmo nome.status offeprefix Noneexistem para o tmux ser invisível. Não há barra verde no rodapé, e o seuCtrl-Bnão é sequestrado — o TYBA controla essa sessão pelo CLI, não por prefixo.env -u TMUXlimpa a variável dentro do pane. Consequência: o seu tmux pessoal funciona lá dentro, normalmente, sem reclamar de aninhamento.
history-limit 5000).
Nada disso toca na configuração de tmux do host. As opções são aplicadas
-t naquela sessão, não no servidor.tmux não é obrigatório — e a consequência é dura
Repare no|| do comando: sem tmux no host, o TYBA cai em exec $SHELL -l. Um login shell normal, direto no cano.
Quando o cano cai
A sessão não morre. Ela entra em reconectando, e o pane recebe um overlay:reconectando… a sessão continua viva no hostPor trás, o TYBA tenta reatar com backoff exponencial, e espera antes de cada tentativa:
As esperas somam cerca de 5 minutos antes de desistir. Essa janela não é arbitrária: ela é do tamanho de um laptop que dormiu, de um túnel de metrô, de uma troca de VPN.
Passados os ~5 minutos, o estado vira conexão perdida e o overlay troca o spinner por um botão Reconectar:
conexão perdida
a sessão continua viva no host
Reconectar
O botão roda exatamente a mesma máquina — sonda, reata, e o backoff recomeça do zero. Desistir é só parar de insistir sozinho. Não é encerrar nada no host.
Reatar ou encerrar: como o TYBA decide
Quando o processossh termina, o TYBA não adivinha o motivo — ele pergunta ao host, com tmux has-session, e decide pelo código de saída:
O último caso é uma escolha deliberada: errar reatando custa uma tentativa; errar para o outro lado descarta trabalho vivo. Um host inalcançável responde
255, e um host inalcançável é exatamente o caso em que a sessão continua lá.1 e 127 o pane fecha — que é o que você pediu quando digitou exit, e a única coisa honesta a fazer quando não há tmux.
Fechar a aba mata a sessão no host
Fechar o pane, a aba ou o workspace encerra a sessão de verdade: o TYBA mandatmux kill-session para aquele nome e mata o cliente órfão que possa ter ficado pendurado.
O kill é sempre da sessão, nunca kill-server. O tmux do dono do host e o de outras instalações do TYBA não são tocados.
O install_id: de quem o TYBA pode matar
Toda sessão se chamatyba-<install_id>-<uuid>. O install_id é um identificador de 12 caracteres, gerado uma única vez e guardado no banco local do TYBA (ssh.install_id). Ele é estável entre boots e diferente em cada instalação.
Ele existe para responder a uma pergunta só: o que este TYBA tem autoridade para matar?
Ao conectar num host, o TYBA lista as sessões tmux de lá e recolhe as órfãs — e órfã tem definição estreita:
- o nome começa com
tyba-<install_id>-— o dele, não o de outro; e - o
uuidnão é conhecido pelo banco local.
O seu tmux é seu
Sessões chamadas
work, 0 ou até tyba não casam o prefixo. Nunca são tocadas.Laptop não mata desktop
O TYBA do laptop não tem autoridade sobre a sessão do TYBA do desktop no mesmo host — o SQLite dele não prova nada sobre ela.
O que sobrevive a quê
Fechar o app
Otmux sobrevive — mas o que o TYBA faz com ele no próximo boot depende da sua preferência em Configurações → Code → Ao abrir o app:
Sessões SSH nunca são esquecidas do banco local, em nenhuma das três opções. Isso é proposital: esquecer o
uuid faria a sessão viva no host virar órfã do próprio prefixo, e o GC a mataria na próxima conexão. Você perderia o build de sexta por abrir o app na segunda.Veja também
Hosts e grupos
O cadastro, o
ssh_config e o multiplexing.Broadcast
Um grupo, N panes, uma digitação só.
Agente via SSH
O que você perde ao rodar um agente do outro lado do cano.