Logotipo de Bitdoze

Mejores Clientes Herdr: Web UI, Apps Móviles y de Escritorio (2026)

Compara clientes Herdr: la TUI integrada, web UIs comunitarias, apps móviles y la app de escritorio herdrm. Puertos, postura de seguridad, trampas de versiones y un montaje VPS endurecido.

Dragos

Actualizado Publicado 40 min de lectura

Mejores Clientes Herdr: Web UI, Apps Móviles y de Escritorio

Herdr no tiene web UI oficial, ni app móvil oficial, ni app de escritorio oficial. Eso no es una carencia, es el diseño. Herdr es un runtime: un servidor en segundo plano posee PTYs reales, agentes como Claude Code, Codex, OpenCode, Gemini CLI y Pi viven dentro de ellos, y cada interfaz es solo un cliente que se conecta. Así que la pregunta es qué clientes Herdr usar para qué trabajo. Esta guía compara todo el ecosistema de clientes lado a lado: la TUI integrada, cinco opciones de herdr web ui comunitarias, las apps móviles y las apps de escritorio. Obtienes una tabla de decisión, la postura de seguridad de cada cliente, las trampas de versiones, y un montaje VPS endurecido que puedes correr esta noche. Para cómo funciona el runtime en sí, lee primero nuestra reseña de Herdr. Para qué correr dentro de los paneles, mira las mejores herramientas y agentes de codificación IA.

No hay web UI oficial de Herdr

Los clientes oficiales son la TUI (herdr), la API CLI/socket, SSH plano, herdr --remote, y la ventana multi-máquina (desde v0.9.0). Todo lo demás (ColliePWA, herdr-web-ui, Heeler, herdrm, herdrweb, Herdr UI) está construido por la comunidad. Los hilos de Reddit muestran que la confusión es real: la gente pregunta “¿qué diferencia hay con la web UI integrada?” y la respuesta es que no hay ninguna. Según herdr.dev/compare: “toda UI, la nuestra incluida, es solo un cliente que se conecta.”

¿Qué cuenta como cliente Herdr? (runtime vs. interfaz, en 90 segundos)

Herdr es un servidor de sesiones en segundo plano más uno o más clientes de terminal. El servidor posee PTYs reales; tus agentes de codificación corren dentro de esos PTYs. Cierra el cliente, pierde SSH, suspende el portátil. Los agentes siguen corriendo. Desconecta con ctrl+b q, reconecta con herdr. Esa es la parte que los usuarios de tmux ya entienden.

La parte que tmux no tiene: cada panel está marcado working / blocked / done / idle / unknown. Herdr detecta qué agente corre en el panel y rastrea su estado real. Ese estado es exactamente por lo que las apps de teléfono y dashboards web son útiles aquí. En tmux, un cliente de teléfono es solo una pantalla mostrando el texto del buffer. En Herdr, un cliente puede sacar a la superficie “estos tres agentes necesitan tu aprobación” y dejarte responder con un toque.

Por debajo es un único binario Rust. Sin Electron, sin cuenta, sin telemetría, Apache-2.0. El socket vive en ~/.config/herdr/herdr.sock (Windows usa un named pipe bajo %APPDATA%\herdr\). Los plugins lo extienden con un manifiesto herdr-plugin.toml y comandos ordinarios. Más sobre el modelo de confianza abajo. Al escribir esto: estable v0.9.3 (29 de septiembre de 2026) y unas 42,7k estrellas en github.com/herdrdev/herdr. Vuelve a comprobar ambos números el día que leas esto; 0.9.x se mueve rápido.

Clientes Herdr de un vistazo: la tabla de decisión

Situación Mejor cliente Exposición Piezas móviles
En el teclado de la máquina TUI integrada (herdr) Ninguna Cero servicios extra
Remoto en un portátil herdr --remote / herdr machine add Solo SSH Config de SSH
Revisar/aprobar agentes desde Android ColliePWA o Moshi (Play Store) Loopback + tailscale serve, o SSH/mosh 1 servicio de usuario, o moshi-hook
iPhone como consola real Heeler o Moshi (App Store), o SSH/Mosh SSH o tailnet 1 plugin herdr, moshi-hook, o nada
Aprobaciones estilo chat + push en navegador devswha/herdr-web-ui Loopback + Tailscale plugin herdr, puerto 7317
Fidelidad TUI completa en navegador kcosr/herdr-web Loopback, puerto 8787 bridge Rust, API vendored (experimental)
Consola nativa macOS entre máquinas herdrm SSH instalación brew
Ventana de escritorio nativa sobre el mismo daemon Herdr UI Solo daemon local, sin puerto brew/curl, build macOS firmado
App de escritorio en macOS, Linux o Windows Moshi Desktop Loopback + tu SSH curl/brew, app Tauri de ~11 MB
Git worktrees + web UI sin backend Herdr alecuba16/herdr-webui Loopback, puerto 8787 Su propio backend (bestia distinta)

Diagrama de flujo que empareja tu situación (escritorio, teléfono, navegador, macOS) con el mejor cliente Herdr

Un párrafo honesto antes de las secciones por cliente: de todos los clientes Herdr aquí, para muchos de vosotros la respuesta es “nada más allá de la TUI”. Si te sientas en la misma máquina que corre los agentes, o te va bien ssh más herdr, para aquí. Añade un cliente de terceros cuando aparezca un escenario real. “Quiero aprobar un Claude Code bloqueado desde el sofá” es un escenario real. “Vi un dashboard bonito” no lo es.

Empieza con la TUI integrada (y SSH plano)

Lo que obtienes antes de instalar nada de terceros es ya la mayor parte del valor.

bash
# Linux / macOS
curl -fsSL https://herdr.dev/install.sh | sh
# or: brew install herdr
# or: mise use -g herdr

# Windows (PowerShell): unsigned binary, SmartScreen may warn
irm https://herdr.dev/install.ps1 | iex

# verify
herdr -V
herdr status

herdr status es tu fuente de verdad: muestra la versión del servidor y los clientes conectados. Tras herdr update, herdr también lista qué servidores en ejecución siguen en la versión vieja (desde 0.9.2), con los comandos para reiniciar cada uno.

El bucle diario es pequeño: cd ~/project && herdr, divide con ctrl+b v (la división/arrastre con ratón también funciona), desconecta con ctrl+b q, reconecta después con herdr. SSH plano es también la ruta de teléfono oficialmente recomendada: la TUI se adapta a pantallas estrechas, y los docs muestran uso de teléfono-por-SSH. Clientes de teléfono recomendados por el proyecto: Moshi en iPhone, cualquier app SSH en otros.

Para trabajo remoto, dos cosas importan desde 0.9:

bash
# local UI rendering a remote server's session (keeps local clipboard image paste)
herdr --remote workbox

# multi-machine window (v0.9.0+): one sidebar, local + SSH machines
herdr machine add workbox --label "Build box"
herdr machine status          # v0.9.2+: rechecks every 30s
herdr machine reconnect       # handles MFA in-terminal

Pon el host en ~/.ssh/config primero. La config y los logs viven en ~/.config/herdr/ (config.toml, herdr.log, herdr-server.log, sockets, plugins). Recarga la config con herdr server reload-config.

Desconectar no es parar

herdr server stop mata cada proceso de panel. Eso significa tus agentes. Desconecta con ctrl+b q en su lugar. Tras un reinicio, el layout se restaura y las conversaciones de agentes pueden reanudarse solo si las integraciones reportaron IDs de sesión nativos (herdr integration install codex|claude|cursor) o el agente auto-reporta resume (nuevo en v0.9.2).

Mientras estás en la terminal todo el día, haz que la TUI se sienta como casa con plugins de Oh My Zsh e instala zoxide para una navegación de terminal más rápida. Ambos compensan uses o no una web UI.

Mejor Herdr web UI: cinco opciones comunitarias comparadas

No hay herdr web ui oficial (los repos llamados “herdr-web-ui” y “herdr-webui” son ambos proyectos comunitarios). Lo que existe es un clúster de clientes de terceros, todos construidos sobre la API de socket, todos enlazando a loopback por defecto. Aquí está el campo a octubre de 2026 (los conteos de estrellas derivan a diario, así que re-comprueba el día de publicación).

Proyecto Estrellas (oct 2026) Puerto Instalación Postura de auth Se rompe cuando…
devswha/herdr-web-ui 284 7317 herdr plugin install Loopback + QR Tailscale Las UIs de agente cambian (transcripciones de chat)
AltanS/collie 1,2k loopback curl … collie start Identidad tailnet + emparejado de dispositivo modo tmux/zellij (experimental)
sarathsp06/herdrweb 6 7331 un binario Go Ninguna, solo-loopback por diseño Raramente; proyecto pequeño
kcosr/herdr-web 41 8787 tarball de release + APK Allow-list de origen (no es auth) Actualizaciones de Herdr (API vendored)
alecuba16/herdr-webui 34 8787 tarball precompilado Loopback Reemplaza el backend; ver abajo

Todos enlazan a loopback. Ninguno trae autenticación real. Tú eres responsable del modelo de exposición. Ese es el tema de la sección de seguridad de abajo.

Una Herdr web UI en el navegador: barra lateral de agentes con chips de estado working/blocked/done, una tarjeta de aprobación para un comando pendiente, y un panel de terminal en vivo

Las piezas son las mismas en las cinco: una barra lateral de agentes con chips de estado, alguna forma de tarjeta de aprobación o respuesta rápida, y una vista de terminal en vivo por panel. Lo que difiere es el transporte (plugin vs binario independiente), la fidelidad (transcripción de chat vs terminal real), y cuánto confías en el modelo de auth.

herdr-web-ui: aprobaciones estilo chat como plugin herdr

La más “app de mensajería” del grupo. Las transcripciones de agentes se renderizan como chat (Claude Code, Codex, omp, omo, gjc, pi), el terminal en vivo está a un clic, y las aprobaciones se convierten en tarjetas pulsables con un paso de validación “comprobado estar actualizado antes de que se envíe tu respuesta”. Es una PWA con una fila de teclas Esc/Tab/Ctrl sobre el teclado, web push, un explorador de archivos, y un código QR apuntando a tu dirección Tailscale.

herdr-web-ui corriendo en un navegador: barra lateral de workspace a la izquierda, paneles de agente con pestañas, y un terminal en vivo mostrando salida de tests

bash
# needs herdr 0.9.0+, Bun 1.4+, Node 18+
herdr plugin install devswha/herdr-web-ui
# serves 127.0.0.1:7317; verify:
ss -tlnp | grep 7317
curl -I http://127.0.0.1:7317

MIT, y se instala como plugin herdr estándar. Buen default si quieres push + aprobaciones en un navegador sin pensar en servidores.

ColliePWA (AltanS/collie, 1,2k estrellas) es una PWA mobile-first y el cliente de terceros más popular de cualquier tipo. La pantalla de inicio responde “qué necesita tu input” primero: agentes bloqueados arriba, notificaciones push cuando un agente se bloquea, respuestas rápidas definidas en quick-replies.toml, un pad de teclas especiales, una vista “Changes” de solo lectura para diffs de git, y adjuntos de archivos. Los tokens de emparejado de dispositivo actúan como credenciales de escritura, y las “Crews” ponen varias máquinas detrás de una URL con failover. Seis idiomas de UI. Herdr es el backend primario; tmux y zellij son extras experimentales.

Collie PWA en un teléfono: bandeja de agentes agrupada por proyecto con conteos needs-you, unseen, working, done e idle

bash
curl -fsSL https://colliepwa.dev/install.sh | sh
collie start        # auto-detects herdr/tmux/zellij; binds loopback
# .env: COLLIE_TRUSTED_USER=you@example.com

Corre como servicio systemd de usuario con un bridge Bun. El README es directo sobre la exposición: “Nunca tailscale funnel esto”. Trata la URL como un login root. Ponle tailscale serve delante para que la tailnet inyecte Tailscale-User-Login y los clientes no puedan falsificar la cabecera de identidad. Hay una demo interactiva en colliepwa.dev si quieres tocar la UI antes de instalar. Los builds zip de Windows se entregan desde v1.16.0 (experimental). Referencia cruzada con la sección de móvil: esta es mi elección de teléfono por defecto en Android.

herdrweb: una bandeja de agentes de un solo binario

Construido porque “un teclado de teléfono convierte tmux en un pequeño simulador de rabia” (palabras del autor en r/herdr). Cada agente en cada espacio, ordenado blocked → working → idle, con un panel de terminal crudo, una fila de teclas, una paleta de slash-commands, adjuntar imágenes (el bridge escribe el archivo en el host y suelta la ruta en tu borrador), un visor de diffs Shiki, y PWA + Web Push. Usa RPCs reales (pane.read, agent.prompt, agent.send_keys), sin screen scraping.

bandeja de agentes herdrweb en un teléfono: cada agente en cada espacio ordenado working, done, idle

bash
curl -fsSL https://raw.githubusercontent.com/sarathsp06/herdrweb/main/install.sh | sh
herdrweb -service install && herdrweb -service start   # 127.0.0.1:7331
ss -tlnp | grep 7331

Un binario Go autocontenido (frontend SvelteKit embebido). -service install escribe una unidad systemd de usuario (o launchd en macOS). Sin autenticación, solo-loopback por diseño (“un operador, una máquina”). La exposición recomendada del autor es tailscale serve --bg --https=443 127.0.0.1:7331. Conteo de estrellas pequeño, pero es la arquitectura más limpia del grupo. MIT.

kcosr/herdr-web: un terminal de navegador completo

Si quieres la TUI real en un navegador (vim, htop, TUIs de pantalla completa, no una reescritura de chat), este es el indicado. Un bridge Rust HTTP/WebSocket más un frontend React con un renderer Ghostty web/WASM. Subidas drag-and-drop a paneles, visualización multi-cliente sincronizada (dos navegadores en el mismo panel), un APK Android vía Capacitor, y presets de launcher en ~/.config/herdr-web/launcher-presets.json. Tarballs de release para Linux x86_64 y macOS; sirve http://127.0.0.1:8787; necesita herdr v0.7.2+ corriendo.

kcosr/herdr-web en escritorio: una transcripción de chat junto a paneles de terminal reales en el navegador

Experimental: vendorea internos privados de herdr

kcosr/herdr-web entrega vendor/herdr-compat, una copia explícitamente “experimental, se espera que la forma del runtime/API cambie” de internos de herdr. Puede romperse en actualizaciones de herdr (el repo subió una actualización de compatibilidad v0.9 a los días de esa release). Su allow-listing de host/origen es una guardia contra DNS-rebinding, no autenticación. Nota también que el núcleo de herdr da solo un propietario de attach de terminal por panel; el bridge lo rodea. Espera churn; fija versiones y prueba actualizaciones antes de adoptar.

alecuba16/herdr-webui: git worktrees y una web UI (con truco)

La opción con más forma de IDE: navegación de workspace y worktree, attach de terminal, una UI de Git completa (status, diffs, staging, commits, stash, blame), un explorador de archivos con editor CodeMirror, y detección de estado de agente para unas 20 CLIs. Tarballs precompilados para Linux x86_64 y macOS; un servidor Rust Axum en http://127.0.0.1:8787; puede auto-instalarse como servicio (install-linux).

alecuba16/herdr-webui: árbol de archivos, vista de cambios git y paneles de agente en una web UI con forma de IDE

El truco, del README: trae su propio backend y puede correr sin binario herdr en absoluto. --backend-mode external-herdr (herdr 0.9.0+) se conecta a un servidor herdr real en su lugar. Eso lo convierte en un producto distinto a los otros de esta sección. Útil, pero no lo que trata este artículo. Menciónalo, no lo elijas como tu cliente herdr primario.

Los plugins son código sin sandbox

“Un plugin es código ordinario que corre en tu máquina”. Es la redacción oficial en herdr.dev/docs/plugins. herdr plugin install owner/repo previsualiza el manifiesto antes de que confirmes; fija con --ref, desinstala con herdr plugin uninstall <id>. No hay plugin update; reinstala para refrescar. El auto-índice del marketplace de repos públicos con tag herdr-plugin se refresca cada 30 minutos, lo que te dice lo joven que es parte de este código. Revisa antes de instalar, y mira la lista de mejores plugins Herdr para los diez que vale la pena auditar primero.

Opciones de app móvil Herdr: responde a agentes desde tu teléfono

La demanda de búsqueda de “herdr mobile app” es real, y es lo segundo que la gente busca tras las web UIs. Incluso hay un listado “Herdr Mobile” en Google Play y un proyecto herdr-mobile-relay en la wild (no he verificado ninguno; comprueba antes de instalar). Las opciones sólidas se dividen en dos campos, y la comunidad es vocal sobre ambos. Los terminal-nativos corren SSH + mosh y dicen cosas como “Mosh es honestamente la respuesta correcta”. Los de tocar-pantalla quieren una bandeja con botones de aprobar: “mis pulgares están hechos para tocar botones de like, no acordes de Ctrl”. Ambos son legítimos. Si quieres el montaje de teléfono terminal-first completo con aprobaciones push, nuestra guía paso a paso de Moshi + Herdr para teléfono cubre ese camino de principio a fin.

Aquí están los comandos por plataforma; las subsecciones de abajo cubren cómo es vivir con cada una.

Android (Collie PWA)

bash
curl -fsSL https://colliepwa.dev/install.sh | sh
collie start
# .env: COLLIE_TRUSTED_USER=you@example.com
tailscale serve --bg --https=443 127.0.0.1:<collie-port>

Abre https://<host>.tailnet.ts.net en el teléfono, instala a la pantalla de inicio, enrola push por dispositivo.

iPhone (Heeler)

bash
# on the host running herdr (needs Node 20+, herdr 0.7.5+, StreamLocal forwarding)
herdr plugin install ZingerLittleBee/Heeler/plugin --ref main --yes
herdr plugin action invoke heeler.pair    # scan the QR in the app

El transporte es la API JSON de herdr sobre SSH direct-streamlocal hacia herdr.sock. Sin puertos abiertos.

Cualquier teléfono (SSH + Mosh)

bash
# host
sudo apt install -y mosh
# phone: any SSH client (JuiceSSH on Android, Termius, Moshi on iPhone)
ssh you@server && herdr
# optional: mosh you@server  (survives network switches)

Cero servicios extra. La TUI se adapta a pantallas estrechas.

Las notificaciones push necesitan HTTPS

Web Push requiere un contexto seguro. http://ip:7331 plano se niega a suscribir, silenciosamente. Usa tailscale serve (u otro frontal TLS), enrola cada dispositivo por separado, y corre el “Enviar notificación de prueba” integrado de la UI antes de fiarte del pipeline.

Collie en Android: la ruta PWA

Añade a la pantalla de inicio y tienes un icono de app real, web push cuando un agente se bloquea, respuestas rápidas, y un pad de teclas especiales. Sin Play Store implicada, por diseño (igual en iOS). El emparejado de dispositivo actúa como credencial de escritura, así que una URL robada sola es de solo lectura. Con tailscale serve delante, COLLIE_TRUSTED_USER=you@example.com mapea la cabecera Tailscale-User-Login inyectada a tu identidad; los clientes no pueden falsificar esa cabecera a menos que posean la tailnet. Este es el modelo de seguridad más maduro del ecosistema. Mi elección por defecto en Android.

Heeler para iPhone: iOS nativo con emparejado QR

Heeler (ZingerLittleBee/Heeler, 428 estrellas) es una app SwiftUI nativa en la App Store (fallback a TestFlight si tu país no la tiene; verifica precio y disponibilidad). Es una consola de agentes ordenada blocked-primero, con un terminal en vivo renderizado por libghostty: scrollback nativo, y scroll táctil que conduce TUIs de pantalla completa. El compositor usa el teclado iOS completo (autocorrección, IME, dictado) y envía el mensaje una vez cuando confirmas. Adjuntos SFTP hasta 64 MiB, worktrees, soporte de SSH jump host, push cifrado extremo a extremo con Live Activities (según PRIVACY.md, el relay no puede leer el contenido).

Requisitos del host: Node 20+, herdr 0.7.5+, y sshd con forwarding StreamLocal (el default de OpenSSH). El emparejado es por QR vía un plugin herdr: herdr plugin action invoke heeler.pair, escanea, listo. Apache-2.0, y explícitamente no afiliado al proyecto herdr.

Heeler en iPhone: la consola de agentes listando sesiones con estado working/idle, host y estadísticas de diff por agente

Moshi (iOS + Android): el terminal de app-store que conoce Herdr

Moshi es un terminal móvil construido alrededor de CLIs de agentes en vez de SSH genérico, y está en ambas stores (iOS 17+, Android 10+). El tier gratuito cubre un terminal SSH completo con sesiones ilimitadas, notificaciones push para eventos de agente (rate-limited), dictado, y protección biométrica de claves. Pro ($7,99/mes o $69,99/año, tres dispositivos) desbloquea lo que lo convierte en un cliente Herdr real: transporte Mosh, la UI de multiplexor para tmux/Zellij/Herdr, pegado de imágenes, un visor de diffs, y acciones de bandeja ilimitadas.

