Skip to content

Releases: eliasstravik/shepherdr

Shepherdr 2.0.0

Choose a tag to compare

@eliasstravik eliasstravik released this 28 Oct 21:11

herdr-projects is now Shepherdr.

What Shepherdr is

Run many coding agents across machines from a phone, tablet or desktop. It is a herdr plugin: one private web app on your tailnet with your spaces in a sidebar. Each space has a coordinator chat, and each task gets its own agent, chat, live terminal, diff and pull request.

How to upgrade

  1. Finish or stop the tasks in flight first: their agents keep running, but nothing follows them any more.
  2. You need herdr 0.9.4 or later. On an older one, run herdr update first.
  3. Run herdr plugin update herdr-projects, then press your old herdr-projects key (or run Open Shepherdr, or restart herdr). Shepherdr starts and shows its link.

Shepherdr runs on Bun. If you don't have it, Shepherdr fetches a pinned, checksum-checked copy into ~/.shepherdr/bun/ for you.

Your old data

Nothing is deleted. ~/.herdr-projects stays exactly as it was. Before tidying up the old plugin (its keeper, its agent skill and its sidebar rows in herdr's config), Shepherdr copies what it changes into ~/.herdr-projects-backup-<date>/, with a README.txt.

Going back to 1.2.27

herdr-projects 1.2.27 stays on the branch legacy-herdr-projects and the tag v1.2.27.

herdr plugin action invoke herdr-projects.stop                     # stop Shepherdr
herdr plugin install eliasstravik/shepherdr --ref v1.2.27 --yes    # herdr-projects 1.2.27 in its place
cp ~/.herdr-projects-backup-<date>/config.toml ~/.config/herdr/config.toml   # its sidebar rows back
herdr server reload-config
rm ~/.shepherdr/took-over-herdr-projects.json                      # a later upgrade tidies up again

If you changed herdr's config since the upgrade, paste the # >>> herdr-projects sidebar block from the backup's config.toml back in instead. Full details in the README.

v1.2.27

Choose a tag to compare

@github-actions github-actions released this 28 Oct 19:50
4a351c7

The last stable herdr-projects release. It brings fixes only, since 1.2.26. From here on, herdr-projects gets fixes only. Its next major version, Shepherdr, is a new design.

Fixed

  • Finished Claude tasks stay done. About an hour after it finished, a Claude task could switch to "Stopped without a summary": Claude tidies up its own history when it sits idle, and the board took that as a new turn. That tidy-up no longer counts as a turn. "Stopped without a summary" now shows the agent's last words, not its status line. (#425, fixes #423 and #406)
  • Agents start right. The board no longer says an agent is "not installed here" just because some "command not found" line was on the screen. pi gets its folder pre-trusted in new worktrees, as claude and codex already did, so its trust dialog can no longer swallow the brief. OpenCode 2 starts on the model you set. (#426, fixes #412 and #394, and the problems reported in #413 and #395)
  • Merges stop waiting for checks that never come. A merge no longer waits for a GitHub workflow that cannot run on the pull request (the wrong trigger type), or for any workflow when the repo's GitHub Actions are turned off. A check that failed and then passed when it ran again no longer blocks the merge. (#429, fixes #420 and #416, and the problem reported in #404)
  • Autopilot counts its tasks. Autopilot again counts the tasks it starts while its coordinator is working. herdr leaves out one field while an agent works, and the board now handles that. (#428, fixes #405)
  • Unusual setups work. Repos whose .git is a file (a separate git folder) get worktrees again, so their tasks no longer run in your own checkout. Long macOS user names no longer stop other machines from answering. A herdr folder reached through a symlink no longer blocks actions from a remote board. (#427, fixes #415, #381 and #421, and the problem reported in #422)
  • Lighter background work. A finished task's space is cleaned up even when the agent left a language server running. Tasks waiting in line to merge no longer take up agent slots. A task never gets two sync runs at once. The keeper only looks through each pi agent's own sessions folder, so it uses much less CPU. (#424, fixes #399 and #401, and the problems reported in #419 and #393)

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.

herdr-projects 1.2.26

Choose a tag to compare

@github-actions github-actions released this 23 Oct 22:33
a6787e1

The Pinned count is right, and pins and queued tasks get new marks, since 1.2.25.

Fixed

  • Pinned counts each pin once. With a project and a task pinned, the filter row said "Pinned 3": it also counted
    the tasks inside the pinned project, even done ones folded away. Now it counts the machines, projects and tasks you
    pinned, each once, as list --pinned lists them. The web board shows the same number. (#390)

Changed

  • The pin mark is a yellow star, ★, in place of the flag ⚑. Same place, right after the name, same width.
    On the web board too. (#391)
  • A queued task has a magenta clock, ◷, in place of the grey dotted ring ◌. Magenta is used by no other
    state, so a task waiting for a free slot or for other tasks stands out from "to do". Its Q#2, its State line and
    its text box take the magenta too, on screen and on the web. More:
    colours. (#391)

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.

herdr-projects 1.2.25

Choose a tag to compare

@github-actions github-actions released this 23 Oct 21:34
44a0274

Pinned moves onto the filter row since 1.2.24.

Changed

  • Pinned is a filter now, not a tab of its own. "Pinned N" is the last filter on the filter row, right after
    Automations. Tab, Shift+Tab or a click gets there, as for any other filter, and the board keeps it shown the
    same way. The "Board | Pinned" row at the top is gone, so the header is back to one line. More:
    pins and the Pinned filter. (#388)
  • It shows pins in their usual places. Your grouping (Alt+S) and folded headings stay as they are. A pinned
    task sits in its group; a pinned project or machine shows with its tasks under it. What needs you stays in red, and
    every key works as it does elsewhere. (#388)
  • Web board: Pinned is the last pill on the filter row. The pin button and the "Pinned" chip in the header are
    gone. (#388)
  • Alt+I is gone, along with the separate Pinned tab. Pinning itself is unchanged: Ctrl+P, the ⚑ marks,
    pin / unpin and list --pinned all work as before. (#388)
  • With nine filters, a 100-column board shows the short names (Coords, Needs, Autos). Wider boards show them in full.

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.

herdr-projects 1.2.24

Choose a tag to compare

@github-actions github-actions released this 23 Oct 21:02
4173c05

Pins for machines and projects, a Pinned tab, and a shorter list since 1.2.23.

New

  • Pin a machine or a project, not only a task. Ctrl+P pins or unpins the selected row: a task, a project or a
    machine, also one on another machine. Nothing moves any more: a pinned row stays where it is and gets a small ⚑
    mark. (Pinned tasks used to jump to the top; that is gone.) A machine's pins are kept on that machine and travel
    with its tasks, so every board sees the same pins. More: pins and the Pinned tab. (#386)
  • A Pinned tab. Alt+I, or a click on "Pinned" in the header, shows only what you pinned, each under its machine
    and project: a pinned machine with its projects and tasks, a pinned project with its tasks. The same keys work there,
    and the board remembers which tab you were on. The header shows both tabs; the one you are not on says in red how
    many of its rows need you. The web board has the same: a pin button in the header with that red count. (#386)
  • Command line: pin and unpin take a task, a machine or a project (--on MACHINE for another machine's
    project), and list --pinned lists what is pinned. (#386)

Changed

  • The list no longer shows done tasks. Each project gets one line that counts them (↓ 12 done (alt+d shows them)), and none when nothing is done; Alt+D still shows them all. This holds for pinned and selected done tasks
    too, except while you talk to a done task's agent or read it whole. On the web board the button says "Show N done".
    More: the board. (#385)

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.

herdr-projects 1.2.23

Choose a tag to compare

@github-actions github-actions released this 23 Oct 10:28
bff6c89

A fix since 1.2.22.

Fixed

  • A project coordinator is no longer taken for an old task's agent. When a finished task's work folder was cleaned
    up, the board linked that task again to whatever agent was alone in the repo's folder: the coordinator. From then on
    the coordinator's own commands were refused as that task's agent's, and the board's refresh could read the
    coordinator's work as the task's. Now a coordinator's own pane is never a task's, and a cleaned-up task is never
    linked again by folder. Tasks that already carry a coordinator's pane need nothing done by hand. A refusal now names
    the task the caller was taken for ("You are taken as AFS-6's agent").
    More: autopilot. (#382)

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.

herdr-projects 1.2.22

Choose a tag to compare

@eliasstravik eliasstravik released this 23 Oct 09:32
f16e266

Fixes from the daily triage, since 1.2.21.

New

  • A named branch lands without a pull request. With merge.pr off (a host with no GitHub), a task started from a
    named branch (workspace.from develop) lands by pushing its reviewed work straight to that branch at origin, also
    when it is origin's main branch. No checkout is touched, yours included, and nothing is forced: if the branch moved,
    the task catches up and is checked again. So one repo can take tasks on several feature branches at once.
    More: how work gets done. (#324, #369)
  • Archive and restore another machine's project from your board. Ctrl+A on another machine's project row asks the
    same yes/no as for a local one, and that machine does the archiving itself. It looks at its own tasks again first and
    refuses if one has started. Archived projects of other machines show under their machine in the archive view, where
    Ctrl+A restores them. From a shell: archive --repo NAME --on MACHINE, restore --repo NAME --on MACHINE.
    More: board. (#375)
  • A task says which coordinator added it. details <id> has addedBy, e.g. "the herdr-projects coordinator,
    asked by the human". (#358, #364)

Changed

  • The board finds the web UI under its new name, Ovis (devswha.ovis), and still under its old one
    (devswha.herdr-web-ui). Its port, paste folder and browser settings are read under whichever name is installed.
    More: web UI. (#355, #373)
  • A project coordinator stays in its own repo. It may read other repos to answer you, but adds tasks only to its
    own unless your message names another place. Work it notices elsewhere is one "Also noticed" line in its answer.
    More: coordinators. (#358, #364)
  • Coordinators learn what an update brought. When their standing rules changed (a new version, or new
    coordinator.instructions), the next message you type gets one line first telling them to read the rules again.
    Coordinators already running get it once too. Their rules now also name merge.closes and archive --done.
    More: Coordinator. (#359, #371)
  • Claude Code plans with its usual access, like Codex and pi: inside the read-only plan mount, saving plan.md, so
    a planner no longer waits at its pane for every note or page. Agents and reviewers also get HERDR_PROJECTS_ID and
    HERDR_PROJECTS_TASK_REPORTS in their environment.
    More: plan. (#361, #366)
  • Clean-up ends a finished task's dev servers. Right before its worktree is removed, what still runs from it (or
    from the task's temporary folder) is ended, the same way stop does. The task's line says what was ended, and names
    anything left as "Still running, end it yourself". clear does the same; archive only names them.
    More: disk space. (#342, #372)
  • A needs-you reason is in the needs-you colour. The line under a blocked task that says why (a question, a
    failure, "Needs a login") is now in its mark's orange-red on both boards, not grey. (#377)
  • The board uses about a third of the CPU per refresh. It keeps the task files it has read and parses only the ones
    that changed, and no longer copies every task several times per refresh. (#357, #374)

Fixed

  • Web board: Needs and Working filters no longer give 404, nor does the × on the "By repo / By machine" chip. (#362, #365)
  • Web board: "Open this task's agent" works when the task's space was closed. It waits until Ovis knows the
    reopened space before going there, and says so plainly if it can't.
    More: web UI. (#356, #376)
  • A start that never took fails, and says why. A brief that never reached the agent used to leave the task at "Has
    not started yet" forever. After 3 minutes with no sign of it, the task now fails as not started, and Retry hands the
    same text again. Every start failure ends with the agent's last 8 terminal lines.
    More: handing over. (#351, #354, #370)
  • A failed review shows the reviewer's screen. A review that ends without a verdict (timed out, exited, terminal
    closed) now quotes the reviewer's last 8 screen lines, so a stuck prompt is visible.
    More: gate. (#352, #354, #367)
  • Autopilot no longer stalls when idle. Idle with room in today's limits, it now wakes on its timer even when
    nothing changed. After 3 wakes in a row that added nothing it backs off (up to 4h) and its row says so; a long gap
    shows as Autopilot stalled: no check-in for 3h.
    More: autopilot. (#378)
  • Tests and probes can no longer write into your real board. Tabs the board opens get only HERDR_PROJECTS_HOME,
    so a scratch home really keeps a run away from your board. (#368)

Thanks

To cuipengcx90, nathanvale, jouni-mikkola, ron23, ShellMonster, nishitpatel92 and Aakash-chouksey for the reports.

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.

herdr-projects 1.2.21

Choose a tag to compare

@eliasstravik eliasstravik released this 22 Oct 19:43
d5ff8bd

A calmer autopilot, since 1.2.20.

Changed

  • An autopilot wake says only why it woke. The message in the coordinator's chat is now short: Autopilot: Regular check-in, Autopilot: HSW-84 finished, Autopilot: HSW-88 has a question. Each reason has its own plain words:
    Turned on, Regular check-in, finished, is stuck, has a question, is ready to approve, was added. The goal, limits and
    counts are no longer repeated in every wake.
    More: autopilot. (#350)
  • Wakes look like the board's own words. In the chat a wake stands under the label Autopilot, as the board's
    words stand under Board, in the chat's usual greys. The orange is gone. (#350)
  • Autopilot on the list uses the board's usual patterns. A coordinator on autopilot keeps its own mark and colour
    (the ∞ mark is gone). Instead it has a dimmed [autopilot] tag after its name, a grey line under its row that says
    what autopilot does (Autopilot · next check-in in 12m · 3 of 20 today, Working on HSW-92, Checking in · HSW-84 finished, Needs you · …), and its machine's summary says 1 on autopilot. The web board matches.
    More: colours. (#350)

New

  • herdr-projects autopilot show (--machine, --project <repo>) shows one coordinator's autopilot as it stands
    now: its goal, today's counts, what is under way, what needs looking after, and its settings in plain words. The
    coordinator reads it first in every wake, so a change you make between wakes is always picked up. (#350)

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.

herdr-projects 1.2.20

Choose a tag to compare

@github-actions github-actions released this 22 Oct 19:02
4aeaaba

A calmer board, since 1.2.19.

Changed

  • A queued task is grey, not pink. Nothing is wrong with a task that waits, so it no longer shouts. Its dotted
    ◌ and its place in the queue (Q#2) are the dim grey of to do, and its line, Queued after vm-str:HP-156 or
    Waiting for a free slot, is the same quiet grey as any other task's line, cut short the same way when it is long.
    The ◌ and the words still tell it apart from to do. The web board matches.
    More: colours. (#348)
  • The top coordinator has a plainer name. The chat's top edge now reads All machines · Machines coordinator
    instead of Machine coordinator (all machines). Other coordinators keep their names.
    More: machine and project coordinators. (#348)

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.

herdr-projects 1.2.19

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:34
df9748f

A tighter board list, since 1.2.18.

Changed

  • The board's list has no empty lines between rows. Every row sits tight, at every level and with a filter on or
    off: no gap between All machines and a machine, between machines, between projects or status groups, or between
    tasks. How far in a row stands, and its bold or its colour, say its level. So more of your tasks fit on the screen.
    More: list headings. (#346)

Updating

herdr-projects update, or herdr plugin install eliasstravik/herdr-projects again. An open board loads the new
program by itself. Then herdr-projects doctor checks the install.