Herdr: Run Claude Code Agents on Every Machine You Own

Herdr: Run Claude Code Agents on Every Machine You Own

I run Claude Code on three machines: a Mac, a Linux laptop with Omarchy and a Windows PC. Until recently that meant three terminals, three SSH sessions and no idea which agent was stuck on a question.

Herdr fixed that for me. It’s a terminal tool like tmux, but built for agents: every agent gets its own pane or tab, and Herdr shows you which one is working, which one is done and which one needs you.

This guide covers everything from the video: installing Herdr, the shortcuts that matter, four Claude Code agents in parallel worktrees, detach and reattach, and finally connecting all three machines into one Herdr over Tailscale with plain SSH. I’ve used Herdr for about three weeks, and the remote setup is the part that changed how I work.

Table of Contents

Quick Start: Herdr in 6 Commands

Snippettext
# 1. Install Herdr (Mac)
curl -fsSL https://herdr.dev/install.sh | sh

# 2. Start it
herdr

# 3. Hook Claude Code into Herdr (if the first-run setup didn't)
herdr integration install claude

# 4. Get a machine ready: Tailscale, OpenSSH, Herdr (run on every machine)
./herdr-kit setup

# 5. Check it and get the exact line to add the machine
./herdr-kit doctor

# 6. On your hub, add the machine
herdr machine add overlord-wsl

The prefix key is Ctrl+B on the Mac. Prefix + ? shows every key binding.

What Herdr Is

Herdr is a terminal workspace for coding agents. If you know tmux, the model is familiar: panes, tabs, sessions that keep running when you close the window. The difference is that Herdr knows about the agents inside it.

Each agent shows its state in the sidebar. You can see at a glance whether an agent is working, done, blocked or waiting for your feedback. When an agent finishes, Herdr sends a toast notification, so nothing sits there waiting for you.

My daily use: the heavy, long-running work runs on the Windows desktop, and I check in on every session from the Omarchy laptop in the living room.

Install / Setup

Install Herdr

On the Mac, use Homebrew or the install script from herdr.dev. I used the script:

Terminalbash
curl -fsSL https://herdr.dev/install.sh | sh

The site also has instructions for Windows and Nix, plus manual installers: Herdr install docs.

Start it with:

Snippettext
herdr

The first run asks a few questions: which AI tools you use (tick Claude Code or Codex) and a theme.

Claude Code integration

The first-run setup detects installed agents and hooks them in. If you need to do it by hand:

Snippettext
herdr integration install claude

It installs the Claude integration hook. That hook is what lets Herdr show Claude’s state in the sidebar.

Output of herdr integration install claude in Herdr

herdr-kit (for the multi-machine part)

herdr-kit is the small open-source script (MIT) that four agents build later in this guide. One command gets a machine ready for a multi-machine Herdr setup: Tailscale up, an OpenSSH server reachable over the tailnet, Herdr plus the Claude Code integration. Clone the public repo and run it:

Terminalbash
git clone https://github.com/stefanrows/herdr-kit && cd herdr-kit && ./herdr-kit setup

herdr-kit is a community project. It is not affiliated with Herdr or Tailscale.

Herdr Shortcuts: The Prefix Key

Panes work with the mouse: right-click a pane to split it or zoom it. But Herdr is fastest from the keyboard.

Every shortcut starts with the prefix key. On the Mac that’s Ctrl+B. Press the prefix, let go, then press the key. Pressing Q on its own just types a “q”. Prefix then Q sends the command. If you’re unsure what your prefix is, open the menu and go to Key bindings.

Herdr key bindings panel opened with prefix and question mark

Once the keys are in your fingers you move incredibly fast, especially on a keyboard-driven setup like Omarchy. I find Prefix + N/P for tabs cumbersome, so I just click the tabs.

Tip: move the prefix to a key you rarely use, and every shortcut becomes a single extra keypress.

Detach and Reattach

Prefix + Q detaches. That doesn’t close anything. The agents keep running in the background, and when you start herdr again you land exactly where you left off. Same idea as a tmux session.

I tested it the hard way: four agents working, quit iTerm2 completely, reopened it, typed herdr. Everything was still alive.

First Agent: Building herdr-kit

The sidebar shows the current folder and its git branch. I opened the empty herdr-kit repo, started claude and pasted the first task (the repo scaffold) from my AI Coding Orchestrator board. More on that board in my AI coding workflow guide.

While Claude works, the session shows a yellow dot. When it finishes, a green dot appears and Herdr fires a toast with a sound. Once you’ve looked at the result, the dot turns into a hollow green circle.

Herdr toast herdr-kit step 2 ready after the scaffold agent finished

The agent asked for an OK to commit and push the scaffold. I said yes, and the task on the board moved to done.

4 Claude Code Agents in Parallel Worktrees

This is where Herdr earns its place. Prefix + Shift+G creates a new git worktree in the current repo: its own checkout, its own branch, its own window.

Two things I learned:

In each worktree I started Claude Code with Sonnet, to save tokens, and gave it one task from the board.

Prompts

The prompt for each worktree agent, shown on screen at 19:05 in the video:

Snippettext
Claim step 6 on the herdr-kit board in the YouTube Projects project and work it in this worktree on branch feat/doctor.

The other three were the same prompt with their own step and branch.

Four Claude Code agents working in parallel worktrees in Herdr

