Herdr · Multiplexers
Troubleshooting: Herdr not working after an upgrade
Two things break Herdr after a version upgrade: two binaries at different versions, and sessions still running the old one. How to check and fix both.
If Herdr misbehaves in TermRover, especially after a version upgrade, there are two common causes.
1. Two binaries at different versions
One from a package manager, one from Herdr’s own update. Your login shell picks the newer one, so the machine looks fine. A non-interactive SSH command, which is what TermRover makes, can pick the older one.
Find them all:
for d in ~/.local/bin ~/.cargo/bin /opt/homebrew/bin /usr/local/bin /usr/bin /bin; do
[ -x "$d/herdr" ] && printf '%s\t%s\n' "$d/herdr" "$("$d/herdr" --version)"
done
/home/you/.local/bin/herdr herdr 0.9.0
/usr/bin/herdr herdr 0.8.2
See which one TermRover gets:
$ ssh myhost 'command -v herdr'
/usr/bin/herdr
Remove the one you are not updating. Keep one per machine.
2. Sessions still running the old version
Upgrading the binary does not restart running sessions. They keep serving the old version until you stop them.
Stop every session, restart your shell, then start them again:
herdr session stop work # repeat for each session
exec $SHELL -l # pick up the new binary
herdr session attach work
Stopping a session exits the pane processes inside it.
To see which sessions are affected, ask each one for a snapshot. herdr session list reports running even for servers that refuse every call:
for s in $(herdr session list | awk 'NR>1 && $2=="running" {print $1}'); do
herdr --session "$s" api snapshot >/dev/null 2>&1 && echo "ok $s" || echo "STALE $s"
done
Run without the redirect, herdr --session work api snapshot prints the real reason, including whether the client or the server is the older side. One stale session takes the whole host offline in the Fleet.
Herdr not found? Tell TermRover where it is
Edit the host → Advanced → Herdr overrides → Executable path:
/home/you/.local/bin/herdr
On automatic, TermRover tries command -v herdr, then ~/.local/bin, ~/.cargo/bin, /opt/homebrew/bin, /usr/local/bin, /home/linuxbrew/.linuxbrew/bin, /opt/local/bin, /usr/bin, /bin. Anywhere else, set it yourself. Same field on iPhone, iPad, and Android.