Herdr keyboard shortcuts

By

Herdr keyboard shortcuts cheat sheet: the ctrl+b prefix, splits, tabs, panes, renaming, copy mode, the session navigator, and how to change any key.

~~~

Herdr’s default prefix key is ctrl+b. Press ctrl+b, release it, then press the action key: ctrl+b c opens a new tab, ctrl+b v splits the pane to the right, and ctrl+b q detaches while everything keeps running.

To see every binding active in your session, press ctrl+b ?. Press / in that panel to filter it, for example by typing rename.

This post lists the default keymap, checked against the Herdr docs and source in September 2026. I use the defaults myself: my config.toml has a single line, onboarding = false. If Herdr is new to you, start with my deep dive into Herdr.

The quick answer

What you wantKeys
Show every bindingctrl+b, then ?
New tabctrl+b, then c
Split rightctrl+b, then v
Split downctrl+b, then -
Move to another panectrl+b, then h j k l
Zoom the focused panectrl+b, then z
Close the focused panectrl+b, then x
Rename the tabctrl+b, then shift+t
Rename the workspacectrl+b, then shift+w
New workspacectrl+b, then shift+n
Switch workspacectrl+b, then w
Scroll back and copyctrl+b, then [
Detachctrl+b, then q

How does the Herdr prefix key work?

The programs inside a pane already use most key combinations. ctrl+c interrupts, ctrl+r searches your shell history, and editors claim almost everything else. Herdr reserves one key, the prefix, and treats the next keypress as a command for itself.

So ctrl+b z is two steps. Hold Control and press b. Let go of both keys. Now press z, and the focused pane fills the whole tab. Do it again to bring the other panes back.

The Herdr docs and the config file write this as prefix+z. When a binding includes shift, like prefix+shift+t, the second key is a capital T.

Press Esc after the prefix to cancel it. A key that isn’t bound cancels it too, and Herdr drops that key instead of passing it to the pane.

To send a real ctrl+b to the program in the pane, press ctrl+b twice. Bash and zsh use it to move the cursor back one character, and Vim uses it to scroll up a page.

The complete Herdr cheat sheet

In every table with an After ctrl+b column, press the prefix first and then the key in that column.

Session and help

ActionAfter ctrl+b, press
Show all bindings?
Detach and leave everything runningq
Open settingss
Reload config.tomlshift+r
Jump to the notification on screeno
Send a literal ctrl+b to the panectrl+b

There is no key that stops the server. Detaching keeps every process alive, and stopping is a CLI command, herdr server stop. I explain the difference in how to exit, close, and detach from Herdr.

Workspaces

ActionAfter ctrl+b, press
New workspaceshift+n
Rename workspaceshift+w
Close workspaceshift+d
Workspace navigationw
Session navigatorg
New Git worktreeshift+g
Show or hide the sidebarb

Closing a workspace asks for confirmation first, because it ends every process in its tabs.

ctrl+b w opens navigate mode. While it’s open, single keys work without the prefix:

In navigate modeKeys
Select the workspace above or belowup / down
Open the selected workspaceEnter
Jump to workspace 1 to 91 to 9
Focus the pane left, down, up, righth j k l
Cycle through panesTab / shift+Tab
Leave navigate modeEsc

The other prefix keys work in navigate mode too. ctrl+b w followed by c creates a tab without pressing ctrl+b again.

Tabs

ActionAfter ctrl+b, press
New tabc
Rename tabshift+t
Next tabn
Previous tabp
Go to tab 1 to 91 to 9
Close tabshift+x

A new tab asks for a name before it opens. If you’d rather skip that prompt, set prompt_new_tab_name = false in the [ui] table of your config.

Panes

ActionAfter ctrl+b, press
Split right (side by side)v
Split down (stacked)-
Focus the pane left, down, up, righth j k l
Next or previous paneTab / shift+Tab
Swap with the pane left, down, up, rightshift+h shift+j shift+k shift+l
Zoom the focused panez
Resize moder
Rename paneshift+p
Close panex

You get a new pane by splitting the one you’re in, since Herdr has no separate “new pane” key. From a script, the same split is:

herdr pane split --current --direction right

In resize mode, press h, j, k, l or the arrow keys to resize the focused pane, then Esc or Enter when you’re done.

Closing a pane ends the program running in it.

Herdr names splits the way Vim does. In the config, split_vertical is the side-by-side split and split_horizontal is the stacked one. tmux uses the opposite names, so keep that in mind when you edit the file.

Rename a tab, workspace, pane, or session

RenameAfter ctrl+b, press
Tabshift+t
Workspaceshift+w
Paneshift+p

You can also right-click a tab, a pane, or a workspace in the sidebar and choose Rename. The sidebar lists workspaces under spaces, so if you’re looking for a way to rename a space, it’s the same thing.

From the CLI, read the IDs with herdr workspace list, herdr tab list or herdr pane list, then rename:

herdr tab rename w1:t2 tests
herdr workspace rename w1 api
herdr pane rename w1:p2 server

Named sessions can’t be renamed. A session gets its name when you create it with herdr session attach work, and Herdr keeps its files in ~/.config/herdr/sessions/work.

Scrollback and copy mode

ActionAfter ctrl+b, press
Enter copy mode[
Open the pane’s scrollback in $EDITORe

Copy mode is how you read and copy a pane’s history with the keyboard. These keys work once you’re inside:

In copy modeKeys
Moveh j k l
Jump by wordw b e (or W B E for whitespace-separated words)
Page up and downPageUp / PageDown, ctrl+u / ctrl+d
Search forward or backward/ / ?
Next or previous matchn / N
Start a selectionv or Space
Copy the selectiony or Enter
Leaveq or Esc

The program in the pane keeps running while you scroll, and new output keeps arriving. Search ignores case unless your query has an uppercase letter.

Notice that ctrl+b inside copy mode starts the prefix instead of paging up.

Find a pane or an agent

ctrl+b g opens the session navigator, a searchable list of every workspace, tab, and pane in the session.

In the session navigatorKeys
Search panes by name/, then type
Show only blocked, working, idle, or done agentsb / w / i / d
Show everything againa
Move up and downk / j or the arrow keys
Jump to the selected rowEnter
CloseEsc

Press b to list only the agents waiting for your input, then Enter to jump to one.

ctrl+b o jumps to whatever the notification on screen points at, like an agent that just finished in another workspace.

Herdr also has agent actions with no default key: next_agent, previous_agent and focus_agent. Bind them if you jump between agents often:

[keys]
next_agent = "prefix+a"
focus_agent = "prefix+alt+1..9"

Does Herdr support the mouse?

Yes. You can use Herdr without learning any of the keys above, because mouse capture is on by default:

  • click a pane, tab, workspace, or agent to focus it
  • drag the border between two panes to resize them
  • right-click a pane for Split right, Split down, Zoom, Rename pane and Close pane
  • right-click a tab or a workspace to rename or close it
  • drag to select text, which copies it, or double-click to copy a word
  • ctrl-click a link in a pane to open it
  • use the scroll wheel to move through a pane’s output

At the bottom of the sidebar’s workspace list, new creates a workspace and menu opens settings, the keybinding list, reload config, and detach.

If you want your terminal’s own mouse selection back, turn mouse capture off:

[ui]
mouse_capture = false

How do I change the Herdr prefix key?

Herdr reads its config from ~/.config/herdr/config.toml (on Windows, %APPDATA%\herdr\config.toml). Keybindings go in a [keys] table.

This moves the prefix to ctrl+a, the default in GNU Screen:

[keys]
prefix = "ctrl+a"

Your shell uses ctrl+a to jump to the start of the line. After this change, press ctrl+a twice to send it.

Then check the file and apply it:

herdr config check
herdr server reload-config

config check prints any problem it finds in the file. reload-config applies the change to the running session without restarting your panes. Inside Herdr, ctrl+b shift+r reloads the config too.

If a value is invalid, Herdr falls back to the default and shows a warning when it starts.

How do I change a single Herdr keybinding?

Every action has a name, and you assign it a key string. A binding can also be a list, so you can keep the default and add a second shortcut.

This config brings back the tmux keys for detach, rename tab and both splits, and keeps Herdr’s own split keys working:

[keys]
detach = "prefix+d"
rename_tab = "prefix+comma"
split_vertical = ["prefix+v", "prefix+percent"]
split_horizontal = ["prefix+minus", "prefix+double_quote"]

A new value replaces the default, so after this ctrl+b q no longer detaches.

prefix+d means the prefix, then d. Punctuation can be written by name, like minus, comma, percent or double_quote. A binding without prefix+, like ctrl+alt+z, works as a direct shortcut with no prefix at all.

Direct shortcuts are faster, but your terminal and your desktop already own many of them. The Herdr docs suggest the ctrl+alt family because it’s almost always free:

[keys]
new_tab = ["prefix+c", "ctrl+alt+c"]
zoom = ["prefix+z", "ctrl+alt+z"]

Avoid bindings made of a single plain key like n. Herdr would catch that key every time you type it in a pane.

To see every action name with its default, print the full default config:

herdr --default-config

To start over, herdr config reset-keys backs up config.toml and removes your custom keybindings, so the defaults come back at the next reload.

Herdr shortcuts for tmux users

Herdr uses the same ctrl+b prefix as tmux, so a lot of muscle memory carries over. After the prefix, these keys do the same thing in both: c for a new tab (a window, in tmux), n and p for the next and previous one, z to zoom, x to close a pane, [ for copy mode, ? for the key list, and ctrl+b again to send the prefix to the program.

These are different:

ActiontmuxHerdr
Split side by side%v
Split stacked"-
Detachdq
Rename the window or tab,shift+t
Rename the session$not possible
Close the window or tab&shift+x
Move between panesarrow keysh j k l
Next paneoTab
Numbered windows or tabs start at01

Be careful with q. In tmux it shows the pane numbers, and in Herdr it detaches. Detaching keeps everything running, but it surprises you the first time. Also, ctrl+b s opens Herdr’s settings, not a list of sessions.

For the bigger differences, read my Herdr vs tmux vs Zellij comparison, or my tmux tutorial for tmux itself.

Using Herdr shortcuts on a phone

On a phone, the hard part is typing ctrl+b at all. Most SSH apps have an extra row of keys with Control, so use that, or move the prefix to a key the app sends easily.

When the terminal is 64 columns wide or less, Herdr switches to a single-column mobile layout. My guide to using Herdr from a phone covers the SSH setup and the keys I’d use there.

What if a shortcut does nothing?

Your terminal or your operating system might grab the key before Herdr sees it. This happens more with direct shortcuts than with prefix keys.

Press ctrl+b ? to confirm the binding exists, then look for a conflicting shortcut in your terminal’s settings. The Herdr keyboard docs list the ctrl+alt chords that terminals and desktop environments already use.

Tagged: AI · All topics

Want me to talk about your product? You can sponsor this site.

~~~

Related posts about ai: