Tabla de Contenidos
¡Esta es una revisión vieja del documento!
herdr
herdr es un multiplexor de terminal pensado para agentes: como tmux, pero sabe qué agente corre en cada panel y en qué estado está. No sustituye a OpenCode ni a Claude Code: los ejecuta dentro de sus paneles y te avisa de cuál te necesita. Es de código abierto, un único binario y funciona en la terminal que ya uses.
Sirve para lo que pasa en cuanto trabajas con más de un agente a la vez: uno implementando, otro revisando la spec y un tercero pasando los tests, cada uno en su panel, y tú sin tener que ir mirándolos uno a uno.
1. Puesta en marcha
Instalar
- Linux y macOS
curl -fsSL https://herdr.dev/install.sh | sh
- Windows
powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"
Arrancar
Desde la carpeta del proyecto:
cd mi-proyecto herdr
La primera vez sale un asistente que propone instalar las integraciones de los agentes que encuentra en el PATH: si tienes OpenCode y Claude Code, instala las dos. Di que sí: qué son está en la sección 5.
Se abre la interfaz: a la izquierda la barra lateral con los espacios de trabajo y los agentes, y a la derecha el panel con una shell. En esa shell se arranca el agente como siempre:
opencode
herdr lo detecta solo, sin configurar nada. Vale igual con claude, codex, cursor-agent o copilot.
Actualizar
herdr update
Los agentes que estén trabajando no se paran al actualizar: el servidor viejo sigue vivo hasta que lo reinicias. Al terminar, herdr update dice qué servidor sigue en la versión anterior y la orden para reiniciarlo.
brew o mise, se actualiza con ellos, no con herdr update.
Configuración inicial
La lista de agentes de la barra lateral enseña, de serie, el espacio de trabajo y el tipo de agente. Con dos agentes en el mismo espacio, las dos filas salen iguales (daw-proyecto / claude) y no sabes cuál es cuál.
Se arregla poniendo nombre a cada panel y haciendo que la lista lo muestre. En ~/.config/herdr/config.toml:
[ui.sidebar.agents] rows = [ ["state_icon", "machine", "pane", "tab"], ["workspace", "agent"], ]
Se recarga sin parar a los agentes con menu → reload config en la barra lateral. Desde la terminal, herdr server reload-config solo recarga el servidor, y esta parte la dibuja la ventana.
El nombre se le pone al panel con el botón derecho → Rename pane (en la sección 3 está con capturas).
El nombre sale en el borde del panel y en la primera línea de la lista; debajo, el espacio y el agente:
○ daw-proyecto daw-proyecto · claude ○ sdd daw-proyecto · claude
2. Cliente y servidor: cerrar no es parar
herdr arranca un servidor en segundo plano que es el dueño de los paneles, y la ventana que ves es solo un cliente conectado a él. Por eso:
- Cerrar la terminal no para nada: los agentes siguen trabajando.
- Para salir a propósito dejando todo en marcha,
Ctrl+b q. - Para volver, otra vez:
herdr
- Para acabar de verdad y parar todos los paneles:
herdr server stop
herdr server stop). Al volver, herdr recupera la distribución de paneles y sus carpetas, pero los procesos son nuevos. Para que además recupere la conversación del agente, instala su integración (sección 5).
Como el servidor sigue vivo, puedes dejar a un agente implementando en el ordenador del instituto, entrar por ssh desde casa o desde el móvil, ejecutar herdr y ver por dónde va.
Guardar un espacio de trabajo y volver a cargarlo
herdr no tiene una orden para guardar: guarda solo y continuamente la sesión entera (espacios de trabajo, pestañas, paneles, sus nombres y sus carpetas) en ~/.config/herdr/session.json, y la vuelve a montar al arrancar.
Para tener la distribución de cada proyecto guardada aparte y cargarla cuando toque, se usa una sesión con nombre: otro herdr independiente, con sus propios espacios y paneles.
- Crear la sesión, o volver a ella si ya existe:
herdr --session sdd
- Se montan en ella los espacios, pestañas y paneles del proyecto. No hay que guardar nada.
- Cerrarla parando sus paneles. Queda guardada:
herdr session stop sdd
- Cargarla otro día. Vuelve la misma distribución en las mismas carpetas, y los agentes con su conversación si tienen la integración (sección 5):
herdr --session sdd
- Ver las sesiones que hay y cuáles están en marcha:
herdr session list
- Borrar una que ya no se usa. Tiene que estar parada:
herdr session delete sdd
herdr a secas abre siempre la sesión default, no la última que usaste. Para volver a una sesión con nombre hay que dar su nombre con –session.
Ctrl+b q en vez de pararla, la sesión sigue en marcha, y herdr –session sdd te devuelve a ella con los agentes trabajando.
3. Espacios de trabajo, pestañas y paneles
herdr organiza los terminales en tres niveles:
| Nivel | Qué es | Para qué se usa |
|---|---|---|
| Espacio de trabajo | El contenedor de un proyecto | Uno por repositorio o por tarea |
| Pestaña | Una distribución de paneles dentro del espacio | Separar vistas: agentes, tests, servidor |
| Panel | Un terminal de verdad. Los paneles de una pestaña se ven a la vez, uno junto a otro | Un agente, una shell, los tests en marcha |
Es decir: el espacio de trabajo es el proyecto, la pestaña es una pantalla de ese proyecto y los paneles son los trozos en los que partes esa pantalla.
Todo se hace con el ratón: clic para cambiar de panel o de espacio, arrastrar el borde para redimensionar, botón derecho para dividir o crear pestañas, y seleccionar texto ya lo copia, sin Ctrl+C.
Con el ratón
Los ejemplos son dos proyectos: reservas-api (una API REST) y tienda-web (su web). En cada pareja de capturas, la primera marca con un círculo rojo dónde se pincha y la segunda enseña cómo queda.
Espacio de trabajo nuevo
Se pulsa new, abajo en la lista de spaces.
El espacio nuevo se abre en la misma carpeta y toma el nombre de la carpeta en la que esté su shell: al hacer cd ../tienda-web, pasa a llamarse tienda-web.
Pestaña nueva
Renombrar una pestaña
Botón derecho sobre la pestaña → Rename.
Se escribe el nombre y save. La pestaña 1 pasa a llamarse agentes.
Panel a la derecha
Renombrar un panel
Botón derecho dentro del panel → Rename pane.
El nombre sale en el borde de arriba del panel. Aquí, implementa y revisa.
Panel abajo
Botón derecho dentro del panel → Split down.
El panel se parte en dos, uno encima del otro. Aquí, unitarios arriba y logs abajo.
Crear un espacio de trabajo
Al arrancar, herdr abre un espacio de trabajo en la carpeta desde la que lo lanzas. Para trabajar en otro proyecto a la vez, se crea otro espacio:
- Crear un espacio de trabajo: clic en new, al pie de la lista de espacios de la barra lateral.
- Cambiarle el nombre: botón derecho sobre el espacio, Rename.
- Cerrarlo, con todas sus pestañas y paneles: botón derecho, Close.
cd en su panel al proyecto que toca. O mejor, créalo desde cualquier panel con la orden, que le da la carpeta y el nombre de una vez:
herdr workspace create --cwd ~/proyectos/tienda --label tienda
4. El estado de los agentes
Es lo que diferencia a herdr de tmux. Cada agente aparece en la barra lateral con su estado:
| Estado | Qué significa | Qué haces tú |
|---|---|---|
working | Está trabajando | Nada, déjalo |
blocked | Espera una respuesta: un permiso, una pregunta, una decisión | Ir a contestarle |
done | Ha terminado y aún no lo has mirado | Revisar el resultado |
idle | Ha terminado y ya lo has visto | Darle la siguiente tarea |
El estado sube: un agente blocked marca como bloqueados su pestaña y su espacio de trabajo, así que con un vistazo a la barra lateral sabes qué proyecto te necesita.
Para saltar directamente al agente que te interesa, Ctrl+b g abre una lista con todos los agentes y terminales; dentro de ella, b deja solo los bloqueados.
idle no quiere decir que haya hecho bien el trabajo, solo que ha vuelto al prompt. Y si el agente saca una pregunta con un aspecto que herdr no conoce, puede marcarlo como idle en vez de blocked. Antes de darle la siguiente tarea, mira qué ha dejado en pantalla.
5. Integraciones: recuperar la conversación tras reiniciar
Sin integración, herdr ya ve los agentes: los reconoce por el proceso y lee su pantalla para saber si están trabajando o esperando. La integración es un pequeño añadido que herdr escribe en la configuración del propio agente para que el agente le cuente cosas directamente por su socket, sin que herdr tenga que adivinarlas.
Lo que se gana:
- Recuperar la conversación: el agente le dice a herdr en qué sesión está. Si el servidor se reinicia (reinicio del ordenador,
herdr server stop), herdr vuelve a abrir el agente con esa misma conversación, en lugar de una shell vacía. Esto lo hacen todas las integraciones. - Estado más fiable: en algunos agentes, OpenCode entre ellos, el agente informa él mismo de si está
workingoblocked. Leer la pantalla falla cuando sale una pregunta con un aspecto que herdr no conoce; el aviso del propio agente, no.
Qué escribe en cada agente:
| Agente | Qué instala | Dónde | Recupera la conversación | Informa del estado |
|---|---|---|---|---|
| OpenCode | Un plugin de OpenCode | ~/.config/opencode/plugins/ | ✓ | ✓ |
| Claude Code | Un hook SessionStart | ~/.claude/hooks/ y settings.json | ✓ |
Los plugins de OpenCode están en su tema y los hooks se verán en el tema 9; aquí basta con saber que herdr los instala y los quita solo.
Las órdenes, por si no las instalaste en el asistente o instalas un agente después:
- Instalar la integración de OpenCode:
herdr integration install opencode
- La de Claude Code:
herdr integration install claude
- Ver cuáles tienes instaladas y si están desactualizadas:
herdr integration status
- Quitarla, si ya no la quieres. Borra lo que instaló y deja el resto de tu configuración intacta:
herdr integration uninstall opencode
herdr integration status: la integración puede haberse quedado vieja y basta con volver a instalarla.
6. Worktrees de Git
Si uno de nuestros workspaces es un worktree de Git , simplemente es como un nuevo workspace en Herdr. Podemos hacer que todos los worktree de git aparezcan agrupados si abrimos el worktree con el menú de Open worktree… del workspace de Herdr.
Para ello pulsamos con el botón derecho sobre el espacio del proyecto → Open worktree…, y se elige el worktree de la lista. La opción solo sale si la carpeta del espacio es un repositorio Git.
Cada worktree es un espacio de trabajo completo, con sus pestañas y paneles, que en la lista de espacios cuelga del proyecto. Aquí, login y pagos de reservas-api:
7. El skill de herdr: que un agente maneje a otros
Lo siguiente que podemos hacer es que desde claude code o opencode podamos decirle que queremos hacer cosas en herdr. Lo único que hay que hacer es añadir a nuestro claude code o opencode el skill para manejar herdr.
npx skills add herdrdev/herdr --skill herdr -g
A partir de ahí, desde OpenCode o claude code dentro de herdr se le puede pedir:
abre un panel a la derecha con otro opencode que revise specs/login/design.md contra requirements.md, espera a que termine y resúmeme lo que encuentre
El agente revisor queda en su panel, a la vista, y puedes intervenir en cualquier momento.
HERDR_ENV=1). Fuera de herdr se niega, para no tocar una sesión que no es suya.
8. Plugins
Los plugins añaden flujos de trabajo que herdr no trae de serie. Se instalan desde GitHub, con el formato usuario/repositorio/carpeta, y valen para todas las sesiones. Se buscan en el marketplace.
- Instalar un plugin. Por ejemplo, el que crea de golpe una distribución de tres paneles (editor, ficheros y tareas):
herdr plugin install ogulcancelik/herdr-plugin-examples/dev-layout-bootstrap
- Ver los instalados:
herdr plugin list
- Ver las acciones de un plugin y ejecutar una:
herdr plugin action list --plugin examples.dev-layout-bootstrap herdr plugin action invoke examples.dev-layout-bootstrap.setup
- Actualizar todos. Para uno solo, se añade su id:
herdr plugin update
- Desactivarlo sin desinstalarlo, y volver a activarlo:
herdr plugin disable examples.dev-layout-bootstrap herdr plugin enable examples.dev-layout-bootstrap
- Desinstalarlo:
herdr plugin uninstall examples.dev-layout-bootstrap
Para no escribir la orden cada vez, una acción se asocia a una tecla en ~/.config/herdr/config.toml:
[[keys.command]] key = "prefix+shift+l" type = "plugin_action" command = "examples.dev-layout-bootstrap.setup" description = "distribución de desarrollo"
Y se recarga la configuración sin parar los paneles:
herdr server reload-config
herdr-plugin para aparecer. herdr plugin install enseña antes de instalar qué va a ejecutar: léelo, e instala solo de autores en los que confíes.
9. Atajos de teclado
Ctrl+b pone herdr en modo prefijo: la siguiente tecla que pulses no va al panel, sino a herdr, que la toma como una orden. Se pulsa Ctrl+b, se suelta y se pulsa la tecla de la orden. Hecha la orden, se vuelve al panel.
Por ejemplo, c es «pestaña nueva»: pulsar Ctrl+b, soltar, y pulsar c.
General
| Tecla | Orden |
|---|---|
? | Ayuda con todos los atajos |
s | Ajustes |
q | Salir dejando todo en marcha |
R | Recargar config.toml |
b | Mostrar u ocultar la barra lateral |
g | muestra la lista de paneles para ir a uno de ellos |
Espacios de trabajo
| Tecla | Orden |
|---|---|
N | Crear un espacio de trabajo |
w | Cambiar de espacio de trabajo |
W | Renombrar el espacio de trabajo |
D | Cerrar el espacio de trabajo |
Pestañas
| Tecla | Orden |
|---|---|
c | Crear una pestaña |
T | Renombrar la pestaña |
n | Ir a la pestaña siguiente |
p | Ir a la pestaña anterior |
1 … 9 | Ir a la pestaña por su número |
X | Cerrar la pestaña |
Paneles
| Tecla | Orden |
|---|---|
v | Dividir a la derecha |
- | Dividir abajo |
h | Ir al panel de la izquierda |
j | Ir al panel de abajo |
k | Ir al panel de arriba |
l | Ir al panel de la derecha |
Tab | Ir al panel siguiente |
Shift+Tab | Ir al panel anterior |
H | Intercambiar el panel con el de la izquierda |
J | Intercambiar el panel con el de abajo |
K | Intercambiar el panel con el de arriba |
L | Intercambiar el panel con el de la derecha |
z | Ampliar el panel o devolverlo a su tamaño |
r | Redimensionar el panel |
P | Renombrar el panel |
[ | Modo copia: moverse por la salida del panel y copiar |
e | Abrir la salida del panel en $EDITOR |
x | Cerrar el panel |
10. Enlaces
- herdr.dev: web oficial.
- Documentación: guía y referencia de órdenes y configuración.
- Repositorio: código y versiones publicadas.
- Marketplace: plugins de la comunidad.















