Die besten Herdr-Clients: Web-UI, Mobile- & Desktop-Apps (2026)
Herdr-Clients im Vergleich: eingebaute TUI, Community-Web-UIs, Mobile-Apps und die herdrm-Desktop-App. Ports, Sicherheitslage, Versions-Fallen und ein gehärtetes VPS-Setup.
34 Min. Lesezeit

Herdr
Part 3 of 4
Herdr hat keine offizielle Web-UI, keine offizielle Mobile-App und keine offizielle Desktop-App. Das ist keine Lücke, sondern das Design. Herdr ist eine Runtime: Ein Hintergrund-Server besitzt echte PTYs, Agents wie Claude Code, Codex, OpenCode, Gemini CLI und Pi leben darin, und jedes Interface ist nur ein Client, der attacht. Die Frage ist also, welche Herdr-Clients du für welchen Job nutzt. Dieser Guide vergleicht das gesamte Client-Ökosystem Seite an Seite: die eingebaute TUI, fünf Community-Herdr-Web-UIs, die Mobile-Apps und die Desktop-Apps. Du bekommst eine Entscheidungstabelle, die Sicherheitslage jedes Clients, die Versions-Fallen und ein gehärtetes VPS-Setup, das du heute Abend fahren kannst. Wie die Runtime selbst funktioniert, liest du zuerst in unserem Herdr-Review. Was du in den Panes laufen lässt, steht in den besten AI-Coding-Tools und -Agents.
Es gibt keine offizielle Herdr-Web-UI
Die offiziellen Clients sind die TUI (herdr), die CLI/Socket-API, schlichtes SSH, herdr --remote und das Multi-Machine-Fenster (seit v0.9.0). Alles andere (ColliePWA, herdr-web-ui, Heeler, herdrm, herdrweb, Herdr UI) ist von der Community gebaut. Reddit-Threads zeigen, dass die Verwirrung real ist: Leute fragen „was ist der Unterschied zur eingebauten Web-UI?“, und die Antwort ist, dass es keine gibt. Zitat herdr.dev/compare: „every UI, ours included, is just a client that attaches.”
Was zählt als Herdr-Client? (Runtime vs. Interface, in 90 Sekunden)
Herdr ist ein Hintergrund-Session-Server plus ein oder mehrere Terminal-Clients. Der Server besitzt echte PTYs; deine Coding-Agents laufen in diesen PTYs. Client schließen, SSH verlieren, Laptop in den Schlafmodus schicken. Die Agents laufen weiter. Detache mit ctrl+b q, reattache mit herdr. Das ist der Teil, den tmux-User schon verstehen.
Der Teil, den tmux nicht hat: Jedes Pane ist markiert als working / blocked / done / idle / unknown. Herdr erkennt, welcher Agent im Pane läuft, und trackt seinen tatsächlichen Zustand. Genau dieser State ist der Grund, warum Handy-Apps und Web-Dashboards hier nützlich sind. In tmux ist ein Handy-Client nur ein Bildschirm, der zeigt, was im Buffer steht. In Herdr kann ein Client „diese drei Agents brauchen deine Approval” anzeigen und dich per Tap antworten lassen.
Unter der Haube ist es eine einzelne Rust-Binary. Kein Electron, kein Account, keine Telemetrie, Apache-2.0. Der Socket lebt unter ~/.config/herdr/herdr.sock (Windows nutzt eine Named Pipe unter %APPDATA%\herdr\). Plugins erweitern es mit einem herdr-plugin.toml-Manifest und gewöhnlichen Befehlen. Mehr zum Trust Model weiter unten. Zum Zeitpunkt des Schreibens: stable v0.9.3 (29. September 2026) und etwa 42,7k Sterne auf github.com/herdrdev/herdr. Prüfe beide Zahlen am Tag, an dem du das liest, nochmal; 0.9.x bewegt sich schnell.
Herdr-Clients auf einen Blick: die Entscheidungstabelle
| Situation | Bester Client | Exposure | Bewegliche Teile |
|---|---|---|---|
| An der Tastatur der Box | Eingebaute TUI (herdr) |
Keine | Null extra Services |
| Remote am Laptop | herdr --remote / herdr machine add |
Nur SSH | SSH-Config |
| Agents von Android aus checken/approven | ColliePWA oder Moshi (Play Store) | Loopback + tailscale serve, oder SSH/Mosh |
1 User-Service, oder moshi-hook |
| iPhone als echte Konsole | Heeler oder Moshi (App Store), oder SSH/Mosh | SSH oder Tailnet | 1 Herdr-Plugin, moshi-hook oder nichts |
| Chat-artige Approvals + Push im Browser | devswha/herdr-web-ui | Loopback + Tailscale | Herdr-Plugin, Port 7317 |
| Volle TUI-Treue im Browser | kcosr/herdr-web | Loopback, Port 8787 | Rust-Bridge, vendored API (experimentell) |
| Native macOS-Konsole über Maschinen | herdrm | SSH | brew-Install |
| Natives Desktop-Fenster auf demselben Daemon | Herdr UI | Nur lokaler Daemon, kein Port | brew/curl, signierter macOS-Build |
| Desktop-App auf macOS, Linux oder Windows | Moshi Desktop | Loopback + dein SSH | curl/brew, ~11 MB Tauri-App |
| Git-Worktrees + Web-UI ohne Herdr-Backend | alecuba16/herdr-webui | Loopback, Port 8787 | Eigenes Backend (anderes Kaliber) |