All four sessions worked at the same time, each with a yellow dot. When one finished, a toast popped up and Prefix + O jumped straight to it. If an agent gets blocked, Prefix + B takes you to it.

When the branches were done, I merged them with my own “ship now” skill, which pushes and merges without asking. It still asked me for a yes a few times.

Testing herdr-kit doctor

doctor checks a machine and changes nothing:

Terminalbash
./herdr-kit doctor

On my Mac it showed every check green: macOS, Tailscale up, the MagicDNS name, the SSH server listening on port 22, Tailscale SSH off, the Herdr version and the Claude Code integration. At the end it prints the exact line to run on your hub:

Snippettext
On your hub, run: herdr machine add mbp
herdr-kit doctor on macOS with all checks green

Why a plain SSH server? I don’t need access from outside my network, so a local SSH server reachable over Tailscale is all Herdr needs.

How It Connects: Tailscale + SSH

Herdr connects to other machines over plain SSH. Tailscale solves the “how do I reach them” part: every device joins one private network and gets a name. No port forwarding, no IP addresses.

Tailscale SSH stays off on every machine. This setup uses regular OpenSSH over the tailnet. In the week I recorded this, a report called Tailworm showed how Tailscale SSH can be abused from inside a tailnet, and at recording time (October 28, 2026) there was no patch yet. The network itself is fine. Tailscale SSH is the part to leave off. herdr-kit never turns it on, and doctor flags it if it’s on.

Setup: herdr-kit on Windows WSL2

Herdr runs natively on Windows too, but I run Claude Code inside WSL2. That’s where the Claude Code sandbox works, and where Herdr’s plugins aren’t stuck in preview (Herdr Windows beta docs).

My daily distro, overlord-wsl, already had Tailscale but no Herdr and no SSH server. The same command does the job. Every step checks first and skips what’s already there, so running it twice is safe, and on the already-set-up Mac and Linux laptop it only prints green checks.

Terminalbash
./herdr-kit setup

On WSL2 it found Tailscale up as overlord-wsl, confirmed systemd was running and Tailscale SSH was off, then installed the OpenSSH server and Herdr with the Claude Code integration in a couple of seconds.

herdr-kit setup on WSL2 installing the OpenSSH server

On a machine without Tailscale, setup installs it and opens the login in your browser. You need one free Tailscale account, the same one on every machine.

Then the check:

Terminalbash
./herdr-kit doctor
herdr-kit doctor on WSL2 showing overlord-wsl with all checks green

Starting from a fresh WSL2 distro

My distro was already in daily use. On a brand-new WSL2 distro, I hit these when testing before the recording:

1. Turn on systemd first. A fresh distro boots without systemd, and installing openssh-server fails with “Could not execute systemctl”. Add this to /etc/wsl.conf, then restart the distro:

Snippettext
[boot]
systemd=true

2. Give the distro its own hostname. A new distro takes the Windows PC’s name, so Tailscale would name the node after the PC.

3. Run ./herdr-kit setup****. It handles Tailscale, OpenSSH and Herdr.

More on WSL2 networking in my WSL2 network configuration guide, and on systemd in the systemd cheat sheet.

Control the Mac From Windows

It works both ways. From WSL I added the Mac (its MagicDNS name is mbp):

Snippettext
herdr machine add mbp

The MacBook Pro showed up with all its chats. From Windows I had full control: new chats, new sessions, different folders.

All Three Machines, One Herdr

Back on the Mac, I added the Windows distro:

Snippettext
herdr machine add overlord-wsl

Herdr answered with “Saved SSH machine … Remote server is ready” and “Open Herdr clients connect automatically.”

herdr machine add overlord-wsl output: remote server is ready

Then the Linux laptop:

Snippettext
herdr machine add omarchy

The sidebar now lists all three machines. I asked the Claude Code agent on each one which machine it was on: the one on overlord-wsl said Windows inside WSL2, the one on omarchy said a Microsoft Surface Laptop 2 running Omarchy. From one Herdr I can spawn agents, open tabs and switch folders on every machine.

Herdr sidebar with the Mac, overlord-wsl and omarchy in one window

It works from anywhere on my local network as long as the machine is on and Herdr is running on it. Herdr’s own docs on this: Connecting machines.

Gotchas

Is Herdr Worth It?

For me, yes. My Windows PC runs the long jobs, like a whole roadmap in one session that has to stay alive, and I check in from the laptop on the sofa. When an agent gets stuck on a question, I get a notification instead of finding it hours later.

The downsides were small: the flaky right-click in iTerm2, and my own forgotten push. It depends on your setup, and Herdr is still changing fast. But across several machines it has become a fixed part of my setup, and I’m keeping it while I figure out the best workflow.

If you want Claude Code on a server around the clock instead, see How to Run Claude Code on a VPS.

Your Turn

Which machines would you connect? Tell me on X @StefanRows, and grab herdr-kit on GitHub. The full walkthrough is in the video above.

whoami

Stefan

Stefan founded Ceos3c in 2016 and has spent a decade teaching cybersecurity, Linux, and web development through hands-on tutorials. He builds and ships real products while sharing his journey: ProofSwap.me, XPMetric.com, and EasyEarningsTracker.com. Find him on YouTube (youtube.com/stefanrows) and X (@StefanRows).