Saltar al contenido

Categoría: Gnu/Linux

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

SUSE Now Hallelujah: otra gran parodia musical geek de SUSE

Si has leído mi blog desde hace tiempo, sabrás que una de las cosas que me gusta compartir es música geek, especialmente cuando combina tecnología, software libre y un poco de humor. También habrás notado que SUSE aparece con bastante frecuencia en esta categoría, porque probablemente sea una de las empresas de tecnología que más se han divertido creando parodias musicales sobre Linux y el mundo open source.

Revisando algunos de esos videos, me encontré con uno que todavía no había compartido por aquí: SUSE Now Hallelujah, una parodia publicada por SUSE en 2018 basada en la canción Faith de Stevie Wonder y Ariana Grande, perteneciente a la banda sonora de la película Sing. Y, como suele pasar con los videos musicales de SUSE, no se limitaron a cambiar algunas palabras de la canción original. Crearon todo un videoclip, con músicos, cantantes, coreografía y, por supuesto, bastante color verde.

¿De qué se trata SUSE Now Hallelujah?

La protagonista de la canción es prácticamente la mascota de SUSE: el famoso camaleón verde. A partir de allí, la letra comienza a incorporar diversas características y tecnologías relacionadas con SUSE y Linux.

Entre las referencias aparecen conceptos como centros de datos, uptime, infraestructura, almacenamiento, contenedores, escalabilidad y live patching, todo mientras el camaleón baila y demuestra por qué, aparentemente, es el rey del open source.

Si trabajas administrando servidores o tienes experiencia con Linux en entornos empresariales, seguramente reconocerás muchas de estas referencias. Por ejemplo, el live patching permite aplicar determinados parches al kernel sin tener que reiniciar completamente el sistema, lo cual es especialmente importante cuando estás administrando servicios que deben permanecer disponibles durante largos períodos de tiempo.

Pero tampoco hace falta conocer todos estos conceptos para disfrutar el video. La canción funciona simplemente por lo absurda y divertida que resulta la idea de convertir características de una distribución Linux empresarial en una canción alegre y pegadiza.

SUSE y su extraña tradición musical

Una de las cosas que siempre me ha parecido curiosa de SUSE es que, durante años, ha utilizado la música y el humor como parte de su cultura. No es precisamente lo primero que imaginas cuando piensas en una empresa dedicada a Linux empresarial, servidores e infraestructura.

SUSE Now Hallelujah sigue exactamente ese espíritu: tomar algo que normalmente podría parecer extremadamente técnico y convertirlo en una pequeña celebración de la cultura geek y del software libre.

Así que si utilizas Linux, administras servidores, trabajas en tecnología o simplemente disfrutas este tipo de rarezas de Internet, te recomiendo ver el video.

Y cuidado, porque después de escucharlo unas cuantas veces, probablemente termines con el “I’m going green, Hallelujah, I’m SUSE now” dando vueltas en tu cabeza.

SUSE Now Hallelujah - A SUSE Music Parody

Finalmente, si te gusta este tipo de videos, recuerda revisar la categoría de Música Geek del blog, donde durante años he recopilado canciones, parodias y otras rarezas musicales creadas especialmente para geeks.

Deja un comentario

Script para ver paquetes de AUR comprometidos

Si son usuarios de Arch Linux, habrán escuchado que recientemente alguien logró acceder al Arch User’s Repository (AUR) y adoptó muchos paquetes huérfanos para modificarlos e inyectar código malicioso. Como lo hizo con muchos paquetes y durante un tiempo desconocido, es posible que tu equipo tenga instalados paquetes comprometidos. Una ventaja de todo este problema, es que el equipo de Arch publicó una lista oficial de paquetes que fueron víctimas de este ataque y me motivó a desarrollar un script para ver paquetes de AUR comprometidos

El script para ver paquetes de AUR comprometidos

Por esta razón, decidí hacer un script en Fish; si han leído mi blog antes, sabrán que uso Fish en mi consola y que la sintaxis de la terminal cambia un poco. Este script chequea el archivo oficial de paquetes comprometidos, valida que solo contenga texto y nombres de paquetes (para evitar que, si se compromete, te ataquen) y luego revisa tus paquetes instalados y los compara para ver si alguno de ellos está instalado en tu equipo.

#!/usr/bin/env fish

set URL "https://md.archlinux.org/s/SxbqukK6IA/download"

set installed (pacman -Qq)
set aur (pacman -Qqm 2>/dev/null)

# Download as plain text only; keep only valid-looking package names
set suspects (curl -fsSL "$URL" \
  | string match -r '^[a-z0-9][a-z0-9._+-]*$' \
  | sort -u)

set total (count $suspects)
set found_list
set i 0
set spinner "⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏"
set spin_i 1

function draw
    set i $argv[1]
    set total $argv[2]
    set spin $argv[3]

    set width 35

    if test "$total" -eq 0
        set percent 0
        set filled 0
    else
        set percent (math -s0 "$i * 100 / $total")
        set filled (math -s0 "$i * $width / $total")
    end

    set empty (math -s0 "$width - $filled")

    printf "\r%s [" "$spin"
    printf "%s" (string repeat -n $filled "=")
    printf "%s" (string repeat -n $empty " ")
    printf "] %3d%% (%d/%d)" $percent $i $total
end

echo "Scanning suspect packages..."
echo ""

for pkg in $suspects
    set i (math "$i + 1")

    if contains -- "$pkg" $installed; or contains -- "$pkg" $aur
        set -a found_list "$pkg"
    end

    draw "$i" "$total" "$spinner[$spin_i]"

    set spin_i (math "$spin_i + 1")
    if test "$spin_i" -gt (count $spinner)
        set spin_i 1
    end

    sleep 0.005
end

echo ""
echo ""

echo "Installed suspect packages:"
echo "----------------------------"

if test (count $found_list) -eq 0
    echo "None"
else
    for p in $found_list
        echo "$p"
    end
end

Nota: Recuerda ejecutarlo con fish y no con bash.

Finalmente, si tienes algún script, simplemente elimínalo del sistema con pacman y mantén tu sistema seguro.

Y recuerda compartir este script con otros usuarios de Arch, o al menos infórmales sobre este problema para que estén protegidos.

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