Ein ehrlicher Absatz vor den Client-Abschnitten: Von allen Herdr-Clients hier lautet die Antwort für viele von euch „nichts über die TUI hinaus”. Wenn du an derselben Maschine sitzt, auf der die Agents laufen, oder mit ssh plus herdr zufrieden bist, hör hier auf. Füge einen Third-Party-Client hinzu, wenn ein echtes Szenario auftaucht. „Ich will einen blockierten Claude Code vom Sofa aus approven” ist ein echtes Szenario. „Ich habe ein hübsches Dashboard gesehen” ist keins.
Fang mit der eingebauten TUI an (und schlichtem SSH)
Was du bekommst, bevor du irgendetwas Drittes installierst, ist schon der größte Teil des Werts.
# 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 statusherdr status ist deine Quelle der Wahrheit: Es zeigt die Server-Version und attachte Clients. Nach herdr update listet Herdr außerdem, welche laufenden Server noch auf der alten Version sind (seit 0.9.2), mit den Befehlen, um jeden neu zu starten.
Der tägliche Loop ist klein: cd ~/project && herdr, splitten mit ctrl+b v (Maus-Split/Ziehen geht auch), detachen mit ctrl+b q, später mit herdr reattachen. Schlichtes SSH ist offiziell auch der empfohlene Handy-Pfad: Die TUI passt sich schmalen Screens an, und die Docs zeigen Phone-over-SSH-Nutzung. Empfohlene Handy-Clients laut Projekt: Moshi auf dem iPhone, irgendeine SSH-App sonst.
Für Remote-Arbeit zählen seit 0.9 zwei Dinge:
# 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-terminalLeg den Host vorher in ~/.ssh/config an. Config und Logs leben in ~/.config/herdr/ (config.toml, herdr.log, herdr-server.log, Sockets, Plugins). Config neu laden mit herdr server reload-config.
Detachen ist nicht Stoppen
herdr server stop killt jeden Pane-Prozess. Das heißt: deine Agents. Detache stattdessen mit ctrl+b q. Nach einem Neustart wird das Layout wiederhergestellt, und Agent-Konversationen können nur fortgesetzt werden, wenn die Integrationen native Session-IDs gemeldet haben (herdr integration install codex|claude|cursor) oder der Agent Resume selbst meldet (neu in v0.9.2).
Während du den Tag im Terminal verbringst, mach die TUI mit Oh-My-Zsh-Plugins wohnlich und installiere zoxide für schnellere Terminal-Navigation. Beides zahlt sich aus, egal ob du je eine Web-UI anfasst.
Beste Herdr-Web-UI: fünf Community-Optionen im Vergleich
Es gibt keine offizielle herdr web ui (die Repos namens „herdr-web-ui” und „herdr-webui” sind beides Community-Projekte). Was existiert, ist ein Cluster von Third-Party-Clients, alle auf der Socket-API gebaut, alle binden per Default Loopback. Hier das Feld, Stand Oktober 2026 (Sternezahlen driften täglich, also am Publish-Tag nochmal prüfen).
| Projekt | Sterne (Okt 2026) | Port | Install | Auth-Lage | Bricht, wenn… |
|---|---|---|---|---|---|
| devswha/herdr-web-ui | 284 | 7317 | herdr plugin install |
Loopback + Tailscale-QR | Agent-UIs sich ändern (Chat-Transkripte) |
| AltanS/collie | 1,2k | Loopback | curl … collie start |
Tailnet-Identität + Device-Pairing | tmux-/zellij-Modus (experimentell) |
| sarathsp06/herdrweb | 6 | 7331 | eine Go-Binary | Keine, by design Loopback-only | Selten; kleines Projekt |
| kcosr/herdr-web | 41 | 8787 | Release-Tarball + APK | Origin-Allowlist (kein Auth) | Herdr-Upgrades (vendored API) |
| alecuba16/herdr-webui | 34 | 8787 | Prebuilt-Tarball | Loopback | Es ersetzt das Backend; siehe unten |
Alle binden Loopback. Keine shipped echte Authentifizierung. Du bist für das Exposure-Modell verantwortlich. Das ist das Thema des Security-Abschnitts weiter unten.

Die Bausteine sind bei allen fünf gleich: eine Agent-Sidebar mit State-Chips, irgendeine Form von Approval-Karte oder Quick Reply und eine Live-Terminal-Ansicht pro Pane. Was sich unterscheidet, ist der Transport (Plugin vs. Standalone-Binary), die Treue (Chat-Transkript vs. echtes Terminal) und wie sehr du dem Auth-Modell vertraust.
herdr-web-ui: Chat-artige Approvals als herdr-Plugin
Der „Messaging-App”-Kandidat des Bunches. Agent-Transkripte rendern als Chat (Claude Code, Codex, omp, omo, gjc, pi), das Live-Terminal ist einen Klick entfernt, und Approvals werden zu tappbaren Karten mit einem „checked to be current before your answer is sent”-Validierungsschritt. Es ist eine PWA mit einer Esc-/Tab-/Ctrl-Tastenleiste über der Tastatur, Web Push, einem File-Browser und einem QR-Code, der auf deine Tailscale-Adresse zeigt.