Dos partes son específicas de Herdr. El selector de sesión lista sesiones Herdr corriendo con un panel de acordes Ctrl-B y gestos ajustados para pantallas estrechas, y la bandeja de agentes triagea eventos en “Needs you / Working / Done” para que no hagas scroll por el scrollback buscando el panel bloqueado. Emparejar un host instala moshi-hook, un pequeño daemon que lee los propios hooks de los agentes (Claude Code PreToolUse/Notification/Stop, Codex, OpenCode) y convierte los prompts de permiso en pushes Approve/Deny en la pantalla de bloqueo. Etiqueta eventos con $HERDR_SESSION, así que tocar una tarjeta te deja en esa sesión exacta.

Moshi en iPhone corriendo una sesión de Claude Code sobre Mosh, con pegar-capturas-en-chat destacado

Esta es la opción que le daría a alguien que quiere una app, no un flujo PWA. El montaje completo del host (VPS, hooks, trampas de mosh) está en la guía de teléfono Moshi + Herdr. Moshi también entrega una app de escritorio, cubierta abajo.

SSH + Mosh plano: la ruta oficialmente recomendada

Cero servicios extra, cero exposición web, y la respuesta que los docs de herdr dan primero. Cualquier app SSH, ssh you@server, herdr. Si las caídas de red importan, añade mosh: “Mosh es honestamente la respuesta correcta… sin compromisos” es el sentimiento en r/herdr, y coincide con el sesgo de “mantener el conteo de piezas móviles en cero” de todo este artículo. Los usuarios de Reddit corren exactamente esto: herdr + mosh en el dispositivo principal, una app SSH en el teléfono sobre Tailscale.

Dos opciones más que vale la pena conocer, ya que el ecosistema engendra clientes semanalmente. herdr-remote (407 estrellas) da una app de barra de menú macOS, un dashboard web para teléfono, y aprobaciones de un toque desde Telegram (/agents, /reply, /trust, /interrupt, más un /digest diario). Útil si vives en Telegram; su relay enlaza 127.0.0.1:8375 y quiere HERDR_RELAY_TOKEN puesto antes de cualquier tunnel. TermRover (termrover.sh) y ShadowTerm son terminales móviles SSH/mosh comerciales; TermRover entrega una vista “agents fleet” consciente de Herdr entre hosts. Los tres merecen una mirada más cercana en sus propios términos; ninguno está en mi stack por defecto aún.

app de barra de menú macOS de herdr-remote: un desplegable listando doce agentes con su estado idle/working

Apps de escritorio Herdr: Herdr UI, herdrm y Moshi Desktop (y por qué las “manager apps” son una trampa)

Si quieres una herdr desktop app real en vez de una ventana de terminal, herdrm (missuo/herdrm, 623 estrellas) es la respuesta más pulida en macOS. SwiftUI nativo + SwiftTerm, sin Electron, macOS 14+, binario universal, firmado y notarizado, auto-actualizaciones Sparkle. Una barra lateral de Spaces y Agents entre dispositivos locales + SSH (sockets remotos vía ssh -L, reconexión por dispositivo con backoff 1s→30s), búsqueda ⌘K entre cada dispositivo, notificaciones con salto-al-clic, y pegado de archivos/imágenes en paneles de agente (los pegados remotos se transmiten por SSH a una caché de 7 días/50 MB). La diferencia que importa: conecta PTYs reales vía herdr agent attach. Es un cliente, no un envoltorio de chat.

bash
brew install owo-network/brew/herdrm

herdrm en macOS: una barra lateral de Spaces/Agents cubriendo dispositivos locales y SSH junto a una consola de agente en vivo

Orden de auth: claves/agente OpenSSH, luego Tailscale SSH (1.98.0+), luego contraseña guardada en Keychain. El proyecto dice “etapa temprana”; el README reconoce a Heeler por los patrones de transporte.

Herdr UI: una ventana nativa sobre el mismo daemon

Herdr UI (penso/herdr-gpui, Apache-2.0, de Fabien Penso) es el cliente más nuevo de esta lista y el único que es una ventana de escritorio real en vez de un terminal o una página de navegador. Se conecta al daemon Herdr que ya corres: la TUI y la ventana muestran los mismos paneles, y la app nunca instala ni actualiza el propio daemon. Lo que la ventana añade sobre la TUI: despachar trabajo desde issues, revisión lado a lado, checkpoints, Teleport entre máquinas, y una vista general de Devices. Explícitamente no afiliado al proyecto herdr.

bash
# macOS 14.2+ (signed, notarized, universal)
brew install penso/tap/herdr-gpui

# Linux x86_64/ARM64 (glibc 2.39+): checksummed .deb/.rpm/Arch via APT, DNF or pacman
curl -fsSL https://herdrui.dev/install.sh | sh

# Windows (experimental, unsigned, no auto-update; WSL daemons work)
irm https://herdrui.dev/install.ps1 | iex

No hay puerto de escucha que asegurar: pinta los paneles del daemon local en una ventana renderizada por GPU, así que la matemática “toda web UI es un root shell” no aplica. El requisito corre al revés: instala herdr primero, porque Herdr UI solo se conecta a un daemon que ya existe.

