Saltar al contenido

Etiqueta: terminal

Herdr: el Tmux moderno para trabajar con agentes de IA en paralelo

Durante muchos años he sido usuario de tmux, hasta que, hace unas semanas, al revisar videos en YouTube, descubrí Herdr. Es una de esas herramientas que, después de incorporarla a tu flujo de trabajo, resulta difícil abandonar: permite mantener sesiones activas, dividir la terminal en varios paneles y trabajar con múltiples consolas sin llenar el escritorio de ventanas. Sin embargo, mi manera de desarrollar software ha cambiado bastante con el auge de la inteligencia artificial. En mi nuevo trabajo utilizo varios agentes de programación en paralelo y, al mismo tiempo, necesito mantener activos servidores, procesos de compilación, pruebas y otros servicios relacionados con los proyectos.

Tmux seguía funcionando, por supuesto, pero cada vez me costaba más navegar entre tantas ventanas y paneles. En ocasiones no recordaba dónde había dejado determinado agente, cuál seguía trabajando o cuál estaba esperando que respondiera una pregunta. Terminaba de recorrer las sesiones una por una para comprobar qué estaba ocurriendo.

herdr corriendo codex
herdr corriendo Codex

¿Qué es Herdr?

Herdr es un multiplexor de terminal diseñado específicamente para trabajar con agentes de programación. La forma más sencilla de explicarlo es que se trata de una especie de tmux modernizado y adaptado a la era de la inteligencia artificial.

Al igual que tmux, Herdr permite crear múltiples terminales, dividirlas en paneles y mantener las sesiones en ejecución en segundo plano. Puedes cerrar la ventana de la terminal, volver más tarde y continuar donde estabas, sin detener los agentes ni los procesos activos.

La diferencia es que Herdr no solo ve paneles: también reconoce los agentes que se ejecutan dentro de ellos. Es compatible con herramientas como Claude Code, Codex, OpenCode, GitHub Copilot CLI, Cursor Agent, entre otras. En una barra lateral se muestra si cada agente está trabajando, bloqueado, inactivo o ha terminado su tarea.

Esta pequeña diferencia resuelve uno de los principales problemas que tenía con tmux. Ya no necesito recorrer manualmente todos los paneles para saber qué agente requiere mi atención.

Espacios de trabajo, pestañas y paneles

Una de las características que más me gustaron es la manera en que Herdr organiza las terminales. La herramienta utiliza tres niveles:

  • Los espacios de trabajo permiten separar proyectos.
  • Las pestañas agrupan diferentes tareas dentro de cada proyecto.
  • Los paneles contienen las consolas, los agentes y los servicios que se ejecutan.

Por ejemplo, puedo tener un espacio de trabajo para cada proyecto. Dentro de él creo una pestaña para los agentes, otra para el servidor de desarrollo y otra para las pruebas o los registros. Si necesito observar dos procesos al mismo tiempo, simplemente divido la pestaña en varios paneles.

La barra lateral resume el estado de todos los agentes. De esta forma, puedo ver rápidamente quién continúa trabajando, quién necesita que apruebe una acción y quién ya finalizó. Al seleccionarlo, Herdr me lleva directamente a su panel para revisar el resultado y redactar el siguiente prompt.

Para quienes trabajamos con varios agentes en paralelo, esta vista resulta mucho más práctica que intentar recordar en qué ventana se encuentra cada uno.

Interfaz de Herdr
Ejemplo de la interfaz de Herdr

Una transición sencilla desde tmux

Otra razón por la que comencé a utilizar Herdr es que no tuve que aprender de cero una nueva forma de controlar la terminal. La herramienta conserva el mismo modelo de prefijo de tmux: por defecto se utiliza Ctrl+B Antes de ejecutar una acción.

También incluye varios atajos familiares. Con Ctrl+B y luego c Se crea una nueva pestaña, mientras que Ctrl+B y después n o p Permite avanzar o retroceder entre ellas. Para dividir paneles, navegar por los espacios de trabajo o desconectarse de una sesión, se sigue una lógica muy similar.

