herdr

Straight to the pane, wherever it sits.

herdr keeps your agents in panes across workspaces and tabs, under a server no terminal owns. When one of them needs you, Go to session asks that server which pane holds it, selects the pane, then brings forward the terminal you see herdr in. One click, the right pane.

nothing to set up · herdr 0.7 or later · tested with 0.9.3

One click

Three steps, before the window moves.

  1. Find the terminal herdr is in

    herdr’s server outlives the terminal it was started from, so the trail from the agent stops there. Evlat takes the clients attached to it and picks the newest that still has a terminal: the tab you opened last. A closed tab’s leftover client doesn’t count.

  2. Ask herdr which pane

    Over herdr’s own socket it lists the panes and matches the session’s process to one pane’s shell. It reads processes, not the agent’s environment, so a pane running ssh or sbx run is found too.

  3. Select it, then come forward

    pane.focus moves herdr to the pane’s workspace, tab and pane in every attached client. Then the terminal comes forward on its tab. If herdr doesn’t answer in time, the terminal still comes forward.

Wherever the pane is

On your Mac, or on a server.

On this Mac

The plain case: the pane, its workspace and its tab, whichever one herdr was showing.

Behind ssh or sbx run

A herdr pane on your Mac that runs ssh to a server, or sbx run into a Docker sandbox: that pane is selected, even though herdr itself sees only ssh or sbx there.

herdr on a server

For a server in Settings → Servers, the pane is found again on the server at the click and selected there, over the ssh connection Evlat already holds. One fixed command that only selects; the window waits for it at most a second.

herdr --remote

A tab running herdr --remote: Evlat follows herdr’s own ssh bridge back to that tab on your Mac, and the pane on the server is selected.

The card’s button

It says when it can’t.

The button names where the click goes. It promises the session only when the pane will be selected.

Open in iTerm2
herdr found the pane: the click selects it, then iTerm2 comes forward.
Open herdr in iTerm2
herdr comes forward on whatever pane it shows: its socket wasn’t found or didn’t answer in time, it is older than 0.7, or no pane held the session.

Good to know

Nothing to set up
No setting, no plugin, nothing installed here or on a server. Evlat runs no herdr process on your Mac: it writes one line of JSON to herdr’s socket and reads one back.
Never holds the bar
All of one click’s questions to herdr share a quarter of a second. On a Mac each pane took 3–7 ms.
Several tabs on herdr
Since herdr 0.9.0 each attached tab moves on its own. Selecting the pane over the socket moves them all, so the tab that comes forward shows the right pane.
Versions
Tested with herdr 0.9.3. Finding the pane needs pane.process_info, which came in herdr 0.7.0.
Not yet
Machines added with herdr machine add haven’t been measured yet, and a socket moved under another name with HERDR_SOCKET_PATH isn’t found.

Download for MacWhat works where