A plugin for shefrd and herdr

Find any past session. See where it lands before you land it.

herdr-stith puts stith inside your terminal multiplexer: search every Claude session this machine has run, see whether Enter will focus a running pane or open a new tab — and how sure that guess is — and keep the focused pane's session beside the herd.

 sessions   usage   background jobs   repo claims   all pages                                      views ▾  open in stith ↗
/ type to search every transcript                  any state ▾  from every machine ▾  one-shot runs folded ▾   200 sessions
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 title                           state      last active    project        agent  │ fix the flaky worktree test on the
 coordinator: ports, issues, UI… working    just now       shefrd         claude │ Windows runner
 dashboard alerts                needs you  3 minutes ago  stith          claude │ state    stopped 40 minutes ago
▌“fix the flaky worktree test o… stopped    40 minutes ago shefrd         claude │ where    not open · enter opens it in a
 build whittle graft fork        stopped    5 hours ago    aylith-com     codex  │          new tab in shefrd
 ▸ 167 one-shot runs, untitled   stopped    42 minutes ago tmp                   │ agent    claude · opus-5-5 · high
                                                                                 │ size     14 turns · 212 tool calls
                                                                                 │ [ open in a new tab ]▾  [ copy id ]
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 enter open   ⇥ next view   ^t opens in: a new tab   ^o open in stith   ^y copy id   F2 views   esc close

The search window, redrawn from the plugin's own frame tests. Every word on it clicks; the details explain the guess behind where.

What it does

The whole session history, without leaving the herd.

Everything arrives off until you name it, and every state it shows is one it has confirmed.

01

Search every transcript

One window lists what stith saw in the last 30 days and searches every transcript, every profile, as soon as you type. Unnamed one-turn runs fold into one row per project.

02

Know what Enter does

A running session is focused in its pane. One that isn't opens where the details say — with ties and loose matches called out, because the rule that picks the workspace has both.

03

A panel that follows focus

The ▾ Stith panel in the sidebar shows the focused pane's session in four tabs — overview, work, links and usage — drawn at once from what is already known.

04

Fields for any tab row

$stith_status, $stith_title, $stith_usage_5h and more on tab, agent and space rows. Opt in to thirteen docket fields: tickets, PRs, repos, tags and open work.

05

Filter the herd

On shefrd, @stith="words" keeps the panes whose sessions match. A pasted ticket, PR or thread link becomes that identifier; the rest of the words search transcripts.

06

Click a session id anywhere

Ctrl+click a stith:// link, a stith page URL or a bare session id in any pane to pin the panel on it, jump to its pane or copy the id.

The Stith panel

The focused pane, explained beside it.

One small daemon follows pane.focused, joins the pane to its session and keeps what stith said about it, so switching panes redraws in milliseconds while stith is asked again in the background.

  • Hover to learn. Every label says what its field is; every value with more to it says that, never repeating what's on screen.
  • Stalls stay readable. If stith is slow, the last good lines stay with a footer saying since when and why.
  • Links by name. shefrd #12 and repo issue #4, never a raw address; files and branches are copy chips.

What it will not claim

Honest about its guesses.

A picker that hides how it decided is a picker you stop trusting. herdr-stith says what it doesn't know.

Completeness

Search caps at 200 hits on stith's side. When a query matches more, the count says so instead of implying it searched everything.

A sure landing

Where a stopped session opens is predicted by mirroring stith's longest-shared-path rule. Ties and catch-all matches like $HOME are flagged in the details.

That it opened

stith reports how a launch was verified. When it wasn't, the footer says it started without confirmation rather than reporting success.

That a session is local

A session recorded in another WSL distro, home directory or on the Windows side is marked elsewhere, and Enter refuses it with the reason.

┌ stith ──────────────────────────────────────────┐
│ ✕ stith is not running                          │
│                                                 │
│ Its service is stopped. Start it here, or with  │
│ `systemctl --user start stith`.                 │
│                                                 │
│ [ start stith ]  [ try again ]  [ close ]       │
│                                                 │
│ checked just now · again in 4 seconds · details │
└─────────────────────────────────────────────────┘

One of five states the window tells apart — looking, starting, slow, not running, or answered by something else. A slow daemon is never reported as stopped.

Install

Two commands and a key.

The plugin builds itself on install and update, so the first open is the picker, never a build.

1 — Install
# shefrd, or herdr 0.7.4 and later
shefrd plugin install aylith-labs/herdr-stith
# or
herdr plugin install aylith-labs/herdr-stith
2 — Bind a key in config.toml
[[keys.command]]
key = "prefix+slash"
type = "plugin_action"
command = "stith.search"

Then run shefrd server reload-config. Nothing is bound by default.