·13 min de lectura

Guía práctica de herdr

herdr mantiene vivas las terminales como tmux, y además sabe qué agente de IA está trabajando, cuál terminó y cuál lo está esperando. Cómo instalarlo, las teclas que importan, el plugin de barra lateral, cómo controlar agentes desde la CLI, cómo dejarlo como servicio y una comparación honesta con tmux y Zellij.

Usar un agente de IA para programar en una terminal es fácil. Con tres, la cosa se complica: uno espera que usted apruebe un comando, otro terminó hace diez minutos, y solo se entera revisando pestaña por pestaña.

herdr resuelve eso. Es un multiplexor de terminal, de la misma familia que tmux y Zellij: divide una ventana en pestañas y paneles, y mantiene todo corriendo aunque cierre la ventana o se caiga la conexión SSH. Lo que lo distingue es que lee cada panel y reconoce el agente que corre adentro, así que una barra lateral le muestra de un vistazo qué agente está trabajando, cuál está bloqueado esperando una respuesta y cuál ya terminó.

Reemplacé tmux por herdr en mi servidor de orquestación en agosto de 2026, y hoy está detrás de cada terminal que abro: en el escritorio, en el servidor y desde el teléfono. Esta guía reúne lo que me hubiera gustado saber el primer día.

herdr con dos agentes de Claude Code en una pestaña y un tercero en otro espacio de trabajo.
Tres agentes, un vistazo. El panel izquierdo está bloqueado esperando una aprobación, el derecho está trabajando en una revisión, y un tercer agente en otro proyecto ya terminó. La barra lateral de la izquierda muestra los tres: rojo es bloqueado, amarillo es trabajando y un círculo vacío es terminado o en espera.

Qué obtiene

FunciónQué significa en la práctica
Sesiones persistentesUn servidor en segundo plano es dueño de las terminales. Cierre la ventana, vuelva a conectarse después y todo sigue donde lo dejó
Estado de los agentesCada panel se marca como trabajando, bloqueado, terminado o en espera, así que el agente que lo necesita salta a la vista
Barra de espacios y agentesUna fila por proyecto y una fila por agente, en todas las pestañas
Soporte de ratónClic para enfocar, arrastrar bordes para cambiar el tamaño, clic derecho para los menús
PluginsPaneles y acciones escritos como programas normales: exploradores de archivos, paneles de git, lanzadores
CLI y API por socketTodo responde en JSON, así que scripts y otros agentes pueden dividir paneles, iniciar agentes y esperarlos
Máquinas remotasConéctese a herdr en otro equipo por SSH, o vea los agentes remotos junto a los locales

Es un solo binario escrito en Rust, con licencia Apache 2.0, y funciona dentro de la terminal que ya usa: Alacritty, Ghostty, WezTerm, Windows Terminal o una terminal en el navegador.

Instalación

En Linux, macOS y dentro de WSL, el script oficial instala el binario en ~/.local/bin:

bash
curl -fsSL https://herdr.dev/install.sh | sh

Con un gestor de paquetes:

bash
brew install herdr        # Homebrew
mise use -g herdr         # mise

Windows nativo tiene un instalador de PowerShell. Es más reciente que la versión de Linux, y mientras tanto WSL funciona muy bien (mi configuración de Windows usa el script de Linux dentro de Debian):

PowerShell
powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"

Después, verifique:

bash
herdr --version
herdr          # inicia el servidor y se conecta; Ctrl+B y luego Q se desconecta
herdr status   # versiones del cliente y del servidor, desde fuera de herdr

Ejecute herdr otra vez para volver a conectarse. Nada se detuvo mientras tanto.

Espacios, pestañas y paneles

herdr organiza el trabajo en tres niveles:

NivelPiénselo comoUso típico
Espacio de trabajo ("space")Un proyectoUno por repositorio
PestañaUna tarea dentro del proyectoAgentes en una pestaña, servidores y logs en otra
PanelUna terminalUn agente, un shell, un vigilante de pruebas