Ahora la trampa. herdr.dev/compare distingue el runtime de las “manager apps” de escritorio (Conductor, Emdash, Superset) y apps de terminal (cmux, Warp) cuyos agentes se paran cuando la app cierra. Esas apps poseen el runtime. herdrm, Herdr UI, Heeler, Collie y el resto se conectan a él. Esa única diferencia (cliente vs. dueño del runtime) es toda la razón por la que un ecosistema Herdr puede existir. Si eliges una herramienta que posee los agentes, vuelves a la hoja de ruta de un único proveedor.

Moshi Desktop: la respuesta multiplataforma

herdrm es solo-macOS, pero Moshi Desktop cubre el resto: macOS (Apple Silicon e Intel .dmg), Windows x86_64 .exe, y Linux .AppImage, gratis para todos, unos 11 MB gracias a Tauri en vez de Chromium empaquetado (una reescritura Go renderizada por GPU está en alpha). El mismo equipo también entrega una CLI moshi: curl -fsSL https://getmoshi.app/install.sh | sh y luego moshi abre la UI idéntica en un navegador en 127.0.0.1, que es una web UI loopback para gente que no quiere una app en absoluto.

Es un cliente en el sentido que importa aquí: tus sesiones tmux y Herdr se quedan en el multiplexor, y Desktop las lee a través de moshi-hook (gateway solo-loopback; los hosts remotos viajan sobre tu propio SSH). Encima añade una vista de chat, diffs, comentarios de código fijados a la salida, previews de dev-server que puede tunelar, y aprobaciones de un toque. Cerrarlo nunca mata un agente, que es el test “las manager apps son una trampa” superado. En macOS también se instala por brew tap rjyo/moshi.

Seguridad primero: toda Herdr web UI es un root shell

Trata la URL de cualquier Herdr web UI como un login root a tu máquina. No “un dashboard”. El cliente puede leer tus archivos, correr comandos en tus paneles, y tocar cualquier credencial que tus sesiones de agente guarden. Ese es el producto. La pregunta es solo quién puede alcanzar esa URL.

Realidad de auth por cliente:

  • herdrweb no tiene autenticación y se queda solo-loopback por diseño (“un operador, una máquina”).
  • kcosr/herdr-web usa allow-listing de host/origen. El propio repo lo dice: eso es una guardia de DNS-rebinding, no autenticación de usuario.
  • herdr-web-ui va por defecto a loopback, con QR Tailscale para la ruta del teléfono.
  • ColliePWA tiene el modelo más maduro. tailscale serve inyecta Tailscale-User-Login, COLLIE_TRUSTED_USER lo mapea a una identidad, y los tokens de emparejado por dispositivo gobiernan las escrituras.
  • alecuba16/herdr-webui enlaza loopback y puede correr sin herdr en absoluto, así que su radio de explosión es lo que haga su propio backend.

El patrón que funciona: enlaza loopback, pon tailscale serve delante (TLS + cabecera de identidad), ábrelo solo desde dispositivos en tu tailnet.

Diagrama del modelo de exposición seguro de una Herdr web UI: Tailscale serve pone delante un cliente solo-loopback

Nunca las expongas a internet

Nunca enlaces 0.0.0.0. Nunca tailscale funnel. Si un cliente debe salir de la máquina, va detrás de identidad tailnet (o una VPN mesh equivalente) con TLS. Además: pane_history = true en herdr es experimental y está OFF por una razón. Las pantallas persistidas pueden contener secretos, y activarlo los escribe a disco. Si ya gestionas stacks Docker desde una web UI, el mismo patrón loopback + Tailscale aplica a Dockge.

  • Enlace loopback confirmado: ss -tlnp | grep -E '7317|7331|8787' muestra 127.0.0.1, no 0.0.0.0
  • Expuesto vía tailscale serve, nunca tailscale funnel
  • COLLIE_TRUSTED_USER puesto (Collie) o emparejado de dispositivo enrolado (Heeler/herdr-web-ui)
  • Push probado sobre HTTPS desde cada dispositivo enrolado
  • Plugins revisados antes de instalar, --ref fijado, los sin usar desinstalados
  • ~/.config/herdr incluido en backups con permisos restringidos

El montaje de referencia: VPS Hetzner + Herdr + Tailscale + un cliente

Affiliate Disclosure

Some links in this guide are affiliate links. If you buy through them, we may earn a small commission at no extra cost to you. This helps us keep testing and updating these recommendations.

Este es el camino “córralo esta noche” para un montaje herdr en VPS, y es deliberadamente aburrido. Los agentes viven en un VPS pequeño. Uso Hetzner Cloud para esta clase de carga: una máquina clase CX22 de 4-5 €/mes basta porque los agentes de codificación están limitados por API, no por CPU. El portátil es solo un cliente. Ese es también el propio argumento del equipo herdr para 0.9: “el portátil se está convirtiendo en un cliente”.

Superficie de ops: un binario (herdr), un servicio systemd de usuario (Collie o herdrweb), y Tailscale que probablemente ya corres. Sin Docker, sin bases de datos, cero contenedores que cuidar. Lo único de lo que hacer backup es ~/.config/herdr/.

Arquitectura del montaje Herdr de referencia: agentes en un VPS Hetzner, teléfono y portátil como clientes sobre Tailscale

