herdr on WindowsCommand Library →
Mike's herdr field guide · Windows / Git Bash

How to drive
herdr on Windows.

The terminal workspace manager for your AI agents — set up the way you actually run it. Typing claude now lands inside herdr. Here's everything that comes with that. Copy, paste, go.

Git Bash · WindowsPersistent agentsclaude → herdr
$ claude
↓ now spawns inside ↓
🖥️ herdr server
🤖 agent panes
persists · detach · reattach
The Big PictureStart here

One terminal for the whole herd

One terminal for the whole herd

herdr is a terminal workspace manager built for AI coding agents. Think tmux, but it knows what Claude Code, Codex, and Gemini are doing — it watches each agent and tells you which one is working, idle, or blocked. It runs as a background server plus a client, so your sessions, panes, and running agents survive closing the terminal. You attach, detach, and reattach whenever you want, including from another machine.

  • A persistent home for every agent you run — they keep running after you close the window.
  • Knows agent state: idle / working / blocked, rolled up so you see who needs you.
  • Server + client: detach is free, reattach anytime, even over SSH from your phone.
Installed: v0.7.1-preview · binary in %LOCALAPPDATA%\Programs\Herdr\bin · channel: preview
Your setupThe thing we wired up

Type `claude` — it lands in herdr

Type `claude` — it lands in herdr

We added a wrapper to your ~/.bashrc so typing `claude` in a normal Git Bash window now spawns Claude Code as a herdr-managed agent in your current folder and drops you straight into the herdr TUI. You don't think about herdr — you just run claude like always, and you get persistence, panes, and agent tracking for free. Every escape hatch is built in so scripts and one-offs never break.

  • Interactive `claude` in Git Bash → opens inside herdr, focused on the new agent.
  • Already inside a herdr pane? It detects HERDR_PANE_ID and runs plain claude — never nests.
  • Scripts are safe: `claude -p ...`, piped input, and non-TTY calls pass straight through.
  • Two off-switches: `claude --raw ...` for one-off, or `export HERDR_CLAUDE=off` to disable.
To remove it entirely: delete the HERDR LAUNCHER block at the bottom of ~/.bashrc.
Git Bash · herdrJust use it (normal launch, now via herdr)
claude
Git Bash · herdrOne-off plain claude (skip herdr this once)
claude --raw
Config · .bashrcDisable the herdr wrapper for the whole shell
export HERDR_CLAUDE=off
# now `claude` runs plain again until you reopen the shell
Your setupWindows + Git Bash specifics

It just works in Git Bash

The installer wrote herdr to the Windows user PATH, and Git Bash inherits that on every new window — so `herdr` is already on your PATH with no .bashrc edit needed. The only Windows things to remember: use forward-slash paths (/d/ClaudeDev, not D:\), and launch the full-screen TUI from a real interactive terminal (MinTTY / Windows Terminal), never from a piped or non-TTY context.

  • `herdr` is on PATH in every new Git Bash window — the Windows user PATH carries it.
  • Use Unix paths in commands: `--cwd /d/ClaudeDev`, not D:\ClaudeDev.
  • Run the bare `herdr` TUI in a real terminal window — not inside a pipe or a script.
  • Config + logs live in %APPDATA%\herdr (config.toml, herdr.log, client/server logs).
The Claude Code state hook is installed too, so herdr can show your agents as idle / working / blocked.
Git Bash · herdrConfirm it's there
herdr --version
herdr status
Git Bash · herdrWire up another agent's state hook (optional)
herdr integration install codex
herdr integration status
FundamentalsThe hierarchy

Session › Workspace › Tab › Pane › Agent

Session › Workspace › Tab › Pane › Agent