Si ya utilizas tmux, la adaptación es bastante rápida. Además, al presionar Ctrl+B y luego ? Puedes consultar todos los atajos disponibles.

Herdr también soporta el mouse por defecto. Es posible seleccionar paneles, pestañas, espacios de trabajo y agentes con un clic, cambiar el tamaño de las divisiones arrastrando sus bordes y abrir menús contextuales con el botón derecho. Aunque normalmente prefiero los atajos de teclado, el mouse resulta cómodo cuando quiero reorganizar rápidamente la interfaz.

Notificaciones cuando un agente necesita atención

Una de las funciones más útiles de Herdr es su sistema de notificaciones. La herramienta puede avisar cuando un agente termina una tarea o cuando necesita que respondamos una pregunta o aprobemos alguna acción. Esto permite dejar varios agentes trabajando y concentrarse en otra actividad sin revisar cada terminal constantemente. Cuando alguno finaliza, recibo el aviso, salto directamente a su panel, reviso lo que hizo y continúo la conversación con un nuevo prompt.

En la práctica, Herdr convierte un conjunto de terminales dispersas en una pequeña central de control para agentes. No ejecuta el trabajo por ellos ni reemplaza herramientas como Codex o Claude Code; simplemente ofrece una forma mucho más clara de organizarlos y supervisarlos.

Herdr funciona dentro de la terminal

Existen otras alternativas para administrar agentes, como cmux, pero muchas de ellas funcionan como aplicaciones independientes o buscan reemplazar la terminal que ya utilizas. Herdr adopta un enfoque diferente. Es una herramienta nativa de consola, desarrollada en Rust, que se ejecuta en la terminal que prefieras. No necesita Electron ni obliga a cambiar Ghostty, Kitty, iTerm2, Alacritty ni a cambiar ningún otro emulador de terminal que ya forme parte de tu entorno.

Para mí, esto es una gran ventaja. Puedo conservar el flujo de trabajo que he utilizado durante años, entrar por SSH cuando lo necesito y seguir trabajando exclusivamente desde la consola.

Una herramienta de código abierto para organizar el nuevo desarrollo con IA

Otro aspecto que me encanta es que Herdr es un proyecto de código abierto, distribuido bajo la licencia Apache 2.0. Esto permite revisar su código, proponer mejoras y contribuir con una herramienta que probablemente resulte cada vez más útil a medida que trabajar con varios agentes se convierta en algo habitual.

Después de muchos años utilizando tmux, no esperaba reemplazarlo fácilmente. Sin embargo, Herdr conserva las ideas que siempre me gustaron de tmux y añade justo lo que necesitaba para mi flujo de trabajo actual: una interfaz más moderna, organización por proyectos, soporte para el mouse, seguimiento del estado de los agentes y notificaciones cuando alguno requiere atención.

Si trabajas con muchas consolas, mantienes varios servicios activos o utilizas diferentes agentes de inteligencia artificial en paralelo, te recomiendo probarlo. En esencia, Herdr es el tmux de siempre, pero preparado para una forma de desarrollar software que apenas hace unos años no existía.

Happy coding!

Deja un comentario

Usando fish shell y Starship para hacer la terminal más bonita y productiva

Soy de los usuarios de computadoras a los que les encanta usar la terminal para todo lo que sea posible. Tal vez porque vengo de los días de MS-DOS y nunca me acostumbré del todo al mouse ni a las interfaces gráficas de usuario. De hecho, esa es una de las razones por las que amo Linux, pues todo es posible desde la consola. Por ello, hace tiempo decidí dedicarle tiempo a hacerla bonita y agradable visualmente, porque paso más tiempo allí y para ser más productivo. En este caso migré a fish, una shell rápida y con funcionalidades de zsh incluidas por defecto. Adicionalmente, agregué starship para mejorar la apariencia rápidamente utilizando diseños preexistentes.

Ejemplo de mi terminal con fish + starship
Ejemplo de mi terminal con fish + starship

¿Por qué decidí probar fish?