# 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:7317MIT, und installiert sich als Standard-herdr-Plugin. Guter Default, wenn du Push + Approvals im Browser willst, ohne über Server nachzudenken.
ColliePWA: der beliebteste Third-Party-Herdr-Client
ColliePWA (AltanS/collie, 1,2k Sterne) ist eine Mobile-first-PWA und der beliebteste Third-Party-Client überhaupt. Der Home-Screen beantwortet zuerst „was braucht deinen Input”: blockierte Agents oben, Push-Benachrichtigungen, wenn ein Agent blockiert, Quick Replies definiert in quick-replies.toml, ein Special-Keys-Pad, eine Read-only-„Changes”-Ansicht für Git-Diffs und Dateianhänge. Device-Pairing-Tokens fungieren als Schreib-Credentials, und „Crews” bringen mehrere Maschinen hinter eine URL mit Failover. Sechs UI-Sprachen. Herdr ist das primäre Backend; tmux und zellij sind experimentelle Extras.

curl -fsSL https://colliepwa.dev/install.sh | sh
collie start # auto-detects herdr/tmux/zellij; binds loopback
# .env: [email protected]Läuft als systemd-User-Service mit einer Bun-Bridge. Das README ist unverblümt zum Thema Exposure: „Never tailscale funnel this”. Behandle die URL wie ein Root-Login. Stell tailscale serve davor, damit das Tailnet Tailscale-User-Login injiziert und Clients den Identity-Header nicht fälschen können. Es gibt eine interaktive Demo auf colliepwa.dev, wenn du die UI vor dem Installieren anfassen willst. Windows-Zip-Builds gibt es seit v1.16.0 (experimentell). Querverweis auf den Mobile-Abschnitt: Das ist mein Default-Pick auf Android.
herdrweb: eine One-Binary-Agent-Inbox
Gebaut, weil „a phone keyboard turns tmux into a tiny rage simulator” (die Worte des Autors auf r/herdr). Jeder Agent über jeden Space hinweg, sortiert blocked → working → idle, mit einem rohen Terminal-Pane, einer Tastenleiste, einer Slash-Command-Palette, Image-Attach (die Bridge schreibt die Datei host-seitig und legt den Pfad in deinen Draft), einem Shiki-Diff-Viewer und PWA + Web Push. Nutzt echte RPCs (pane.read, agent.prompt, agent.send_keys), kein Screen-Scraping.

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 7331Eine in sich geschlossene Go-Binary (SvelteKit-Frontend eingebettet). -service install schreibt eine systemd-User-Unit (oder launchd auf macOS). Keine Authentifizierung, by design Loopback-only („one operator, one machine”). Die vom Autor empfohlene Exposure ist tailscale serve --bg --https=443 127.0.0.1:7331. Kleine Sternezahl, aber die sauberste Architektur der Gruppe. MIT.
kcosr/herdr-web: ein vollwertiges Browser-Terminal
Wenn du die echte TUI im Browser willst (vim, htop, Full-Screen-TUIs, nicht ein Chat-Rewrite), ist es dieser. Eine Rust-HTTP/WebSocket-Bridge plus ein React-Frontend mit einem Ghostty-Web/WASM-Renderer. Drag-and-Drop-Uploads in Panes, synchronisiertes Multi-Client-Viewing (zwei Browser auf demselben Pane), ein Android-APK via Capacitor und Launcher-Presets in ~/.config/herdr-web/launcher-presets.json. Release-Tarballs für Linux x86_64 und macOS; serviert http://127.0.0.1:8787; braucht ein laufendes herdr v0.7.2+.

Experimentell: vendored private herdr-Internals
kcosr/herdr-web shippt vendor/herdr-compat, eine explizit „experimental, runtime/API shape is expected to change” genannte Kopie von herdr-Internals. Es kann bei herdr-Upgrades brechen (das Repo pushte ein v0.9-Compat-Update innerhalb von Tagen nach dem Release). Sein Host-/Origin-Allowlisting ist ein DNS-Rebinding-Guard, keine Authentifizierung. Beachte außerdem: herdr core erlaubt nur einen Terminal-Attach-Owner pro Pane; die Bridge arbeitet daran vorbei. Rechne mit Änderungsfluss; pinne Versionen und teste Upgrades, bevor du es übernimmst.
alecuba16/herdr-webui: Git-Worktrees und eine Web-UI (mit einem Haken)
Die IDE-förmigste Option: Workspace- und Worktree-Navigation, Terminal-Attach, eine volle Git-UI (Status, Diffs, Staging, Commits, Stash, Blame), ein File-Explorer mit CodeMirror-Editor und Agent-Status-Erkennung für grob 20 CLIs. Prebuilt-Tarballs für Linux x86_64 und macOS; ein Rust-Axum-Server auf http://127.0.0.1:8787; er kann sich selbst als Service installieren (install-linux).

