# mosh

Mosh mantiene viva una sesión cuando la red no coopera: cambia de wifi a datos
móviles, cierra la tapa, sal del alcance — vuelve a conectar y la sesión sigue
ahí. Tessera lo combina con algo que ningún otro cliente mosh de iOS ofrece:
**historial real**.

Mosh requiere `mosh-server` instalado en el host y, por omisión, los puertos
UDP 60000–61000 abiertos. Elígelo por host en el
[ajuste de transporte del editor de hosts](https://bambouville.com/docs/es/connections/#transporte-ssh-o-mosh).

## Itinerancia

Una sesión mosh está ligada a tu identidad, no a tu ruta de red. Tessera sigue
conectada a través de los saltos wifi ↔ datos móviles, los cambios de dirección
y el reposo/activación — la sesión simplemente continúa donde los paquetes lo
dejaron. Por una VPN o una tailnet funciona igual; mosh solo necesita UDP para
llegar al servidor.

## Historial real

El mosh estándar no tiene historial: por diseño solo sincroniza la pantalla
visible, así que lo que se sale por arriba nunca se envía. Todos los demás
clientes mosh de iOS heredan ese límite y te remiten al modo copia de tmux.

Tessera sintetiza el historial en su lugar. En una sesión mosh respaldada por
tmux, el terminal viaja por UDP mientras un segundo canal lateral SSH habla con
tmux; desplazarte hacia arriba trae el historial real por ese canal y lo muestra
en su sitio — buscable con
[buscar en el terminal](https://bambouville.com/docs/es/keyboard/#buscar-en-el-terminal), seleccionable,
intacto.

![Una sesión mosh en Tessera desplazada hacia atrás por un git log largo, con los mensajes de commit y los diffstats representados por completo y el prompt del shell visible más abajo.](https://bambouville.com/docs/assets/img/mosh-scrollback.png)

*Una sesión mosh desplazada muy atrás en un git log — historial que el mosh estándar habría descartado.*

Cómo se comporta mientras lees:

- Desplazarte hacia arriba revela el historial **congelado en su sitio**: la
  salida nueva no te arrastra de vuelta abajo.
- Volver al final (o escribir) descarta la superposición y te deja en la
  pantalla en vivo y al día.
- Un impulso fuerte sigue su curso: la primera página carga al instante y el
  resto del historial llega en streaming por detrás, hasta la profundidad que
  el servidor conserve.

## Qué necesita

- **Un modo de inicio con tmux.** La síntesis del historial funciona con las
  sesiones de **tmux automático** y **tmux con nombre** (tmux automático es el
  modo por omisión). Un host mosh lanzado con un comando personalizado no tiene
  tmux al que preguntar, así que se desplaza como el mosh estándar.
- **Historial del servidor.** La profundidad está limitada por el
  `history-limit` de tmux en el servidor: Tessera solo puede mostrar lo que
  tmux conservó.
- **La pantalla primaria.** Los programas a pantalla completa como `vim`,
  `less` y `htop` gestionan el desplazamiento por su cuenta; Tessera les
  reenvía tu desplazamiento como entrada, igual que hace cualquier terminal.

## Mosh y todo lo demás

El mismo canal lateral SSH que trae el historial lleva también las
[ventanas y paneles de tmux](https://bambouville.com/docs/es/tmux/) y el
[reenvío de puertos](https://bambouville.com/docs/es/port-forwarding/#mosh-y-el-reenvío) de los hosts mosh, y
el [panel de archivos](https://bambouville.com/docs/es/files/) abre su propio puente SSH — así que las
transferencias de archivos y los túneles funcionan igual sobre mosh que sobre
SSH a secas.

Una salvedad: **el UDP de mosh no puede atravesar un host de salto SSH**. En un
[host con cadena de saltos](https://bambouville.com/docs/es/connections/#hosts-de-salto), Tessera prueba
primero con mosh y recurre a SSH si el servidor es inalcanzable por UDP. Un
destino que sea alcanzable por UDP de todos modos — por una VPN o una tailnet,
pongamos — sigue funcionando como mosh.