herdr nests five things. A Session is the whole persistent world (you can have named ones). Inside it are Workspaces — usually one per project or worktree. Each workspace holds Tabs, each tab splits into Panes, and a pane can be running an Agent (claude, codex, gemini…) or just a shell. Agent state bubbles up the tree, so a glance at the sidebar tells you which workspace has something waiting on you.

  • Session = the durable container. Name them per context: `herdr --session merlino`.
  • Workspace = a project/dir. Worktrees become grouped workspaces automatically.
  • Tab → Pane → Agent: split your work; each pane can hold its own agent.
  • State rolls up: the sidebar shows which workspace is blocked or done.
Prefix key is ctrl+b by default (like tmux) — rebind it in config.toml if you want.
Day oneThe commands you'll actually use

Launch, look, persist, maintain

Launch, look, persist, maintain

Most days you just type `claude` (now via herdr) and work. But the bare commands are worth knowing: `herdr` attaches the TUI, `herdr status` shows the server, named sessions keep separate worlds alive, and the maintenance commands keep you current on the preview channel. Detaching is free and instant; stopping a session is the deliberate act that actually kills it.

  • `herdr` launches/attaches; detach leaves everything running in the background.
  • Named sessions: create separate persistent worlds you can reattach by name.
  • `herdr update` to upgrade; you're on the `preview` channel (set `stable` to slow down).
  • `herdr server stop` is the only thing that actually tears the world down.
Detach is free. Stop is a decision.
Git Bash · herdrLaunch / attach + named sessions
herdr                       # launch or attach the persistent TUI
herdr --session merlino     # create/attach a named session
herdr session list
herdr session attach merlino
herdr session stop merlino
Git Bash · herdrWorkspaces, worktrees, tabs
herdr workspace create --cwd /d/ClaudeDev --label claudedev --focus
herdr worktree create --branch feature/x --base main --focus
herdr workspace list
herdr tab create --label notes
Git Bash · herdrMaintenance
herdr update                # upgrade (preview channel)
herdr channel set stable    # switch channels
herdr server reload-config  # reload config.toml live
herdr server stop
The power moveScripting agents over the socket

Spawn, send, read, wait

Spawn, send, read, wait

This is what makes herdr more than a multiplexer. Every agent is addressable from the command line through herdr's socket API: start one in a pane, type text into it, read its recent output, and block until it goes idle. That's the whole loop for orchestration — fire an agent, wait for it to finish, read the result, send the next instruction — all scriptable from plain Git Bash.

  • `herdr agent start` launches an agent in a pane at a chosen dir.
  • `herdr agent send` types text in; `herdr agent read` pulls its output back.
  • `herdr agent wait --status idle` blocks until it's done — the orchestration primitive.
  • `herdr agent list` shows every agent + state; `agent attach --takeover` jumps in.
Targets accept terminal ids, unique agent names, or detected labels (claude, codex, gemini).
Git Bash · herdrStart an agent + see what's running
herdr agent start claude --cwd /d/ClaudeDev --focus -- claude
herdr agent list
Git Bash · herdrDrive it from a script
herdr agent send <target> "fix the failing test"
herdr agent read <target> --source recent --lines 50
herdr agent wait <target> --status idle --timeout 600000
AnywhereLocal, SSH, or thin client

Attach the same world over SSH

Attach the same world over SSH

Because herdr is server + client, the server can live on another machine. Point the client at an SSH target and you attach the remote herdr — same sessions, panes, and running agents — from your laptop, the MSI box, or a phone. herdr keeps the bridge alive through NAT/idle timeouts, and you choose whether keybindings come from your local config or the server's.

  • `herdr --remote user@host` attaches a remote herdr server.
  • Add `--session name` to land directly in a specific remote session.
  • Agents you started on Hetzner keep running whether or not you're attached.
  • `--remote-keybindings local|server` picks whose keymap wins on attach.
Your fleet boxes (Hetzner / MSI) can each run a herdr server you hop between.
Git Bash · herdrAttach a remote herdr
herdr --remote merlino@hetzner --session build
herdr --remote msi --remote-keybindings local

Keep the commands handy

Every herdr command from this guide — everyday, sessions, workspaces, driving agents, remote — in one page you can bookmark.

Open the Command Library →