A few months ago, I started running Claude Code in one terminal and Codex in another, and within a week, I had five tabs open. Some were idle and waiting for me, but I couldn’t tell which ones without opening each tab individually.
I tried using tmux status bars with custom scripts to track idle panes, and it worked to some extent, but it took time to set up and still couldn’t tell whether an agent was blocked or actively working. That’s exactly the problem herdr is designed to solve.
herdr is a terminal multiplexer built specifically for running AI coding agents, not just regular shell sessions. It’s a single Rust binary created by developer Ogulcan Celik and has been one of the top trending projects on GitHub since late June 2026, gaining more than 10,000 stars in a short time.
If you’ve used tmux before, herdr will feel familiar, and the difference is that herdr monitors what your AI agents are doing and shows at a glance which ones are working, blocked, or finished.
What herdr Actually Does
At its core, herdr is a session manager that runs in your terminal and keeps your processes running even if you disconnect, much like tmux or screen.
You can create workspaces, split them into panes, run different commands in each pane, and detach from the session whenever you want. The server continues running in the background, so closing your laptop won’t stop your sessions.
What makes herdr different is its built-in awareness of AI coding agents that detects tools such as Claude Code, Codex, Amp, Devin CLI, and several other coding agents by looking at process names and terminal output patterns and then groups each pane into one of four states shown in the sidebar: blocked, working, done, or idle.
There’s no need to configure hooks or write custom scripts. You simply start an agent in a pane, and herdr automatically figures out its current state.
Each pane is also a real terminal, not a simulated one, which is more important than it may sound. Many graphical agent managers redraw terminal output inside their own interface, and full-screen terminal applications often don’t display correctly in those environments. herdr avoids this issue because it isn’t an application that wraps around a terminal—it is the terminal.
Prerequisites
Before installing herdr, make sure you have the following:
- A Linux system running a reasonably recent distribution. Ubuntu, Debian, Fedora, RHEL, Rocky Linux, and Arch Linux all work well because herdr is distributed as a static binary.
- A terminal emulator that you already use. herdr runs inside your existing terminal and doesn’t replace it.
curlinstalled, which is needed to download and run the installation script.- At least one AI coding agent, such as Claude Code, Codex, or Amp, if you want to use herdr’s agent detection features.
- Optional SSH access to a remote server if you plan to run AI agents on remote machines.
You also don’t need root or administrator privileges for a standard installation. The install script places the herdr binary in your user path instead of system directories.
Step 1: Install herdr
The quickest way to install herdr on Linux is by using the official installation script:
curl -fsSL https://herdr.dev/install.sh | sh
You’ll see output similar to this:

Here’s what the command does:
curl -fsSLdownloads the installation script quietly, follows redirects, and stops if the download fails.| shsends the downloaded script directly to the shell and executes it.
On Ubuntu or Debian systems with Homebrew (Linuxbrew) installed, run:
brew install herdr
On RHEL or Rocky Linux systems with mise installed, run:
mise use -g herdr
If you use Nix, you can run herdr without permanently installing it:
nix run github:ogulcancelik/herdr
After installation, verify that herdr is available in your PATH:
herdr --version
If you see a “command not found” error, your shell may not have picked up ~/.local/bin yet. Add it to your PATH in ~/.bashrc or ~/.zshrc, then reload your shell.
Step 2: Launch herdr and Understand the Interface
Start herdr by running:
herdr
The first time you run it, herdr starts a background server process and opens a workspace with a single pane. From this point on, everything happens inside that terminal window. You can use both your keyboard and mouse to navigate.
Like tmux, herdr uses a prefix key system. Press Ctrl+b, release it, and then press another key to perform an action. This approach prevents herdr from intercepting keystrokes that your shell or AI agents may need.
Some useful keyboard shortcuts are:
Ctrl+b, thenShift+N– Create a new workspace.Ctrl+b, thenc– Open a new tab in the current workspace.Ctrl+b, thenvor-– Split the current pane vertically or horizontally.Ctrl+b, thenw– Switch between workspaces.Ctrl+b, thenq– Detach from the session while keeping everything running.Ctrl+b, then?– Display the complete list of keyboard shortcuts.
You’ll also notice a sidebar on the left side of the screen that lists all open panes. This is where herdr’s agent-awareness feature becomes useful, as it displays the status of your AI agents once they are running in their own panes.
Step 3: Run Your First Agent Inside herdr
Inside any pane, start your AI coding agent just as you normally would. For example, to start Claude Code, run:
claude
herdr automatically detects the process by looking at its name and terminal output and then starts tracking the agent’s status and displays it in the sidebar. As the agent’s activity changes, you’ll see the status indicator update in real time.
For example:
🟡 pane-1 claude working 🔴 pane-2 codex blocked 🔵 pane-3 amp done
The status indicators mean:
- 🟡 working – The agent is actively generating a response or running a tool.
- 🔴 blocked – The agent is waiting for your input, such as answering a question or approving a permission request.
- 🔵 done – The agent has finished its task and is sitting at a prompt.
- 🟢 idle – No supported agent is running in the pane, or the shell is simply idle.
This is what makes herdr useful. Instead of switching between multiple terminal tabs to figure out which agent needs your attention, you can simply glance at the sidebar and see the status of every agent at once.
Step 4: Split Panes and Build a Workspace
In real-world use, you’ll often want multiple panes open at the same time. For example, you might have an AI agent running in one pane, a log viewer in another, and a shell available for quick commands.
Press Ctrl+b, then v to split the current pane vertically. In the new pane, you can start another agent or run a monitoring command such as:
tail -f /var/log/syslog
You can resize panes by dragging the border with your mouse. If you prefer using the keyboard, press Ctrl+b followed by the arrow keys to adjust the layout.
To stay organized:
- Press
Ctrl+b, then c to create a new tab for related panes in the same project. - Press
Ctrl+b, then Shift+N to create a separate workspace for completely different tasks.
A practical approach is to keep one workspace for each project, with its own set of AI agents and a dedicated shell pane for commands such as Git operations or system administration tasks.
Step 5: Detach, Reattach, and Keep Agents Alive
Whenever you need to close your terminal or step away from your computer, you can detach from your herdr session without stopping anything that’s running inside it.
To detach, press:
Ctrl+b, then q
All your panes keep running in the background. Any AI agents, shell sessions, or log monitoring commands continue exactly as they were.
When you’re ready to return, simply start herdr again:
herdr
This is one of herdr’s biggest advantages over regular terminal tabs. Since the session runs on the herdr server in the background, your agents and terminal processes stay alive even after you close your terminal window and can be restored when you reconnect.
Step 6: Run herdr on a Remote Server
If you run AI coding agents on a VPS or remote server, herdr can connect to that server while keeping your local terminal as the client. The agents themselves continue running on the remote machine.
Connect to a remote server with:
herdr --remote ssh://you@yourserver:2222
This is particularly useful if your workflow involves pasting screenshots or images into an AI agent. Traditional SSH sessions combined with tmux often have trouble handling image pasting correctly, while herdr’s remote mode is designed to preserve that functionality.
If your SSH server uses a non-standard port, you may need to open that port in the server’s firewall.
On Ubuntu or Debian systems:
sudo ufw allow 2222/tcp
On RHEL or Rocky Linux systems:
sudo firewall-cmd --add-port=2222/tcp --permanent sudo firewall-cmd --reload
Here’s what these commands do:
sudoruns the command with administrator privileges, which are required to modify firewall rules.ufw allow 2222/tcporfirewall-cmd --add-port=2222/tcpopens TCP port2222, allowing incoming SSH connections on that port.
You can also give a remote session a name and reconnect to it later without typing the full SSH URL every time:
herdr --remote workbox
Keeping herdr Updated
If you installed herdr using the official installation script, you can update it with the built-in updater:
herdr update
If you installed herdr using a package manager, update it through that package manager instead, as herdr update only works for script-based installations.
On Ubuntu or Debian systems with Homebrew:
brew upgrade herdr
On RHEL or Rocky Linux systems with mise:
mise upgrade herdr
Conclusion
At this point, you have herdr installed, running your first agent with live state tracking in the sidebar, panes split into a real workspace, and a way to detach and reattach without losing anything, on your own machine or on a remote server over SSH. That covers the core of what most people need it for day-to-day.
Go try splitting a pane and running two different agents side by side right now, one working on a feature branch and one reviewing a pull request. Watch the sidebar as they shift between working and blocked. That’s the moment herdr’s value clicks, when you stop babysitting terminal tabs and start reading state at a glance instead.
I’m curious how this fits into setups where agents are already running inside CI pipelines or on ephemeral cloud instances rather than a persistent VPS. If you’ve tried wiring herdr’s socket API into something like that, I’d like to hear how it held up.