Der Haken, aus dem README: Es shippt sein eigenes Backend und kann ganz ohne herdr-Binary laufen. --backend-mode external-herdr (herdr 0.9.0+) attacht stattdessen an einen echten herdr-Server. Das macht es zu einem anderen Produkt als die anderen in diesem Abschnitt. Nützlich, aber nicht das Thema dieses Artikels. Erwähnenswert, aber nicht dein primärer herdr-Client.
Plugins sind unsandboxed Code
„A plugin is ordinary code that runs on your machine”. Das ist der offizielle Wortlaut auf herdr.dev/docs/plugins. herdr plugin install owner/repo zeigt das Manifest zur Vorschau, bevor du bestätigst; pinne mit --ref, deinstalliere mit herdr plugin uninstall <id>. Es gibt kein plugin update; reinstalliere zum Aktualisieren. Der Marketplace-Auto-Index öffentlicher Repos mit dem Tag herdr-plugin aktualisiert alle 30 Minuten, was dir sagt, wie jung ein Teil dieses Codes ist. Reviewe vor dem Installieren und schau in die Beste-Herdr-Plugins-Shortlist für die zehn, die sich zuerst zu prüfen lohnen.
Herdr-Mobile-App-Optionen: Agents vom Handy aus beantworten
Die Suchnachfrage nach „herdr mobile app” ist real und das zweite, wonach Leute nach den Web-UIs suchen. Es gibt sogar einen „Herdr Mobile”-Eintrag auf Google Play und ein herdr-mobile-relay-Projekt in freier Wildbahn (ich habe beides nicht verifiziert; prüfe vor dem Installieren). Die soliden Optionen teilen sich in zwei Lager, und die Community ist bei beiden lautstark. Terminal-native Leute fahren SSH + Mosh und sagen Dinge wie „Mosh is honestly the correct answer”. Handy-Tipper wollen eine Inbox mit Tap-to-Approve-Buttons: „my thumbs are built for tapping like buttons, not Ctrl chords”. Beides ist legitim. Wenn du das volle Terminal-first-Handy-Setup mit Push-Approvals willst, deckt unser Schritt-für-Schritt-Moshi-+-Herdr-Handy-Setup diesen Pfad Ende zu Ende ab.
Hier die Befehle pro Plattform; die Unterabschnitte darunter beschreiben, wie es sich mit jeder lebt.
Android (Collie PWA)
curl -fsSL https://colliepwa.dev/install.sh | sh
collie start
# .env: [email protected]
tailscale serve --bg --https=443 127.0.0.1:<collie-port>Öffne https://<host>.tailnet.ts.net auf dem Handy, installiere auf den Home-Screen, registriere Push pro Gerät.
iPhone (Heeler)
# 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 appDer Transport ist herdrs JSON-API über SSH-direct-streamlocal auf herdr.sock. Keine offenen Ports.
Jedes Handy (SSH + Mosh)
# 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)Null extra Services. Die TUI passt sich schmalen Screens an.
Push-Benachrichtigungen brauchen HTTPS
Web Push erfordert einen sicheren Kontext. Schlichtes http://ip:7331 verweigert den Subscribe still. Nutze tailscale serve (oder einen anderen TLS-Front), registriere jedes Gerät separat und fahre die eingebaute „Send test notification”-Funktion der UI, bevor du der Pipeline vertraust.
Collie auf Android: der PWA-Weg
Zum Home-Screen hinzufügen, und du hast ein echtes App-Icon, Web Push, wenn ein Agent blockiert, Quick Replies und ein Special-Keys-Pad. Kein Play Store involviert, by design (dasselbe für iOS). Device-Pairing fungiert als Schreib-Credential, sodass eine geklaute URL allein nur lesen kann. Mit tailscale serve davor mappt [email protected] den injizierten Tailscale-User-Login-Header auf deine Identität; Clients können diesen Header nicht fälschen, solange sie nicht das Tailnet besitzen. Das ist das sicherheitsreifste Modell im Ökosystem. Mein Android-Default.
Heeler fürs iPhone: natives iOS mit QR-Pairing
Heeler (ZingerLittleBee/Heeler, 428 Sterne) ist eine native SwiftUI-App im App Store (TestFlight-Fallback, falls dein Land sie nicht hat; prüfe Preis und Verfügbarkeit). Es ist eine Agent-Konsole, blocked-first sortiert, mit einem Live-Terminal gerendert von libghostty: natives Scrollback und Touch-Scrolling, das Full-Screen-TUIs steuert. Der Composer nutzt die volle iOS-Tastatur (Autokorrektur, IME, Diktat) und schickt die Nachricht einmal, wenn du sie abschickst. SFTP-Anhänge bis 64 MiB, Worktrees, SSH-Jump-Host-Support, Ende-zu-Ende-verschlüsselter Push mit Live Activities (laut PRIVACY.md kann der Relay den Inhalt nicht lesen).
Host-Anforderungen: Node 20+, herdr 0.7.5+ und sshd mit StreamLocal-Forwarding (der OpenSSH-Default). Das Pairing ist QR-basiert über ein herdr-Plugin: herdr plugin action invoke heeler.pair, scannen, fertig. Apache-2.0 und explizit nicht mit dem herdr-Projekt affiliiert.

Moshi (iOS + Android): das App-Store-Terminal, das Herdr kennt
Moshi ist ein Mobile-Terminal, das um Agent-CLIs herum gebaut ist statt um generisches SSH, und es ist in beiden Stores (iOS 17+, Android 10+). Der Free Tier deckt ein volles SSH-Terminal mit unbegrenzten Sessions ab, Push-Benachrichtigungen für Agent-Events (rate-limited), Diktat und biometrischen Key-Schutz. Pro (7,99 $/Monat oder 69,99 $/Jahr, drei Geräte) schaltet frei, was es zu einem echten Herdr-Client macht: Mosh-Transport, die Multiplexer-UI für tmux/Zellij/Herdr, Image-Paste, einen Diff-Viewer und unbegrenzte Inbox-Aktionen.
Zwei Teile sind Herdr-spezifisch. Der Session-Picker listet laufende Herdr-Sessions mit einem Ctrl-B-Chord-Panel und Gesten für schmale Screens, und die Agent-Inbox triagiert Events in „Needs you / Working / Done”, sodass du nicht durch Scrollback scrollst, um das blockierte Pane zu finden. Einen Host zu paaren installiert moshi-hook, einen kleinen Daemon, der die eigenen Hooks der Agents liest (Claude Code PreToolUse/Notification/Stop, Codex, OpenCode) und Permission-Prompts in Approve/Deny-Pushes auf dem Lockscreen verwandelt. Er taggt Events mit $HERDR_SESSION, sodass ein Tap auf eine Karte dich exakt in diese Session fallen lässt.

