Ir al contenido

Persistencia y acceso remoto

Herdr mantiene los paneles en marcha en un servidor en segundo plano. Tu cliente de terminal puede desconectarse y volver más tarde.

Para los flujos de trabajo en local, por SSH y con herdr --remote, mira Cómo trabajar con Herdr.

Desconecta el cliente con ctrl+b q; los paneles y los agentes siguen en marcha. Vuelve a conectarte ejecutando herdr otra vez. Para la sesión y sus paneles con herdr server stop.

Cuando Herdr arranca de nuevo tras una parada completa del servidor, restaura la forma guardada de la sesión. Para saber qué sobrevive a la desconexión, al reinicio del servidor, a la reproducción del historial de pantalla, a la restauración nativa de la sesión del agente y al traspaso en caliente, mira Estado de la sesión y restauración.

Usa sesiones con nombre cuando quieras servidores de Herdr independientes.

Ventana de terminal
herdr session list
herdr session attach work
herdr session attach side-project
herdr session stop work
herdr session delete side-project

Una sesión con nombre tiene sus propios paneles, pestañas, espacios de trabajo, sockets y estado de ejecución. Comparte el mismo fichero de configuración global.

Al borrar una sesión, usa el nombre exacto que muestra herdr session list, mayúsculas incluidas. En sistemas de ficheros que no distinguen mayúsculas, herdr session delete foo se niega a borrar una sesión llamada Foo.

Usa --json en scripts:

Ventana de terminal
herdr session list --json
herdr session stop work --json
herdr session delete side-project --json

Para tener la máquina local y varias máquinas SSH en una sola ventana de Herdr, mira Conectar máquinas. Esa guía cubre la configuración, el cambio entre máquinas, las reconexiones, los ajustes y la automatización remota. Eliminar una máquina guardada solo desconecta el cliente; no para las sesiones de esa máquina.

Cómo trabajar con Herdr compara las vías de conexión. Entra por SSH en el servidor y ejecuta herdr allí para la vía al estilo tmux, usa máquinas SSH guardadas para trabajar con varias máquinas, o conéctate por SSH desde tu máquina local:

Ventana de terminal
herdr --remote workbox
herdr --remote ssh://tú@servidor:2222

En este modo, el servidor remoto es el dueño de los paneles en marcha y envía por SSH el contenido de sus terminales y el estado de la sesión. Tu Herdr local pinta la interfaz, con su barra lateral, sus menús y su tema. Como el cliente corre en local, Herdr puede llevar funciones del escritorio local a la sesión remota, como pegar una imagen del portapapeles: copia la imagen a un fichero temporal remoto y pega esa ruta.

Por defecto, herdr --remote usa tus atajos de teclado locales en esa conexión. Así conservas tu memoria muscular aunque el servidor remoto tenga otra configuración. Después de editar los atajos locales, usa la acción reload config de la interfaz para aplicarlos sin desconectarte. Usa --remote-keybindings server cuando prefieras la configuración del servidor remoto. Los atajos de comandos personalizados locales no se envían, porque esos comandos se ejecutarían en el host remoto.

Para los destinos habituales, usa tu configuración de SSH:

Host workbox
HostName servidor.ejemplo.com
User tú
Port 2222

Y conéctate con:

Ventana de terminal
herdr --remote workbox

La conexión remota y las máquinas SSH guardadas admiten clientes locales Linux, macOS y Windows conectando a hosts Linux o macOS en x86_64 y aarch64, o a hosts Windows en x86_64. Las versiones local y remota no tienen que coincidir siempre que ambas admitan la generación estable de puntos de acceso. En hosts Linux y macOS, Herdr prefiere un herdr compatible que ya esté en el PATH remoto, y después comprueba las rutas habituales de instalación directa, Homebrew, mise y perfiles de Nix. En hosts Windows, Herdr comprueba el PATH y la versión gestionada activa. Si no hay un binario compatible, las ejecuciones interactivas ofrecen instalar o actualizar uno; las no interactivas fallan en vez de modificar el host. Las instalaciones en Linux y macOS usan ~/.local/bin/herdr; las de Windows usan el paquete completo de Windows con su runtime ConPTY local. Si ~/.local/bin no está en el PATH remoto, Herdr avisa después de instalar.

