Your Herdr agents, sorted by what needs you, in groups you name, across every machine you run.
herdr-radar, plus:
| Feature | What you see |
|---|---|
| Attention view | Blocked and done agents first, idle next, working last. |
| Named groups | One key moves the focused agent between groups you name. |
| Groups across machines | Agents from every connected machine share one set of groups. |
| Model mark | A second logo names the model family. Hermes on Claude shows both. |
| Machine row | A grey line under each agent names its machine. |
Twenty-four vendors have a mark of their own. Everything else, colours, settings, troubleshooting, is herdr-radar's. Its README covers it.
Using herdr-radar? Remove it first. Two plugins cannot share one panel.
herdr plugin action invoke hhdebb.herdr-radar.unconfigure
herdr plugin uninstall hhdebb.herdr-radarThen:
herdr plugin install 4242labs/herdr-radar-plusNeeds Herdr 0.9.0+ and Node 18+.
The icon font maps itself in Ghostty and kitty. Other terminals: map U+E1A0–U+E1B7 and
U+E1C0–U+E1C5 by hand.
Add to Herdr's config.toml:
[[keys.command]]
key = "prefix+a"
type = "plugin_action"
command = "4242labs.herdr-radar-plus.view-flip" # active -> attention -> recent
[[keys.command]]
key = "prefix+up"
type = "plugin_action"
command = "4242labs.herdr-radar-plus.lane-up" # focused agent: one group up
[[keys.command]]
key = "prefix+down"
type = "plugin_action"
command = "4242labs.herdr-radar-plus.lane-down" # focused agent: one group downName them in lanes.json, in the plugin's state directory. List order is screen order.
$EDITOR ~/.local/state/herdr/plugins/4242labs.herdr-radar-plus/lanes.json{ "groups": ["NOW", "REVIEW", "PARKED"], "panes": {} }Dividers show once two groups have members. The keys fill panes for you.
Pick one machine as the hub. List the others as peers, by SSH host name:
{ "groups": ["NOW", "REVIEW"], "panes": {}, "peers": ["buildbox"] }The hub keeps one SSH link per peer and syncs every move. Each peer needs:
- The plugin at the same path under
$HOMEas on the hub. ssh <peer>working without a prompt.nodeon thePATHof a non-interactive SSH shell.
Read from the pane title. Knows Claude, GPT, Gemini, DeepSeek, Qwen, Grok, GLM and Kimi.
Add one with a regex line in MODEL_FAMILIES, lib/logos.js.
Pi's terminal title cannot reliably reveal which model it has selected, so
the title-based lookup above never identifies Pi. A separate, standalone
extension, extensions/pi-model-logo.js,
reports Pi's actual selected model ID and a hashed session reference
straight to Herdr; this plugin's Pi branch in lib/state.js resolves that
report into the same family glyphs, independent of the title.
Install once per host, in Pi's own extensions directory:
cp extensions/pi-model-logo.js ~/.pi/agent/extensions/pi-model-logo.jsFirst-time activation on a host that has never run this extension for a
given socket/pane needs one preflight call to provision its durable
sequence counter (pi-model-logo-state/, beside the global extensions
directory) — see provisionZeroCounterWithEvidence in the extension file.
Skipping it is safe: the extension silently declines to publish until
provisioned, nothing else about Pi or Herdr changes. Reload or start a new
Pi session afterward for the extension to take effect.
herdr plugin action invoke 4242labs.herdr-radar-plus.unconfigure
herdr plugin action invoke 4242labs.herdr-radar-plus.uninstall-font
herdr plugin uninstall 4242labs.herdr-radar-plusBuilt on hhdebb/herdr-radar 1.3.15, MIT, full history kept. Icon font from qintmb/herdr-icon-agent-ui. Font and mark sources in THIRD_PARTY_NOTICES.md.
Read CONTRIBUTING.md. Fixes to herdr-radar itself belong upstream.
Open source — MIT.
If it earned its keep, coffee is appreciated. ☕