Un espacio nuevo arranca en la carpeta donde usted está y toma su nombre, por eso la barra lateral se lee como una lista de repositorios.

Las teclas que importan

Todas las teclas de herdr empiezan con el prefijo, Ctrl+B por defecto (el mismo de tmux). Púlselo, suéltelo y luego pulse la siguiente tecla.

Después de Ctrl+BHace
vDivide el panel lado a lado
-Divide el panel arriba y abajo
h j k lVa al panel de la izquierda, abajo, arriba o derecha
TabRecorre los paneles
zAmplía el panel actual a pantalla completa y vuelve
rModo de tamaño (flechas o hjkl, Esc para terminar)
xCierra el panel
cPestaña nueva
n / pPestaña siguiente / anterior
1…9Salta a una pestaña
Shift+NEspacio de trabajo nuevo
wModo de navegación: las flechas eligen un espacio y Enter lo abre
bMuestra u oculta la barra de espacios y agentes
oSalta al agente que acaba de enviar una notificación
sConfiguración
qSe desconecta (todo sigue corriendo)
?Todos los atajos, con búsqueda
El panel de atajos de herdr con los atajos globales y de navegación.
Ctrl+B ? es la única tecla que hay que memorizar. Pulse / en este panel para filtrar por comando o atajo: puede escribir split en lugar de recordar v.

El ratón cubre casi todo lo demás: clic en un panel para enfocarlo, arrastrar un borde para cambiar su tamaño y clic derecho en un panel o en una fila de la barra lateral para ver su menú.

Agentes en paralelo

Inicie sus agentes como siempre. herdr no los envuelve: usted escribe claude, codex, gemini u opencode en un panel, y herdr reconoce el programa por lo que dibuja en pantalla. Reconoce unas veinte CLI de agentes de entrada.

Los estados que reporta:

EstadoSignificado
working (trabajando)El agente está generando, usando una herramienta o pensando
blocked (bloqueado)Muestra una solicitud de aprobación o hace una pregunta. Lo necesita a usted
done (terminado)Terminó mientras usted miraba otra cosa
idle (en espera)Está listo para recibir instrucciones y usted ya vio su última respuesta
unknown (desconocido)Hay un agente, pero herdr no puede leer su estado con certeza

Para los agentes que lo soportan, instale también la integración oficial. Esta le informa a herdr el ID de la sesión del agente, así que después de reiniciar el servidor el panel vuelve a la misma conversación en lugar de empezar una nueva:

bash
herdr integration install claude
herdr integration install codex

Tres ajustes facilitan seguir una sesión con mucho movimiento. Van en ~/.config/herdr/config.toml:

toml
[ui]
agent_panel_sort = "priority"            # blocked agents first, not grouped by project
show_agent_labels_on_pane_borders = true # pane titles name the agent inside

[ui.toast]
delivery = "herdr"                       # a small popup when a background agent changes state

[ui.sound]
enabled = true                           # a sound for "done" and "needs you"

Si le cuesta distinguir los puntos rojos de los amarillos, status_indicators = "symbols" en [ui] los cambia por símbolos distintos.

El plugin de barra lateral: archivos y git en la misma ventana

La barra propia de herdr lista espacios y agentes. Para los archivos, yo agrego herdr-sidebar, un plugin que coloca un explorador de archivos, una búsqueda en el proyecto y un panel de control de versiones junto a sus paneles, al estilo de VS Code:

bash
herdr plugin install alexarthurs/herdr-sidebar/plugins/herdr-sidebar

Los plugins ofrecen acciones, y las acciones se asignan a teclas en config.toml. Estas son las que uso. Evitan e, p y g, que herdr ya usa:

toml
[[keys.command]]
key = "prefix+f"
type = "plugin_action"
command = "herdr-sidebar.open-sidebar"
description = "sidebar: toggle"

[[keys.command]]
key = "prefix+shift+f"
type = "plugin_action"
command = "herdr-sidebar.quick-open"
description = "sidebar: quick open file"