Por defecto, herdr --remote ejecuta la configuración remota y el puente a través de una configuración de SSH temporal que incluye primero la tuya y añade después ajustes de keepalive de respaldo. Tus ajustes de keepalive prevalecen. Los clientes Linux y macOS usan además un socket de control privado por conexión para reutilizarla; el OpenSSH de Windows no. Define [remote].manage_ssh_config = false para usar ssh a secas, sin la configuración generada por Herdr ni el socket de control.

La conexión remota usa tu autenticación normal de OpenSSH. Si el destino usa una clave protegida con contraseña en un shell no interactivo, un script, una tarea de CI o una terminal móvil que no pueda mostrar la petición de contraseña, carga antes la clave en ssh-agent:

Ventana de terminal
ssh-add
herdr --remote workbox

Ante cualquier fallo de autenticación remota, comprueba primero el acceso SSH normal con ssh workbox y vuelve a ejecutar herdr --remote workbox.

Una simple diferencia de versión no reemplaza ni reinicia un servidor remoto en marcha. La conexión remota pregunta antes de parar un servidor al que le falte la compatibilidad necesaria o el soporte de demonio desconectado. En las máquinas guardadas, esto incluye también las capacidades de superficie y comprobación de salud descritas en Conectar máquinas. La respuesta por defecto es No; parar el servidor termina los procesos de sus paneles. Para optar por el traspaso en caliente experimental cuando haga falta esa actualización única, pasa --handoff:

Ventana de terminal
herdr --remote workbox --handoff

Si entras primero por SSH y ejecutas herdr en el servidor, Herdr corre por completo en el servidor y no puede acceder al portapapeles de tu escritorio más allá del pegado de texto normal de la terminal.

En hosts Linux y macOS, Herdr puede copiar el binario local actual cuando las plataformas coinciden. En instalaciones de Homebrew, mise y Nix, cuando las plataformas difieren, o en hosts Windows, descarga de https://herdr.dev/latest.json el fichero de la versión que corresponde al cliente actual.

Para compilaciones locales o paquetes personalizados, define HERDR_REMOTE_BINARY con la ruta de un fichero local antes de conectar. Usa un ejecutable de Herdr suelto para destinos Linux o macOS y un paquete completo herdr-windows-x86_64.zip para destinos Windows.

Ventana de terminal
HERDR_REMOTE_BINARY=target/release/herdr herdr --remote workbox

Usa --session junto con --remote para conectarte a una sesión con nombre del host remoto:

Ventana de terminal
herdr --remote workbox --session agents

La conexión completa a Herdr abre toda la interfaz del espacio de trabajo. La conexión directa abre una sola terminal gestionada por el servidor dentro de tu terminal actual.

La conexión directa está disponible en Linux y macOS, no en Windows nativo.

Conexión por destino de agente:

Ventana de terminal
herdr agent attach reviewer

Conexión por ID de terminal:

Ventana de terminal
herdr terminal attach term_abc123

La conexión directa transmite primero el estado pintado actual de la terminal y después los fotogramas ANSI en vivo. La entrada va directa a esa terminal.

Desconecta con ctrl+b q. Para enviar un ctrl+b literal, ctrl+b ctrl+b.

Solo un cliente de conexión directa con escritura es dueño de la entrada y del tamaño de una terminal. Usa --takeover para sustituir al dueño actual:

Ventana de terminal
herdr terminal attach term_abc123 --takeover

Para puentes de terceros que solo necesitan los bytes pintados de la terminal, usa un observador de sesión de terminal de solo lectura:

Ventana de terminal
herdr terminal session observe w1:p1 --cols 120 --rows 40

Imprime registros JSON terminal.frame, uno por línea, con los bytes ANSI en base64, y después un registro terminal.closed cuando el servidor cierra el flujo. Varios observadores pueden mirar la misma terminal sin tomar la entrada, el tamaño, el desplazamiento ni la propiedad por takeover.

Para un puente interactivo, usa un controlador de sesión de terminal con escritura:

Ventana de terminal
herdr terminal session control w1:p1 --takeover --cols 120 --rows 40

El modo de control imprime los mismos registros de fotogramas, uno por línea, y lee por la entrada estándar comandos JSON, también uno por línea. terminal.input envía texto o bytes en base64, terminal.resize cambia el tamaño del área del controlador, terminal.scroll desplaza la vista conectada y terminal.release cierra el controlador. Solo un controlador es dueño de la entrada y del tamaño a la vez.