ssh local. Lo que estaba corriendo del otro lado — el build, el tail -f, el deploy a medias — no tiene nada que ver con eso.
TYBA se toma en serio esa distinción: toda sesión SSH nace dentro de un tmux en el host. El ssh es el caño. La sesión es del host.
El tmux que no ves
Al conectar, el comando que TYBA manda al host es este:-Aes lo que hace reatar en vez de crear otra. El mismo pane volviendo a la misma sesión es siemprenew-session -Acon el mismo nombre.status offyprefix Noneexisten para que el tmux sea invisible. No hay barra verde abajo, y tuCtrl-Bno es secuestrado — TYBA maneja esa sesión por el CLI, no por prefijo.env -u TMUXlimpia la variable dentro del pane. Consecuencia: tu tmux personal funciona ahí adentro, normal, sin quejarse de anidamiento.
history-limit 5000).
Nada de esto toca la configuración de tmux del host. Las opciones se aplican
-t a esa sesión, no al servidor.tmux no es obligatorio — y la consecuencia es dura
Mira el|| del comando: sin tmux en el host, TYBA cae en exec $SHELL -l. Un login shell normal, directo por el caño.
Cuando el caño se cae
La sesión no muere. Pasa a reconnecting, y el pane recibe un overlay:reconnecting… the session is still alive on the hostPor detrás, TYBA reintenta el reattach con backoff exponencial, y espera antes de cada intento:
Las esperas suman cerca de 5 minutos antes de desistir. Esa ventana no es arbitraria: es del tamaño de un laptop que se durmió, de un túnel de metro, de un cambio de VPN.
Pasados esos ~5 minutos, el estado se vuelve connection lost y el overlay cambia el spinner por un botón Reconnect:
connection lost
the session is still alive on the host
Reconnect
El botón corre exactamente la misma máquina — sondea, reata, y el backoff empieza de cero. Desistir es solo dejar de insistir solo. No termina nada en el host.
Reatar o terminar: cómo decide TYBA
Cuando el procesossh termina, TYBA no adivina el motivo — le pregunta al host, con tmux has-session, y decide por el código de salida:
El último caso es una elección deliberada: equivocarse reatando cuesta un intento; equivocarse para el otro lado descarta trabajo vivo. Un host inalcanzable responde
255, y un host inalcanzable es exactamente el caso en que la sesión sigue ahí.1 y 127 el pane se cierra — que es lo que pediste cuando escribiste exit, y lo único honesto que hacer cuando no hay tmux.
Cerrar la pestaña mata la sesión en el host
Cerrar el pane, la pestaña o el workspace termina la sesión de verdad: TYBA mandatmux kill-session para ese nombre y mata al cliente huérfano que pueda haber quedado colgado.
El kill es siempre de la sesión, nunca kill-server. El tmux del dueño del host y el de otras instalaciones de TYBA no se tocan.
El install_id: a quién puede matar TYBA
Toda sesión se llamatyba-<install_id>-<uuid>. El install_id es un identificador de 12 caracteres, generado una sola vez y guardado en la base local de TYBA (ssh.install_id). Es estable entre boots y distinto en cada instalación.
Existe para responder una sola pregunta: ¿qué tiene autoridad para matar este TYBA?
Al conectar a un host, TYBA lista las sesiones tmux de ahí y recoge las huérfanas — y huérfana tiene una definición estrecha:
- el nombre empieza con
tyba-<install_id>-— el suyo, no el de otro; y - el
uuidno es conocido por la base local.
Tu tmux es tuyo
Sesiones llamadas
work, 0 o hasta tyba no casan el prefijo. Nunca se tocan.El laptop no mata al desktop
El TYBA del laptop no tiene autoridad sobre la sesión del TYBA del desktop en el mismo host — su SQLite no prueba nada sobre ella.
Qué sobrevive a qué
Cerrar la app
Eltmux sobrevive — pero lo que TYBA hace con él en el próximo boot depende de tu preferencia en Settings → Code → On app start:
Las sesiones SSH nunca se olvidan de la base local, en ninguna de las tres opciones. Es a propósito: olvidar el
uuid haría que la sesión viva en el host se volviera huérfana de su propio prefijo, y el GC la mataría en la próxima conexión. Perderías el build del viernes por abrir la app el lunes.Ver también
Hosts y grupos
El registro, el
ssh_config y el multiplexing.Broadcast
Un grupo, N panes, una sola escritura.
Agente por SSH
Lo que pierdes al correr un agente del otro lado del caño.