[[keys.command]]
key = "prefix+d"
type = "plugin_action"
command = "herdr-sidebar.show-git"
description = "sidebar: source control"

Ejecute herdr server reload-config (o pulse Ctrl+B Shift+R) y las teclas quedan activas.

La barra lateral de archivos con un CSV abierto en una pestaña de vista previa.
Vea un archivo sin abrir un editor. Un clic abre una pestaña de vista previa que el siguiente clic reutiliza; un doble clic la fija. Pulse e dentro de la vista previa para usar el editor incorporado.

La vista de control de versiones prepara cambios, hace commits, muestra diferencias y sincroniza con el remoto. Su botón ✧ redacta el mensaje del commit con la CLI local de claude, si está instalada.

La vista de control de versiones con un archivo de pruebas nuevo junto a dos paneles de agentes.
Revise lo que escribió un agente antes de hacer el commit. El archivo de pruebas que un agente acaba de crear aparece en Changes como nuevo (U), mientras el agente sigue esperando aprobación para ejecutarlo.

Los demás plugins se instalan igual. También uso herdr-yazi, que abre el gestor de archivos yazi en un panel. El resto está en herdr.dev/plugins.

bash
herdr plugin list
herdr plugin update      # every installed plugin

Una ventana emergente para cualquier herramienta

Cualquier programa puede tener su propia tecla. Una ventana emergente se abre sobre su distribución de paneles y desaparece cuando el programa termina, ideal para lazygit, btop o un htop rápido:

toml
[[keys.command]]
key = "prefix+alt+g"
type = "popup"
command = "lazygit"
width = "80%"
height = "80%"

type = "pane" abre un panel temporal en su lugar, y type = "shell" ejecuta el comando en segundo plano, sin ventana.

Controlar herdr con scripts, o dejar que lo haga un agente

Cada subcomando de herdr responde en JSON, y eso permite automatizar la distribución. Las capturas de este artículo se prepararon así: un script dividió los paneles, inició los agentes y les envió sus instrucciones.

bash
# Split the current pane and keep the new pane's ID
pane=$(herdr pane split --current --direction right --no-focus | jq -r '.result.pane.pane_id')

# Start Claude Code in it under a name, then give it work and wait for it to settle
herdr agent start review --kind claude --pane "$pane" -- --model sonnet
herdr agent prompt review "Review app/thresholds.py for edge cases. Do not edit files." --wait --timeout 120000

# See every agent and its state, then read what this one said
herdr agent list
herdr agent read review --source recent-unwrapped --lines 80

--wait regresa cuando el agente queda en espera, terminado o bloqueado, así que un script puede darle trabajo a un agente, esperarlo y pasarle el resultado al siguiente. herdr --skill imprime un archivo de skill que le enseña a un agente estos mismos comandos, para que Claude Code pueda abrir un panel vecino y delegar trabajo a otro agente por su cuenta.

herdr en un servidor

herdr arranca su servidor la primera vez que usted se conecta. En una máquina donde debe estar siempre corriendo, ponga el servidor bajo systemd. herdr no trae un archivo de unidad, así que escribí este (cambie dev por su usuario):

ini
# /etc/systemd/system/herdr.service
[Unit]
Description=herdr terminal workspace server
After=network.target

[Service]
Type=simple
User=dev
ExecStart=/home/dev/.local/bin/herdr server
Restart=on-failure
RestartSec=5
Environment=HOME=/home/dev
Environment=SHELL=/bin/zsh

[Install]
WantedBy=multi-user.target
bash
sudo systemctl enable --now herdr.service

Desde otra computadora que también tenga herdr, conéctese a la sesión del servidor por SSH:

bash
herdr --remote dev@server

herdr machine add dev@server va un paso más allá: guarda el servidor como perfil, y sus agentes aparecen en su barra lateral local junto a los locales.

Actualizaciones, y qué sobrevive a un reinicio

bash
herdr update