Das ist die Option, die ich jemandem in die Hand drücken würde, der eine App will, keinen PWA-Workflow. Das volle Host-Setup (VPS, Hooks, Mosh-Fallen) steht im Moshi-+-Herdr-Handy-Guide. Moshi shippt außerdem eine Desktop-App, weiter unten behandelt.
Schlichtes SSH + Mosh: der offiziell empfohlene Weg
Null extra Services, null Web-Exposure und die Antwort, die die herdr-Docs zuerst geben. Irgendeine SSH-App, ssh you@server, herdr. Wenn Netzabbrüche ein Thema sind, füge Mosh hinzu: „Mosh is honestly the correct answer… no compromises” ist die Stimmung auf r/herdr, und sie passt zum „halt die Anzahl beweglicher Teile bei null”-Bias dieses ganzen Artikels. Reddit-User fahren genau das: herdr + mosh auf dem Hauptgerät, eine SSH-App auf dem Handy über Tailscale.
Zwei weitere Optionen, die man kennen sollte, weil das Ökosystem wöchentlich Clients spawnnt. herdr-remote (407 Sterne) liefert eine macOS-Menüleisten-App, ein Handy-Web-Dashboard und One-Tap-Approvals aus Telegram (/agents, /reply, /trust, /interrupt, plus ein tägliches /digest). Nützlich, wenn du in Telegram lebst; sein Relay bindet 127.0.0.1:8375 und will HERDR_RELAY_TOKEN gesetzt haben, bevor irgendein Tunnel läuft. TermRover (termrover.sh) und ShadowTerm sind kommerzielle SSH-/Mosh-Mobile-Terminals; TermRover shippt eine Herdr-bewusste „agents fleet”-Ansicht über Hosts hinweg. Alle drei verdienen einen eigenen genauen Blick; keins ist bisher in meinem Default-Stack.

Herdr-Desktop-Apps: Herdr UI, herdrm und Moshi Desktop (und warum „Manager-Apps” eine Falle sind)
Wenn du eine echte herdr-Desktop-App willst statt eines Terminal-Fensters, ist herdrm (missuo/herdrm, 623 Sterne) die polierteste Antwort auf macOS. Natives SwiftUI + SwiftTerm, kein Electron, macOS 14+, Universal Binary, signiert und notarisiert, Sparkle-Auto-Updates. Eine Sidebar aus Spaces und Agents über lokale + SSH-Geräte hinweg (Remote-Sockets via ssh -L, Reconnect pro Gerät mit 1s→30s-Backoff), ⌘K-Suche über jedes Gerät, Benachrichtigungen mit Click-to-Jump und Datei-/Bild-Paste in Agent-Panes (Remote-Pastes streamen über SSH in einen 7-Tage-/50-MB-Cache). Der Unterschied, der zählt: Es attacht echte PTYs via herdr agent attach. Es ist ein Client, kein Chat-Wrapper.
brew install owo-network/brew/herdrm
Auth-Reihenfolge: OpenSSH-Keys/Agent, dann Tailscale SSH (1.98.0+), dann im Keychain gespeichertes Passwort. Das Projekt sagt „early stage”; das README dankt Heeler für Transport-Muster.
Herdr UI: ein natives Fenster auf demselben Daemon
Herdr UI (penso/herdr-gpui, Apache-2.0, von Fabien Penso) ist der neueste Client auf dieser Liste und der einzige, der ein echtes Desktop-Fenster ist statt eines Terminals oder einer Browser-Seite. Er attacht an den Herdr-Daemon, den du schon fährst: TUI und Fenster zeigen dieselben Panes, und die App installiert oder aktualisiert den Daemon selbst nie. Was das Fenster der TUI voraus hat: Arbeit aus Issues dispatchen, Side-by-Side-Review, Checkpoints, Teleport zwischen Maschinen und eine Devices-Übersicht. Explizit nicht mit dem herdr-Projekt affiliiert.
# 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 | iexEs gibt keinen lauschenden Port abzusichern: Es malt die Panes des lokalen Daemons in einem GPU-gerenderten Fenster, sodass die „jede Web-UI ist eine Root-Shell”-Rechnung nicht gilt. Die Anforderung läuft andersherum: Installiere zuerst herdr, weil Herdr UI nur an einen Daemon attacht, der schon existiert.
Update: Das Herdr-Projekt hat inzwischen seine eigene offizielle native App geshipt (herdrdev/herdr-app), auf demselben GPUI-Stack gebaut, mit einem Twist: Das gesamte Interface besteht aus Dateien, die dein Agent umschreiben kann. Unser Herdr-App-Galerie-Rundgang behandelt die App, das Layout-/Mod-System und 20+ Community-Kreationen mit Screenshots.
Jetzt die Falle. herdr.dev/compare unterscheidet die Runtime von Desktop-„Manager-Apps” (Conductor, Emdash, Superset) und Terminal-Apps (cmux, Warp), deren Agents stoppen, wenn die App beendet wird. Diese Apps besitzen die Runtime. herdrm, Herdr UI, Heeler, Collie und der Rest attachen an sie. Dieser eine Unterschied (Client vs. Runtime-Owner) ist der ganze Grund, warum ein Herdr-Ökosystem überhaupt existieren kann. Wenn du ein Tool wählst, das die Agents besitzt, bist du zurück auf der Roadmap eines einzelnen Vendors.
Moshi Desktop: die plattformübergreifende Antwort
herdrm ist macOS-only, aber Moshi Desktop deckt den Rest ab: macOS (Apple-Silicon- und Intel-.dmg), Windows-x86_64-.exe und Linux-.AppImage, für alle kostenlos, etwa 11 MB dank Tauri statt gebundeltem Chromium (ein GPU-gerendertes Go-Rewrite ist in Alpha). Dasselbe Team shippt außerdem eine moshi-CLI: curl -fsSL https://getmoshi.app/install.sh | sh, dann öffnet moshi die identische UI in einem Browser auf 127.0.0.1 — eine Loopback-Web-UI für Leute, die überhaupt keine App wollen.
Es ist ein Client im hier relevanten Sinn: Deine tmux- und Herdr-Sessions bleiben im Multiplexer, und Desktop liest sie über moshi-hook (Loopback-only-Gateway; Remote-Hosts fahren über dein eigenes SSH). Obendrauf kommen eine Chat-Ansicht, Diffs, an Output gepinnte Code-Kommentare, Dev-Server-Previews, die es tunneln kann, und One-Tap-Approvals. Es zu beenden killt nie einen Agent — der komplette „Manager-Apps sind eine Falle”-Test bestanden. Auf macOS installiert es auch über brew tap rjyo/moshi.
Security first: Jede Herdr-Web-UI ist eine Root-Shell
Behandle die URL jeder Herdr-Web-UI wie ein Root-Login auf deiner Maschine. Nicht „ein Dashboard”. Der Client kann deine Dateien lesen, Befehle in deinen Panes ausführen und alles anfassen, was deine Agent-Sessions an Credentials halten. Das ist das Produkt. Die einzige Frage ist, wer diese URL erreichen kann.
Die Auth-Realität pro Client:
herdrwebhat keine Authentifizierung und bleibt by design Loopback-only („one operator, one machine”).kcosr/herdr-webnutzt Host-/Origin-Allowlisting. Das Repo sagt es selbst: Das ist ein DNS-Rebinding-Guard, keine User-Authentifizierung.herdr-web-uidefaulted auf Loopback, mit Tailscale-QR für den Handy-Pfad.ColliePWAhat das reifste Modell.tailscale serveinjiziertTailscale-User-Login,COLLIE_TRUSTED_USERmappt es auf eine Identität, und Device-Pairing-Tokens gaten Schreibzugriffe.alecuba16/herdr-webuibindet Loopback und kann ganz ohne herdr laufen, sein Blast Radius ist also das, was sein eigenes Backend tut.
Das Muster, das funktioniert: Loopback binden, tailscale serve davor (TLS + Identity-Header), nur von Geräten in deinem Tailnet öffnen.

