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.

Qué obtiene
| Función | Qué significa en la práctica |
|---|---|
| Sesiones persistentes | Un 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 agentes | Cada 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 agentes | Una fila por proyecto y una fila por agente, en todas las pestañas |
| Soporte de ratón | Clic para enfocar, arrastrar bordes para cambiar el tamaño, clic derecho para los menús |
| Plugins | Paneles y acciones escritos como programas normales: exploradores de archivos, paneles de git, lanzadores |
| CLI y API por socket | Todo responde en JSON, así que scripts y otros agentes pueden dividir paneles, iniciar agentes y esperarlos |
| Máquinas remotas | Coné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:
curl -fsSL https://herdr.dev/install.sh | sh
Con un gestor de paquetes:
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 -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"
Después, verifique:
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:
| Nivel | Piénselo como | Uso típico |
|---|---|---|
| Espacio de trabajo ("space") | Un proyecto | Uno por repositorio |
| Pestaña | Una tarea dentro del proyecto | Agentes en una pestaña, servidores y logs en otra |
| Panel | Una terminal | Un 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+B | Hace |
|---|---|
v | Divide el panel lado a lado |
- | Divide el panel arriba y abajo |
h j k l | Va al panel de la izquierda, abajo, arriba o derecha |
Tab | Recorre los paneles |
z | Amplía el panel actual a pantalla completa y vuelve |
r | Modo de tamaño (flechas o hjkl, Esc para terminar) |
x | Cierra el panel |
c | Pestaña nueva |
n / p | Pestaña siguiente / anterior |
1…9 | Salta a una pestaña |
Shift+N | Espacio de trabajo nuevo |
w | Modo de navegación: las flechas eligen un espacio y Enter lo abre |
b | Muestra u oculta la barra de espacios y agentes |
o | Salta al agente que acaba de enviar una notificación |
s | Configuración |
q | Se desconecta (todo sigue corriendo) |
? | Todos los atajos, con búsqueda |

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:
| Estado | Significado |
|---|---|
| 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:
herdr integration install claude
herdr integration install codex
Tres ajustes facilitan seguir una sesión con mucho movimiento. Van en ~/.config/herdr/config.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:
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:
[[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.

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.

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.
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:
[[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.
# 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):
# /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
sudo systemctl enable --now herdr.service
Desde otra computadora que también tenga herdr, conéctese a la sesión del servidor por SSH:
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
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?
| tmux | Zellij | herdr | |
|---|---|---|---|
| Antigüedad | Desde 2007, muy estable | Desde 2021 | Antes de la 1.0, versiones frecuentes |
| Ya instalado en servidores | Casi siempre, o a un paquete de distancia | Rara vez | No |
| Mantiene la sesión al desconectarse | Sí | Sí | Sí |
| Restaura después de reiniciar el servidor | Con el plugin tmux-resurrect | Resurrección de sesiones | La distribución, y las conversaciones de los agentes con integración |
| Sabe qué está haciendo un agente de IA | No | No | Sí |
| Facilidad para descubrir funciones | Baja, hay que aprender las teclas | Alta, con pistas en pantalla | Alta, con ratón y atajos con búsqueda |
| Plugins | Scripts de shell (TPM) | WebAssembly | Cualquier programa, declarado en un manifiesto TOML |
| Automatización | send-keys y capture-pane | zellij action | CLI en JSON y API por socket, con esperas por estado del agente |
| Archivo de configuración | tmux.conf | KDL | TOML |
Dónde gana cada uno:
- tmux en servidores que no son suyos. Ya está instalado o a un paquete de distancia, y sus teclas funcionan igual en todas partes.
- 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.
- 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 (sdentro de la barra). herdrno arranca dentro de un panel de herdr. Anidarlo está desactivado a propósito. Desconéctese primero, o useherdr --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 conprefix = "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 = falseen[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.