Una actualización reemplaza el servidor, y esto es lo que implica:

  • Sobrevive: los espacios de trabajo, las pestañas, la distribución de paneles y sus carpetas. Los agentes con integración vuelven a su conversación anterior.
  • No sobrevive: los procesos en sí. Una compilación en curso, un servidor de desarrollo o un agente sin integración empiezan de nuevo.

Dos costumbres que aprendí en mis instalaciones. Ejecute herdr update desde un shell fuera de herdr, no desde uno de sus paneles. Y cuando el servidor corre bajo systemd, termine con un reinicio normal de la unidad en lugar del experimental herdr update --handoff: en mi servidor, el handoff dejó el servidor nuevo corriendo fuera del control de systemd, con la unidad marcada como detenida.

Si instaló con Homebrew, mise o Nix, esa herramienta se encarga de las actualizaciones.

¿herdr, tmux o Zellij?

tmuxZellijherdr
AntigüedadDesde 2007, muy estableDesde 2021Antes de la 1.0, versiones frecuentes
Ya instalado en servidoresCasi siempre, o a un paquete de distanciaRara vezNo
Mantiene la sesión al desconectarseSíSíSí
Restaura después de reiniciar el servidorCon el plugin tmux-resurrectResurrección de sesionesLa distribución, y las conversaciones de los agentes con integración
Sabe qué está haciendo un agente de IANoNoSí
Facilidad para descubrir funcionesBaja, hay que aprender las teclasAlta, con pistas en pantallaAlta, con ratón y atajos con búsqueda
PluginsScripts de shell (TPM)WebAssemblyCualquier programa, declarado en un manifiesto TOML
Automatizaciónsend-keys y capture-panezellij actionCLI en JSON y API por socket, con esperas por estado del agente
Archivo de configuracióntmux.confKDLTOML

Dónde gana cada uno:

  1. tmux en servidores que no son suyos. Ya está instalado o a un paquete de distancia, y sus teclas funcionan igual en todas partes.
  2. Zellij para un espacio de terminal más amigable cuando los agentes no son lo principal. Sus paneles flotantes y sus archivos de distribución son excelentes.
  3. herdr cuando usa más de un agente de programación. Ver qué agente lo necesita es la función que cambia la forma de trabajar, y ninguno de los otros dos la tiene.

Como herdr también usa Ctrl+B, las costumbres de tmux se trasladan: dividir, moverse entre paneles y desconectarse se sienten familiares desde el primer día.

Solución de problemas

  • Los íconos aparecen como cuadros o Ø. La fuente de la terminal no tiene los glifos de Nerd Font. Instale una (JetBrainsMono Nerd Font, por ejemplo) y selecciónela en la terminal, no en herdr. El plugin de barra lateral también puede usar íconos emoji desde su configuración (s dentro de la barra).
  • herdr no arranca dentro de un panel de herdr. Anidarlo está desactivado a propósito. Desconéctese primero, o use herdr --session <nombre> desde fuera para una segunda sesión independiente.
  • El prefijo no hace nada. Otro programa puede estar capturando Ctrl+B, o puede haber un método de entrada activo. Elija otra tecla con prefix = "ctrl+a" en [keys].
  • Al hacer clic en un enlace se selecciona texto en lugar de abrirlo. herdr captura el ratón. Ponga mouse_capture = false en [ui], o mantenga pulsado el modificador que su terminal usa para los enlaces.
  • Algo se ve mal después de actualizar. Ejecute herdr status. Si las versiones del cliente y del servidor no coinciden, el servidor viejo sigue corriendo: desconéctese y reinícielo.

Para seguir

  • La documentación en herdr.dev/docs cubre worktrees, sesiones con nombre y la API por socket completa.
  • La configuración por defecto, con cada opción comentada, se imprime con herdr --default-config. Copie solo las líneas que cambie.
  • Una terminal completa en Windows 11, con Alacritty, zsh y herdr instalados por dos scripts, está en Una terminal en serio en Windows 11.

// share