Niemals ins Internet exponieren
Niemals 0.0.0.0 binden. Niemals tailscale funnel. Wenn ein Client die Maschine verlassen muss, gehört er hinter Tailnet-Identität (oder ein gleichwertiges Mesh-VPN) mit TLS. Außerdem: pane_history = true in herdr ist experimentell und aus gutem Grund AUS. Persistierte Screens können Secrets enthalten, und es einzuschalten schreibt sie auf die Disk. Wenn du schon Docker-Stacks aus einer Web-UI verwaltest, gilt dasselbe Loopback-+-Tailscale-Muster für Dockge.
- Loopback-Binding bestätigt:
ss -tlnp | grep -E '7317|7331|8787'zeigt127.0.0.1, nicht0.0.0.0 - Exponiert via
tailscale serve, niemalstailscale funnel COLLIE_TRUSTED_USERgesetzt (Collie) oder Device-Pairing registriert (Heeler/herdr-web-ui)- Push über HTTPS von jedem registrierten Gerät getestet
- Plugins vor dem Installieren reviewt,
--refgepinnt, ungenutzte deinstalliert ~/.config/herdrmit restriktiven Permissions im Backup enthalten
Das Referenz-Setup: Hetzner-VPS + Herdr + Tailscale + ein Client
Affiliate-Hinweis
Einige Links in diesem Guide sind Affiliate-Links. Wenn du darüber kaufst, erhalten wir möglicherweise eine kleine Provision – ohne zusätzliche Kosten für dich. Das hilft uns, diese Empfehlungen weiter zu testen und zu aktualisieren.
Das ist der „fahr es heute Abend”-Pfad für ein herdr-VPS-Setup, und er ist absichtlich langweilig. Agents leben auf einem kleinen VPS. Ich nutze Hetzner Cloud für diese Workload-Klasse: eine 4–5-€/Monat-CX22-Klasse-Box reicht, weil Coding-Agents API-bound sind, nicht CPU-bound. Der Laptop ist nur ein Client. Das ist übrigens das eigene 0.9-Talking-Point des herdr-Teams: „the laptop is turning into a client”.
Ops-Fläche: eine Binary (herdr), ein systemd-User-Service (Collie oder herdrweb) und Tailscale, das du wahrscheinlich schon fährst. Kein Docker, keine Datenbanken, null Container zu babysitten. Das Einzige, was du sichern musst, ist ~/.config/herdr/.