Durante mucho tiempo usé zsh junto con Oh My Zsh. No tengo quejas graves, al contrario, es una buena combinación y permite tener plugins, temas, autocompletado, integración con Git y muchas mejoras sobre Bash. Sin embargo, con el tiempo también puede sentirse un poco pesada o depender de demasiadas configuraciones.

Uno de los detalles que más me gustaron de fish es que muchas de esas cosas que normalmente uno instala con plugins en zsh ya vienen listas desde el inicio. El autocompletado inteligente, las sugerencias basadas en el historial y el resaltado de sintaxis funcionan prácticamente sin esfuerzo.

Eso, para mí, tiene mucho valor. No quería pasar una tarde completa ajustando plugins, revisando compatibilidades o copiando configuraciones de otras personas. Quería una shell moderna, cómoda y rápida, pero sin convertir la configuración de la terminal en otro proyecto paralelo.

Fish se siente más amigable desde el primer uso. Cuando escribes un comando, te sugiere opciones según lo que ya has ejecutado. Si escribes mal algo, el resaltado te ayuda a darte cuenta. Si navegas entre carpetas o usas comandos repetidos, la experiencia se vuelve bastante fluida.

¿Para qué usar Starship?

Después de migrar a fish, quería que la terminal también se viera bien. Pero, siendo honesto, tampoco quería perder demasiado tiempo configurando un prompt desde cero. Ya he pasado por esa etapa de probar temas, mover símbolos, cambiar colores y revisar capturas de pantalla hasta que todo se vea bonito.

Por eso decidí usar Starship. Es un prompt moderno, rápido y compatible con varias shells, como fish, zsh y bash. La idea es sencilla: instalarlo, activarlo y tener una terminal visualmente agradable sin dedicarle demasiadas horas. Staship tiene una base de datos de configuraciones y diseños ya existentes, en la que basta con seleccionar el que más te guste y luego editar detalles menores. Así ahorras mucho tiempo.

Starship muestra información útil directamente en el prompt. Por ejemplo, la rama actual de Git, el estado del repositorio, las versiones de lenguajes como Node.js, Python, Rust o Go, la duración de los comandos y otros datos según el proyecto en el que estés trabajando. Esto es especialmente útil al trabajar con varios repositorios. Puedes estar en un proyecto frontend, luego pasar a un backend, revisar algo viejo en PHP o abrir una carpeta con scripts personales. Tener esa información visible ayuda a evitar errores menores, como ejecutar un comando en la rama equivocada o no notar el entorno en el que estás trabajando.

Ejemplo del terminal de Skatox mostrando el historial de comandos SVN
Ejemplo de mi terminal mostrando el historial de comandos SVN

Instalación en Arch Linux

Como uso Arch Linux, la instalación fue bastante sencilla. En mi caso lo hice directamente con pacman.

sudo pacman -S fish starship

Si todo funciona bien y queremos dejarla como shell por defecto:

chsh -s /usr/bin/fish

Después de cerrar sesión y volver a entrar, fish debería iniciarse como shell principal. Luego hay que activarlo en la configuración de fish. El archivo normalmente está en:

~/.config/fish/config.fish

Allí agregué esta línea:

starship init fish | source

Con eso ya Starship empieza a funcionar al abrir una nueva terminal.

Conclusión

Usar fish y Starship no va a convertirnos mágicamente en mejores programadores, pero sí puede hacer que la terminal sea un lugar más cómodo para trabajar. Y eso importa bastante cuando pasamos muchas horas al día escribiendo comandos, moviéndonos entre carpetas, usando Git, ejecutando pruebas o levantando servicios.

En mi caso venía de zsh con Oh My Zsh, y aunque sigue siendo una gran combinación, fish me pareció más directo. Muchas cosas que antes configuraba con plugins ahora vienen listas desde el inicio. Menos tiempo para ajustar la herramienta y más tiempo para usarla.

Starship completó la experiencia porque me permitió contar con una terminal bonita, informativa y moderna sin dedicar demasiado tiempo a personalizarla. A veces uno solo quiere que las cosas funcionen y se vean bien, sin tener que pasar horas configurando cada detalle.