Prerequisitos

  • VPS Linux: clase Hetzner CX22 o mejor. CPU compartida está bien; los builds y suites de tests pueden atascarse en máquinas diminutas. Cómo hacer benchmark a un servidor cloud antes de comprometerte si comparas proveedores. Un VPS KVM económico de Hostinger también funciona. Cualquier máquina pequeña con 2+ GB de RAM vale
  • Cuenta Tailscale + tailnet en el VPS, portátil y teléfono
  • Herdr 0.9.x en el VPS: curl -fsSL https://herdr.dev/install.sh | sh, verificado con herdr -V && herdr status
  • Un nombre MagicDNS (o dominio) para tailscale serve HTTPS
  • Puertos: ninguno expuesto públicamente. Solo loopback (7317 / 7331 / 8787 según el cliente)
Despliega en Hetzner Cloud

Camino feliz

  1. Aprovisiona el VPS, crea un usuario sin root, luego:
bash
sudo apt update && sudo apt install -y tailscale
sudo tailscale up
  1. Instala herdr y verifica:
bash
curl -fsSL https://herdr.dev/install.sh | sh
herdr -V && herdr status
  1. Empieza trabajo real: cd ~/project && herdr, lanza tu agente en un panel como lo harías normalmente, y desconecta con ctrl+b q.

  2. Instala exactamente un cliente. Teléfono-primero: Collie. Bandeja-primero: herdrweb.

bash
# option A: Collie
curl -fsSL https://colliepwa.dev/install.sh | sh
collie start

# option B: herdrweb
curl -fsSL https://raw.githubusercontent.com/sarathsp06/herdrweb/main/install.sh | sh
herdrweb -service install && herdrweb -service start
  1. Ponlo al frente en la tailnet:

tailscale serve (recomendado)

bash
tailscale serve --bg --https=443 127.0.0.1:7331
# phone browser: https://<host>.tailnet.ts.net

TLS + cabecera de identidad + Web Push funciona. Este es el default. Usa tailscale serve status para ver qué está publicado y tailscale serve reset para desmontarlo.

Solo tunnel SSH

bash
ssh -L 7331:127.0.0.1:7331 you@vps
# laptop browser: http://127.0.0.1:7331

Sin dependencia de Tailscale, sin cabecera de identidad, y sin Web Push (necesita HTTPS). Bien para un vistazo rápido; molesto como flujo de teléfono diario.

  1. Opcional en Mac: brew install owo-network/brew/herdrm, luego herdr machine add workbox --label "Build box" para que una barra lateral cubra portátil y VPS.

Verifica

  • herdr status: las versiones de cliente y servidor coinciden (0.9.2+ lista servidores obsoletos tras herdr update)
  • ss -tlnp | grep -E '7317|7331|8787' prueba que el enlace es solo-loopback
  • curl -I https://<host>.tailnet.ts.net desde el navegador del teléfono: espera TLS, no connection refused
  • Test de push desde los ajustes de la UI (“Enviar notificación de prueba”) en cada dispositivo enrolado
  • Ensayo de extremo a extremo: desconecta → cierra el portátil → reconecta desde el teléfono → el agente sigue a mitad de tarea
  • herdr agent list: los estados (working/blocked/done/idle) se agregan correctamente

Qué cuesta / notas de ops

Herdr y cada cliente de este artículo es gratis y open source (Apache-2.0 / MIT), excepto los terminales móviles comerciales (TermRover, ShadowTerm; verifica precios antes de comprar). Tu único coste es el VPS, orden de magnitud 4-5 €/mes. Sin GPU. Si prefieres no alquilar, corre Herdr en casa en un mini PC. Un mini PC compacto como el ASUS DC510 es una máquina always-on sensata, y el modelo Tailscale es idéntico. Backups: tar de ~/.config/herdr al trabajo S3 que ya tengas.

Rollback / desmontaje

bash
collie stop                      # or: herdrweb -service stop / -service uninstall
herdr plugin uninstall <id>      # remove heeler / herdr-web-ui plugins
tailscale serve reset            # unpublish the HTTPS front

herdr server stop solo cuando quieras matar los agentes, no para “he terminado por hoy”. En el VPS todo el stack son 2-3 binarios nativos; la eliminación es borrar la unidad de servicio y el directorio de config.

Trampas de versiones y modos de fallo (0.9.x se mueve rápido)

0.9.x se mueve rápido