Voraussetzungen
- Linux-VPS: Hetzner-CX22-Klasse oder besser. Shared CPU ist okay; Builds und Test-Suites können auf winzigen Boxen hängen. Wie man einen Cloud-Server vor dem Commitment benchmarkt, wenn du Provider vergleichst. Ein günstiger Hostinger-KVM-VPS funktioniert auch. Jede kleine Box mit 2+ GB RAM reicht
- Tailscale-Account + Tailnet auf dem VPS, Laptop und Handy
- Herdr 0.9.x auf dem VPS:
curl -fsSL https://herdr.dev/install.sh | sh, verifiziert mitherdr -V && herdr status - Ein MagicDNS-Name (oder eine Domain) für
tailscale serve-HTTPS - Ports: keine öffentlich exponiert. Nur Loopback (7317 / 7331 / 8787 je nach Client)
Happy Path
- VPS provisionieren, einen Non-Root-User anlegen, dann:
sudo apt update && sudo apt install -y tailscale
sudo tailscale up- Herdr installieren und verifizieren:
curl -fsSL https://herdr.dev/install.sh | sh
herdr -V && herdr status-
Echte Arbeit starten:
cd ~/project && herdr, starte deinen Agent in einem Pane so wie sonst auch und detache mitctrl+b q. -
Installiere exakt einen Client. Handy-first: Collie. Inbox-first: herdrweb.
# 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- Stell es ins Tailnet:
tailscale serve (empfohlen)
tailscale serve --bg --https=443 127.0.0.1:7331
# phone browser: https://<host>.tailnet.ts.netTLS + Identity-Header + Web Push funktioniert. Das ist der Default. Nutze tailscale serve status, um zu sehen, was veröffentlicht ist, und tailscale serve reset, um es abzureißen.
Nur SSH-Tunnel
ssh -L 7331:127.0.0.1:7331 you@vps
# laptop browser: http://127.0.0.1:7331Keine Tailscale-Abhängigkeit, kein Identity-Header und kein Web Push (braucht HTTPS). Okay für einen schnellen Blick; nervig als täglicher Handy-Workflow.
- Optional auf einem Mac:
brew install owo-network/brew/herdrm, dannherdr machine add workbox --label "Build box", sodass eine Sidebar Laptop und VPS abdeckt.
Verifizieren
herdr status: Client- und Server-Versionen matchen (0.9.2+ listet veraltete Server nachherdr update)ss -tlnp | grep -E '7317|7331|8787'beweist, dass das Binding Loopback-only istcurl -I https://<host>.tailnet.ts.netvom Handy-Browser: erwarte TLS, nicht connection refused- Push-Test aus den UI-Einstellungen („Send test notification”) auf jedem registrierten Gerät
- End-to-End-Drill: detachen → Laptop zuklappen → vom Handy reattachen → Agent noch mitten im Task
herdr agent list: States (working/blocked/done/idle) rollen korrekt auf
Was es kostet / Ops-Notizen
Herdr und jeder Client in diesem Artikel ist kostenlos und Open Source (Apache-2.0 / MIT), außer den kommerziellen Mobile-Terminals (TermRover, ShadowTerm; prüfe die Preise vor dem Kauf). Deine einzigen Kosten sind der VPS, Größenordnung 4–5 €/Monat. Keine GPU. Wenn du lieber nichts mietest, fahr Herdr zu Hause auf einem Mini-PC. Ein kompakter Mini-PC wie der ASUS DC510 ist eine vernünftige Always-on-Box, und das Tailscale-Modell ist identisch. Backups: tar ~/.config/herdr in welchen S3-Job du auch immer schon hast.
Rollback / Tear-down
collie stop # or: herdrweb -service stop / -service uninstall
herdr plugin uninstall <id> # remove heeler / herdr-web-ui plugins
tailscale serve reset # unpublish the HTTPS frontherdr server stop nur, wenn du die Agents wirklich killen willst, nicht für „ich bin für heute fertig”. Auf dem VPS ist der ganze Stack 2–3 native Binaries; Entfernen heißt, die Service-Unit und das Config-Verzeichnis löschen.
Versions-Fallen und Failure Modes (0.9.x bewegt sich schnell)
0.9.x bewegt sich schnell
Jeder Client pinnt ein anderes herdr-Minimum: herdr-web-ui braucht 0.9.0+, Heeler 0.7.5+ (plus Node 20), kcosr/herdr-web 0.7.2+, alecuba16-External-Mode 0.9.0+. Prüfe am Upgrade-Tag beide Seiten des Paars.
herdr server stopkillt Agent-Prozesse. Detache ≠ stop. Ein Neustart stellt das Layout wieder her, und Conversation-Resume brauchtherdr integration install codex|claude|cursor(oder einen self-reporting Agent, v0.9.2+). Verifiziere mitherdr status.- Client neuer als Server nach
herdr update. Der alte Server läuft weiter; 0.9.2+ listet, welche Server noch veraltet sind, mit Restart-Befehlen. Einen Remote-Server zu ersetzen fragt zuerst, weil er Pane-Prozesse stoppt.herdr update --handoffmigriert live (experimentell). - State-Erkennung falsch (Codex-False-Idle, Claude-Spinner, OpenCode-V2-States). Chat-Transkript-Clients jagen Agent-UI-Änderungen hinterher; die 0.9.2-/0.9.3-Changelogs sind voll Detection-Fixes. Fix:
herdr agent explain <agent> --verbosezeigt, welche Detection-Regel gefeuert hat, undherdr server update-agent-manifestszieht neue Manifeste. - API-Drift. kcosr/herdr-web vendored privates herdr-Protokoll und braucht Updates pro herdr-Release. Geh davon aus, dass es bei Major-Upgrades bricht, und pinne Versionen.
- Push schlägt still fehl ohne HTTPS-Secure-Context. Schlichtes
http://ip:7331subscribed nicht. Pro Gerät registrieren, dann die eingebaute Test-Benachrichtigung nutzen. - Heeler-/SSH-Macken. StreamLocal-Forwarding muss an sein (OpenSSH-Default; das Onboarding warnt, wenn deaktiviert). Gespeicherte Maschinen beantworten nie interaktive Prompts, sodass ein Host-Key-Wechsel oder MFA die Maschine „Attention” zeigen lässt. Einmal
herdr --remote hostinteraktiv laufen lassen oderherdr machine reconnect(v0.9.2). Passphrase-geschützte Keys müssen im ssh-agent sein. - Veralteter Multi-Machine-State. Die Zeilen einer gedroppten Maschine bleiben sichtbar, aber gedimmt und gecacht; du kannst nicht hineintippen. Lokal öffnet immer zuerst, sodass ein langsamer VPS deinen Laptop nicht aufhalten kann.
- Die CLI zielt immer auf einen Server, selbst in der 0.9-Multi-Machine-UI.
herdr --machine <label>(v0.9.1+) leitet Befehle weiter. IDs sind server-scoped. Lies sie aus--json-Output, rate nie. - Wickle kein tmux zwischen herdr und den Agent. Herdr sieht tmux, nicht den Agent, und die Erkennung bricht. Wähl eine Schicht.
- Windows-Macken.
install.ps1ist eine unsignierte Binary und SmartScreen kann warnen;install.cmdist der Fallback, wenn Endpoint Security den One-Liner blockiert. Schau auf herdr.dev/docs/windows-beta, was noch nicht unterstützt wird (direktes Terminal-Attach, Live-Handoff, Clipboard-Image-Bridge).
Watchlist: Herdr Cloud und wie schnell dieses Ökosystem sich bewegt
Herdr Cloud steht auf einer Warteliste: ein Relay, das deine Maschinen ohne SSH-Setup verbindet, mit Ende-zu-Ende-verschlüsseltem Terminal-Traffic. Der Pitch ist „Cloud connects them instead of hosting the agents”, es könnte also irgendwann das tailscale serve-Plumbing im Referenz-Setup ersetzen. Tritt der Warteliste bei, wenn du neugierig bist; plane noch nicht drumherum.
Das Ökosystem bewegt sich schnell. Mehrere unabhängige Clients shipten innerhalb von Wochen nach v0.9s Multi-Machine-Support, und der Plugin-Marketplace re-indexiert alle 30 Minuten. Die Sternezahl (42,7k, Stand Oktober 2026) zieht weiter neue Builder an. Manche dieser Clients werden in sechs Monaten Abandonware sein. Halte deinen Stack bei herdr plus einem Client, dann ist ein späterer Client-Wechsel billig. Wenn du tracken willst, was sich zu starren lohnt, ist worth-starring AI-Repos inklusive des Herdr-Ökosystems die laufende Liste.
FAQ
Gibt es eine offizielle Herdr-Web-UI oder Mobile-App?
Nein. Die offiziellen Clients sind die TUI, die CLI/Socket-API, schlichtes SSH, herdr --remote und das Multi-Machine-Fenster. Alles andere (ColliePWA, herdr-web-ui, Heeler, herdrm, herdrweb, Herdr UI) ist von der Community gebaut. Die Namensverwirrung ist dokumentiert: Leute fragen „was ist der Unterschied zur eingebauten Web-UI?“, und die Antwort ist, dass es keine gibt.
Herdr vs. tmux für Coding-Agents: was soll ich nutzen?
Herdr legt Agent-bewussten State (working/blocked/done), eine Socket-API und ein Client-Ökosystem auf den tmux-artigen Workflow; tmux plus Mosh bleibt eine legitime terminal-native Antwort. Wenn du nur persistente Panes brauchst, reicht tmux. Unser Herdr-Review deckt den vollen Vergleich ab. Für eine andere Sicht aufs Multiplexing selbst macht Superlogical Rex das Terminal zum Multiplexer, statt einen darin laufen zu lassen (vorerst macOS-only). Alle sechs Optionen sind in unserem Terminal-Multiplexer-Guide verglichen.
Kann ich Claude-Code-Prompts von meinem Handy aus approven?
Ja. Collie liefert Tap-to-Answer-Karten, herdr-web-ui rendert Approvals als tappbare Chat-Karten, Heeler hat verschlüsselten Push plus Live Activities, und Moshi verwandelt Prompts via moshi-hook in Approve/Deny-Pushes auf dem Lockscreen. Alle vier setzen Loopback-Binding plus ein Tailnet voraus, keine öffentliche URL.
Ist es sicher, eine Herdr-Web-UI ins Internet zu exponieren?
Nein. Loopback binden und tailscale serve davor. Niemals tailscale funnel, niemals 0.0.0.0. Die URL ist ein Root-Login auf alles, was der herdr-Prozess erreichen kann: Dateien, Befehle, Agent-Credentials.
Kostet das Herdr-Ökosystem etwas?
Nein. Herdr und alle hier behandelten Clients sind kostenlos und Open Source; TermRover und ShadowTerm sind die kommerziellen Ausnahmen. Jeder kleine VPS reicht, Größenordnung 4–5 €/Monat, und keine GPU ist involviert; Coding-Agents sind API-bound.
Fazit
Fang mit der TUI an. Füge exakt einen Client hinzu, wenn das Handy-Szenario auftaucht, und halte alles hinter dem Tailnet. Kopier das Referenz-Setup, wenn du die langweilige, verifizierbare Version davon willst.
Unser Herdr-Review lesen Handy-Steuerung mit Moshi einrichtenHat diese Anleitung bei dir funktioniert?
Brauchst du Hilfe bei Astro, VPS oder einer Self-hosted-App? Services ansehen →