La terminal sigue siendo uno de mis espacios favoritos en Linux. Personalizarla no es solo una cuestión estética, también es una forma de hacer más agradable el lugar donde trabajamos todos los días. Fish y Starship me dieron justamente eso: una terminal más cómoda, más útil y visualmente mucho mejor.

Deja un comentario

Cómo tener un terminal de Ghostty siempre disponible al presionar una tecla (en macOS)

Como comenté en una entrada anterior, desde hace un par de semanas he estado utilizando Ghostty como mi principal terminal en los sistemas operativos que uso: Linux y macOS. En ambos sistemas estoy acostumbrado a tener una terminal siempre disponible al presionar una tecla, algo inspirado de los días en que jugaba Quake y sacaba la terminal del juego para ejecutar comandos.

Abrir ghostty con una tecla en macOS

Mis requerimientos

Desde los días que jugaba Quake y otros FPS. Me acostumbré a abrir la consola con ~, pero al momento de usar Linux necesitaba utilizar esa tecla así que me acostumbre a usar F1, que suele estar ubicada arriba de ~.

En el caso de macOS, por la naturaleza del sistema, prefiero tener una terminal que ocupe casi toda la pantalla y centrada. A diferencia de Linux donde me gusta una terminal a pantalla completa (también porque lo uso en mi laptop).

Configurando Ghostty con una tecla

Para macOS vamos a instalar y usar un servicio de código abierto llamado skhd. Este servicio se ejecuta como demonio escuchando las combinaciones del teclado para realizar acciones sobre ello. En este caso, lo usaremos para que al presionar F1, lance la aplicación si no se está ejecutando.

Configurando skhd

Empecemos por instalando skhd con homebrew y ejecutándolo como servicio de macOS:

brew install koekeishiya/formulae/skhd
skhd --start-service

Luego creamos un archivo de configuración en ~/.config/skhd/skhdrc con el siguiente contenido:

f1: osascript -e 'tell application "Ghostty" to activate'

Configurando Ghostty

Luego, para que nuestra terminal se enfoque una vez que presionamos nuestra tecla, debemos abrir Ghostty.

Dentro de la terminal, haz clic en la barra de menú y luego en Ajustes o Settings. Se abrirá un archivo de texto con la configuración de la terminal, ahí escribiremos las siguientes opciones:

keybind = global:f1=toggle_visibility
macos-non-native-fullscreen = true

Estas opciones permiten que al presionar F1 se abra el terminal y que no utilice la pantalla completa por defecto de macOS, sino que expanda al máximo la ventana. Haz clic de nuevo la barra de menú y selecciona la opción para recargar la configuración.

¡Y listo! Ya tienes un terminal al alcance de un botón en macOS.

Deja un comentario

Cómo tener un terminal de Ghostty siempre disponible al presionar una tecla (en Linux)

Si estas inmerso en el mundo tech, habrás notado que hace unas semana salió la version 1.0 de Ghostty. Un terminal multi-plataforma, con aceleración por GPU y enfocado a usar código nativo. Lo he estado desde entonces y remplazé a Yakuake (que siempre lo he usado en KDE) por este gran terminal, principalmente por el rendimiento que se siente al presionar las teclas. Sin embargo, uno de los problemas que tengo es que por ahora, no tiene una opción para mostrar un terminal al presionar una tecla, que es la principal razón por la que usaba Yakuake. Pues hoy te enseñaré cómo puedes lograr esto en tu sistema.

¿Por qué Ghostty?

Ghostty es una terminal que combina lo mejor de ambos mundos: la simplicidad de las terminales clásicas y las características modernas que necesitamos hoy en día. Es rápida, ligera y altamente personalizable. Además, su rendimiento es notable, especialmente en comparación con otras terminales que he usado en el pasado. La respuesta al presionar las teclas es instantánea, algo que valoro mucho como desarrollador.

Mis requerimientos