Cada cliente fija un mínimo de herdr distinto: herdr-web-ui necesita 0.9.0+, Heeler 0.7.5+ (más Node 20), kcosr/herdr-web 0.7.2+, el modo external de alecuba16 0.9.0+. Re-comprueba ambos lados del par el día de actualización.

  1. herdr server stop mata procesos de agente. Desconectar ≠ parar. Un reinicio restaura el layout, y reanudar conversación necesita herdr integration install codex|claude|cursor (o un agente auto-reportante, v0.9.2+). Verifica con herdr status.
  2. Cliente más nuevo que el servidor tras herdr update. El servidor viejo sigue corriendo; 0.9.2+ lista qué servidores siguen obsoletos, con comandos de reinicio. Reemplazar el servidor remoto pregunta primero porque para procesos de paneles. herdr update --handoff migra en vivo (experimental).
  3. Detección de estado incorrecta (Codex falso-idle, spinner de Claude, estados OpenCode V2). Los clientes de transcripción de chat persiguen cambios de UI de agente; los changelogs 0.9.2/0.9.3 están llenos de correcciones de detección. Arreglo: herdr agent explain <agent> --verbose muestra qué regla de detección disparó, y herdr server update-agent-manifests baja manifiestos nuevos.
  4. Deriva de API. kcosr/herdr-web vendorea protocolo privado de herdr y necesita actualizaciones por cada release de herdr. Asume que se rompe en actualizaciones major y fija versiones.
  5. El push falla silenciosamente sin un contexto seguro HTTPS. http://ip:7331 plano no suscribirá. Enrola por dispositivo, luego usa la notificación de prueba integrada.
  6. Rareza de Heeler/SSH. El forwarding StreamLocal debe estar activado (default de OpenSSH; el onboarding avisa si está desactivado). Las máquinas guardadas nunca responden prompts interactivos, así que un cambio de host-key o MFA hace que la máquina muestre “Attention”. Corre herdr --remote host una vez interactivamente, o herdr machine reconnect (v0.9.2). Las claves protegidas por passphrase deben estar en ssh-agent.
  7. Estado multi-máquina obsoleto. Las filas de una máquina caída se quedan visibles pero atenuadas y cacheadas; no puedes escribir en ellas. Local siempre abre primero, así que un VPS lento no puede frenar tu portátil.
  8. La CLI apunta a un servidor cada vez, incluso en la UI multi-máquina 0.9. herdr --machine <label> (v0.9.1+) reenvía comandos. Los IDs tienen alcance por servidor. Léelos de la salida --json, nunca adivines.
  9. No envuelvas tmux entre herdr y el agente. Herdr ve tmux, no el agente, y la detección se rompe. Elige una capa.
  10. Rareza de Windows. install.ps1 es un binario sin firmar y SmartScreen puede avisar; install.cmd es el fallback cuando la seguridad de endpoint bloquea el one-liner. Mira herdr.dev/docs/windows-beta para lo que sigue sin soportar (attach de terminal directo, handoff en vivo, bridge de imagen de portapapeles).

Watchlist: Herdr Cloud y lo rápido que se mueve este ecosistema

Herdr Cloud está en lista de espera: un relay que conecta tus máquinas sin montar SSH, con tráfico de terminal cifrado extremo a extremo. El pitch es “Cloud las conecta en vez de alojar los agentes”, así que puede que eventualmente reemplace la fontanería de tailscale serve del montaje de referencia. Apúntate a la lista de espera si tienes curiosidad; no diseñes alrededor de ello todavía.

El ecosistema se mueve rápido. Múltiples clientes independientes salieron a las semanas del soporte multi-máquina de v0.9, y el marketplace de plugins re-indexa cada 30 minutos. El conteo de estrellas (42,7k a octubre de 2026) sigue atrayendo nuevos constructores. Algunos de esos clientes serán abandonware en seis meses. Mantén tu stack en herdr más un cliente, y cambiar el cliente después es barato. Si quieres seguir lo que vale la pena marcar, repos IA que vale la pena estrellar, incluyendo el ecosistema Herdr es la lista corriente.

FAQ

¿Hay una web UI o app móvil oficial de Herdr?

No. Los clientes oficiales son la TUI, la API CLI/socket, SSH plano, herdr --remote, y la ventana multi-máquina. Todo lo demás (ColliePWA, herdr-web-ui, Heeler, herdrm, herdrweb, Herdr UI) está construido por la comunidad. La confusión de nombres está documentada: la gente pregunta “¿qué diferencia hay con la web UI integrada?” y la respuesta es que no hay ninguna.

¿Herdr vs tmux para agentes de codificación: cuál usar?

Herdr añade estado consciente de agente (working/blocked/done), una API de socket, y un ecosistema de clientes encima del flujo estilo tmux; tmux más mosh sigue siendo una respuesta terminal-nativa legítima. Si solo necesitas paneles persistentes, tmux está bien. Nuestra reseña de Herdr cubre la comparación completa. Para una visión distinta del multiplexado en sí, Superlogical Rex hace del terminal el multiplexor en vez de correr uno dentro (solo macOS por ahora).

¿Puedo aprobar prompts de Claude Code desde mi teléfono?

Sí. Collie da tarjetas de responder-con-toque, herdr-web-ui renderiza aprobaciones como tarjetas de chat pulsables, Heeler tiene push cifrado más Live Activities, y Moshi convierte prompts en pushes Approve/Deny en la pantalla de bloqueo vía moshi-hook. Los cuatro asumen enlace loopback más una tailnet, no una URL pública.

¿Es seguro exponer una Herdr web UI en internet?

No. Enlaza loopback y pon tailscale serve delante. Nunca tailscale funnel, nunca 0.0.0.0. La URL es un login root a lo que el proceso herdr pueda alcanzar: archivos, comandos, credenciales de agente.

¿El ecosistema Herdr cuesta algo?

No. Herdr y todos los clientes cubiertos aquí son gratis y open source; TermRover y ShadowTerm son las excepciones comerciales. Cualquier VPS pequeño funciona, orden de magnitud 4-5 €/mes, y no hay GPU implicada; los agentes de codificación están limitados por API.

Para terminar

Empieza con la TUI. Añade exactamente un cliente cuando aparezca el escenario de teléfono, y mantén todo detrás de la tailnet. Copia el montaje de referencia si quieres la versión aburrida y verificable de eso.

Lee nuestra reseña de Herdr Monta control de teléfono con Moshi