Desde los días que jugaba Quake y otros FPS. Me acostumbré a abrir la consola con ~, pero al momento de usar Linux necesito esa tecla así que la cambie por F1, porque esta mas arriba en la mayoría de teclados. En este ejemplo usaré F1 como la tecla que abrirá Ghostty.

Otro requerimiento en Linux es que sea pantalla completa para simular las terminales de antes (nunca superé esto) que ocupan toda la pantalla. Creo que me ayuda a comprender a separar la UI del terminal y evitar mezclar acciones.

Configurando abrir Ghostty con una tecla

Para abrir Ghostty con una tecla, hay 2 cosas que se deben hacer, un script para iniciar la aplicación si no está abierta. Pero si esta abierta, configurar Ghostty para que muestre la ventana de la terminal al abrir.

Paso 1: crear el script

Una vez instalado Ghostty, podemos empezar a crear el script. En mi caso como estoy usando Wayland con KDE, utilizo kdotool para ejecutar acciones a ventanas/aplicaciones. Si utilizas X11 puedes usar xdotool bajo cualquier entorno para controlar la ventana, solo remplaza el comando donde sea necesario.

Luego puedes usar este script detectar si Ghostty está abierto, si lo está, se enfoca la ventana. De lo contrario, se ejecuta el terminal. Puedes guardar este script en un lugar accesible, por ejemplo, en ~/scripts/open_ghostty.sh

#!/bin/bash

APP_NAME="ghostty"
CLASS_NAME="com.mitchellh.ghostty"

if [[ $(pgrep -x "$APP_NAME") ]]; then
# App is running. Get the window ID. Using tail -1 handles multiple instances.
WINDOW_ID=$(kdotool search --class "$CLASS_NAME" | head -1)

if [[ -n "$WINDOW_ID" ]]; then # Check if a window ID was actually found
# Check if the window is minimized (using window state)
WINDOW_STATE=$(kdotool getactivewindow)

if [[ "$WINDOW_STATE" == "$WINDOW_ID" ]]; then # Check if x position is negative (likely off-screen = minimized)
    kdotool windowminimize "$WINDOW_ID"
 else
    kdotool windowactivate "$WINDOW_ID"
    kdotool windowstate --add NO_BORDER --add FULLSCREEN "$WINDOW_ID"
    kdotool windowunmap "$WINDOW_ID" # Important for restoring from   minimized state
  fi
 else
   echo "Error: Could not find a valid window ID for $APP_NAME."
 fi
 else
   # App is not running, launch it
   "$APP_NAME" & # Important: Quote the variable to handle spaces in app name
 fi

Asegúrate de darle permisos de ejecución al script:

chmod +x ~/scripts/open_ghostty.sh

Paso 2: Asignar el script a la tecla F1

  • Abre la aplicación de Configuración del sistema de KDE Plasma.
  • Busca y selecciona «Atajos de teclado» (Shortcuts).
  • Haz clic en «Editar» > «Nuevo» > «Acción global» > «Comando/URL».
  • En el campo «Nombre», escribe algo descriptivo, como «Abrir Ghostty».
  • En el campo «Comando», ingresa la ruta completa a tu script, por ejemplo: /home/tuusuario/scripts/open_ghostty.sh.
  • Haz clic en el campo «Atajo de teclado» y luego presiona la tecla F1 en tu teclado.
  • Si la tecla F1 ya está asignada a otra función, deshabilita o cambia ese atajo antes de continuar.
  • Cierra la ventana de configuración y presiona F1 para probar si el script se ejecuta correctamente.
  • ¡Listo! Ya tienes tu terminal configurada.

Conclusión

Si eres un amante de las terminales y buscas una experiencia rápida y eficiente, te recomiendo probar Ghostty. Con lo leído en este artículo podrás tener acceso inmediato a un terminal y ser mas productivo.

Y tú, ¿qué terminal usas? ¿Has probado Ghostty? ¡Déjame tus comentarios!


Espero que este artículo te haya sido útil. Si tienes alguna pregunta o sugerencia, no dudes en dejarla en los comentarios. ¡Hasta la próxima! 🚀

Deja un comentario