Config reference
Every canonical key Herdr reads from config.toml, flat and filterable. For guided setup
and the reasoning behind these options, see Configuration.
Print the full commented default config at any time:
herdr --default-configCustom command bindings ([[keys.command]]) are user-defined tables and are not
listed per key here; see
Custom command keybindings.
General
-
onboardingboolean defaultunsetShow first-run setup on startup. Missing or true shows onboarding; continuing from onboarding writes onboarding = false.
Theme
-
theme.namestring default"catppuccin"Built-in theme name.
-
theme.auto_switchboolean defaultfalseFollow host terminal light/dark appearance and switch between theme names.
-
theme.dark_namestring defaultunsetTheme name used when `auto_switch` selects a dark appearance.
-
theme.light_namestring defaultunsetTheme name used when `auto_switch` selects a light appearance.
-
theme.custom.accentcolor defaultunsetOverride the accent color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.panel_bgcolor defaultunsetOverride the panel_bg color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.surface0color defaultunsetOverride the surface0 color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.surface1color defaultunsetOverride the surface1 color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.surface_dimcolor defaultunsetOverride the surface_dim color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.overlay0color defaultunsetOverride the overlay0 color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.overlay1color defaultunsetOverride the overlay1 color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.textcolor defaultunsetOverride the text color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.subtext0color defaultunsetOverride the subtext0 color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.mauvecolor defaultunsetOverride the mauve color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.greencolor defaultunsetOverride the green color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.yellowcolor defaultunsetOverride the yellow color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.redcolor defaultunsetOverride the red color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.bluecolor defaultunsetOverride the blue color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.tealcolor defaultunsetOverride the teal color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
-
theme.custom.peachcolor defaultunsetOverride the peach color token on top of the base theme. Accepts hex, named colors, rgb(r,g,b), or reset aliases.
Terminal
-
terminal.default_shellstring default""Executable used for new interactive panes. Empty means SHELL, then /bin/sh.
-
terminal.shell_modeenum default"auto"Startup mode for new interactive pane shells.
autologinnon_login -
terminal.new_cwdenum default"follow"CWD policy for new interactive panes, tabs, and workspaces.
followhomecurrentpath
Updates
-
update.channelenum default"stable" ("preview" on Windows)Update channel used by background version checks and herdr update. Homebrew, mise, and Nix installs ignore the preview channel.
stablepreview -
update.version_checkboolean defaulttrueCheck herdr.dev for new Herdr versions in the background.
-
update.manifest_checkboolean defaulttrueCheck herdr.dev for remote agent-detection manifest updates in the background. Bundled manifests and local overrides still apply.
Keybindings
-
keys.prefixstring default"ctrl+b"Prefix key to enter prefix mode (e.g. "ctrl+b", "f12", "esc").
-
keys.helpkeybinding default"prefix+?"Open keybinding help.
-
keys.settingskeybinding default"prefix+s"Open settings.
-
keys.new_workspacekeybinding default"prefix+shift+n"Create a new workspace.
-
keys.new_worktreekeybinding default"prefix+shift+g"Create a Git worktree from the selected workspace.
-
keys.open_worktreekeybinding defaultunsetOpen an existing Git worktree from the selected workspace. Unset by default.
-
keys.remove_worktreekeybinding defaultunsetDelete the selected managed worktree checkout after confirmation. Unset by default.
-
keys.rename_workspacekeybinding default"prefix+shift+w"Rename the selected workspace.
-
keys.close_workspacekeybinding default"prefix+shift+d"Close the selected workspace.
-
keys.workspace_pickerkeybinding default"prefix+w"Open the workspace navigation surface.
-
keys.gotokeybinding default"prefix+g"Open the session navigator.
-
keys.navigate_workspace_upkeybinding default"up"Move workspace selection up in navigate mode.
-
keys.navigate_workspace_downkeybinding default"down"Move workspace selection down in navigate mode.
-
keys.navigate_pane_leftkeybinding default"h"Focus the pane to the left in navigate mode. Left arrow is always an alias.
-
keys.navigate_pane_downkeybinding default"j"Focus the pane below in navigate mode.
-
keys.navigate_pane_upkeybinding default"k"Focus the pane above in navigate mode.
-
keys.navigate_pane_rightkeybinding default"l"Focus the pane to the right in navigate mode. Right arrow is always an alias.
-
keys.detachkeybinding default"prefix+q"Detach from server/client mode, or exit --no-session mode.
-
keys.reload_configkeybinding default"prefix+shift+r"Reload config.toml in the running app/server.
-
keys.open_notification_targetkeybinding default"prefix+o"Focus the currently visible notification target.
-
keys.previous_workspacekeybinding defaultunsetSelect the previous workspace. Unset by default.
-
keys.next_workspacekeybinding defaultunsetSelect the next workspace. Unset by default.
-
keys.previous_agentkeybinding defaultunsetFocus the previous agent shown in the agent panel. Unset by default.
-
keys.next_agentkeybinding defaultunsetFocus the next agent shown in the agent panel. Unset by default.
-
keys.focus_agentkeybinding defaultunsetFocus an agent by index 1-9. Unset by default.
-
keys.remote_image_pastestring default"ctrl+v"Local-client shortcut that sends a clipboard image to a remote Herdr session.
-
keys.new_tabkeybinding default"prefix+c"Create a new tab in the active workspace.
-
keys.rename_tabkeybinding default"prefix+shift+t"Rename the active tab.
-
keys.previous_tabkeybinding default"prefix+p"Select the previous tab.
-
keys.next_tabkeybinding default"prefix+n"Select the next tab.
-
keys.switch_tabkeybinding default"prefix+1..9"Switch to tab 1-9.
-
keys.switch_workspacekeybinding defaultunsetSwitch to workspace 1-9 from prefix mode. Unset by default.
-
keys.close_tabkeybinding default"prefix+shift+x"Close the active tab.
-
keys.rename_panekeybinding default"prefix+shift+p"Rename the focused pane.
-
keys.edit_scrollbackkeybinding default"prefix+e"Open the focused pane scrollback in $EDITOR.
-
keys.copy_modekeybinding default"prefix+["Enter keyboard copy mode for the focused pane.
-
keys.focus_pane_leftkeybinding default"prefix+h"Focus the pane to the left.
-
keys.focus_pane_downkeybinding default"prefix+j"Focus the pane below.
-
keys.focus_pane_upkeybinding default"prefix+k"Focus the pane above.
-
keys.focus_pane_rightkeybinding default"prefix+l"Focus the pane to the right.
-
keys.swap_pane_leftkeybinding default"prefix+shift+h"Swap the focused pane with the pane to the left.
-
keys.swap_pane_downkeybinding default"prefix+shift+j"Swap the focused pane with the pane below.
-
keys.swap_pane_upkeybinding default"prefix+shift+k"Swap the focused pane with the pane above.
-
keys.swap_pane_rightkeybinding default"prefix+shift+l"Swap the focused pane with the pane to the right.
-
keys.cycle_pane_nextkeybinding default"prefix+tab"Cycle to the next pane.
-
keys.cycle_pane_previouskeybinding default"prefix+shift+tab"Cycle to the previous pane.
-
keys.last_panekeybinding defaultunsetFocus the last focused pane across workspaces and tabs. Unset by default.
-
keys.split_verticalkeybinding default"prefix+v"Split pane vertically (side by side).
-
keys.split_horizontalkeybinding default"prefix+minus"Split pane horizontally (stacked).
-
keys.close_panekeybinding default"prefix+x"Close the focused pane.
-
keys.zoomkeybinding default"prefix+z"Toggle zoom for the focused pane. The legacy key name `fullscreen` is accepted as an alias.
-
keys.resize_modekeybinding default"prefix+r"Enter resize mode.
-
keys.toggle_sidebarkeybinding default"prefix+b"Toggle sidebar collapse.
-
keys.indexed.tabsstring defaultunsetModifier combo for tab shortcuts 1-9. Unset by default.
-
keys.indexed.workspacesstring defaultunsetModifier combo for workspace shortcuts 1-9. Unset by default.
-
keys.indexed.agentsstring defaultunsetModifier combo for agent shortcuts 1-9. Unset by default.
UI and sidebar
-
ui.sidebar_widthinteger default26Default expanded sidebar width in columns. Auto-scales based on workspace names.
-
ui.sidebar_min_widthinteger default18Minimum sidebar width (columns) when expanded.
-
ui.sidebar_max_widthinteger default36Maximum sidebar width (columns) when expanded.
-
ui.sidebar_collapsed_modeenum defaultcompactCollapsed sidebar presentation.
compacthidden -
ui.mobile_width_thresholdinteger default64Terminal width at or below which Herdr uses the mobile single-column layout.
-
ui.mouse_captureboolean defaulttrueCapture mouse input for Herdr's mouse UI.
-
ui.host_cursorenum defaultautoHost cursor policy.
autonativedrawn -
ui.right_click_passthrough_modifierstring default""Modifier that lets right-click gestures pass through to pane apps. Empty disables it. Accepts ctrl, alt, cmd, super, meta, hyper, or a + separated combination; shift is rejected because many terminals reserve Shift+mouse.
-
ui.redraw_on_focus_gainedboolean defaulttrueForce a full host-terminal redraw when the outer terminal regains focus.
-
ui.mouse_scroll_linesinteger default3Lines to scroll per mouse wheel notch.
-
ui.confirm_closeboolean defaulttrueAsk for confirmation before closing a workspace.
-
ui.prompt_new_tab_nameboolean defaulttrueAsk for a tab name before creating a new tab.
-
ui.pane_bordersboolean defaulttrueDraw borders around split panes.
-
ui.pane_gapsboolean defaulttrueKeep split panes visually separated instead of sharing divider borders.
-
ui.show_agent_labels_on_pane_bordersboolean defaultfalseShow agent labels in split pane borders when no manual pane label is set.
-
ui.hide_tab_bar_when_single_tabboolean defaultfalseHide the tab row when the workspace has one tab.
-
ui.agent_panel_sortenum default"spaces"Agent sidebar ordering. Saved values are "spaces" or "priority"; "workspaces" is accepted as an alias for "spaces".
spacespriority -
ui.accentcolor default"cyan"Accent color for highlights, borders, and navigation UI. Accepts hex (#89b4fa), named colors (cyan, blue), or RGB (rgb(137,180,250)).
Notifications
-
ui.toast.deliveryenum default"off"Popup notification delivery. off disables popups, herdr shows in-app toasts, terminal asks the outer terminal for a desktop notification, system asks the OS notification service directly.
offherdrterminalsystem -
ui.toast.delay_secondsinteger default1Seconds to wait before sending finished or needs-input agent notifications. Herdr notifies only if the pane is still in the same state when the delay expires. 0 is instant; valid values are 0 through 3600.
-
ui.toast.herdr.positionenum default"bottom-right"In-app toast position, relative to the full Herdr frame.
top-lefttop-rightbottom-leftbottom-right -
ui.toast.clipboard.enabledboolean defaulttrueShow the copied-to-clipboard popup after a mouse copy.
-
ui.toast.clipboard.positionenum default"bottom-center"Copied-to-clipboard popup position.
top-lefttop-centertop-rightbottom-leftbottom-centerbottom-right
Sound
-
ui.sound.enabledboolean defaulttruePlay sounds when agents change state in background workspaces.
-
ui.sound.pathpath defaultunsetOptional mp3 file path used for all notification sounds. Relative paths are resolved from the config file's directory.
-
ui.sound.done_pathpath defaultunsetOptional mp3 file path for "done" notifications. Relative paths are resolved from the config file's directory.
-
ui.sound.request_pathpath defaultunsetOptional mp3 file path for "request" notifications. Relative paths are resolved from the config file's directory.
-
ui.sound.agents.pienum default"default"Sound override for detected Pi agents.
defaultonoff -
ui.sound.agents.claudeenum default"default"Sound override for detected Claude Code agents.
defaultonoff -
ui.sound.agents.codexenum default"default"Sound override for detected Codex agents.
defaultonoff -
ui.sound.agents.geminienum default"default"Sound override for detected Gemini CLI agents.
defaultonoff -
ui.sound.agents.cursorenum default"default"Sound override for detected Cursor Agent CLI agents.
defaultonoff -
ui.sound.agents.devinenum default"default"Sound override for detected Devin agents.
defaultonoff -
ui.sound.agents.agyenum default"default"Sound override for detected Agy agents.
defaultonoff -
ui.sound.agents.clineenum default"default"Sound override for detected Cline agents.
defaultonoff -
ui.sound.agents.open_codeenum default"default"Sound override for detected OpenCode agents.
defaultonoff -
ui.sound.agents.github_copilotenum default"default"Sound override for detected GitHub Copilot CLI agents.
defaultonoff -
ui.sound.agents.kimienum default"default"Sound override for detected Kimi Code CLI agents.
defaultonoff -
ui.sound.agents.kiroenum default"default"Sound override for detected Kiro agents.
defaultonoff -
ui.sound.agents.droidenum default"off"Sound override for detected Droid agents.
defaultonoff -
ui.sound.agents.ampenum default"default"Sound override for detected Amp agents.
defaultonoff -
ui.sound.agents.grokenum default"default"Sound override for detected Grok CLI agents.
defaultonoff -
ui.sound.agents.hermesenum default"default"Sound override for detected Hermes Agent agents.
defaultonoff -
ui.sound.agents.kiloenum default"default"Sound override for detected Kilo Code CLI agents.
defaultonoff -
ui.sound.agents.qoderclienum default"default"Sound override for detected Qoder CLI agents.
defaultonoff
Session
-
session.resume_agents_on_restoreboolean defaulttrueResume supported AI-agent panes into their native conversation sessions when restoring a Herdr session.
Worktrees
-
worktrees.directorystring default"~/.herdr/worktrees"Root directory under which Herdr creates <repo>/<branch-slug> checkouts.
Remote
-
remote.manage_ssh_configboolean defaulttrueAdd keepalive fallbacks and private connection reuse for `herdr --remote`. Set false to run plain ssh unchanged.
Advanced
-
advanced.scrollback_limit_bytesinteger default10000000Maximum scrollback buffer size in bytes retained per pane terminal. The legacy key name `scrollback_lines` is accepted as an alias.
Experimental
-
experimental.allow_nestedboolean defaultfalseAllow launching herdr inside an existing herdr pane.
-
experimental.kitty_graphicsboolean defaultfalseExperimental local Kitty graphics rendering for attached clients.
-
experimental.pane_historyboolean defaultfalsePersist pane screen history to session-history.json.
-
experimental.reveal_hidden_cursor_for_cjk_imeboolean defaultfalseExpose the focused pane's cursor anchor to the outer terminal even when the pane requested `?25l`, so macOS native input methods keep tracking the candidate window when TUIs paint their own cursor (Claude Code, pi, codex, etc.). Default: false. When the pane reports no cursor position, falls back to the pane's top-left so a stable IME anchor is always available. Trade-off when enabled: an extra hardware cursor will be visible in the outer terminal for apps that hide the cursor without painting a replacement (vim normal mode, etc.). See #149.
-
experimental.cjk_ime_agentslist of strings default[]Restrict `reveal_hidden_cursor_for_cjk_ime` to focused panes whose detected agent matches one of these names (case-insensitive). Empty list means apply to any focused pane. Unknown agent names are ignored; if the list contains no valid names, the reveal does not apply. Accepted names: pi, claude, codex, gemini, cursor, devin, cline, opencode, copilot, kimi, kiro, droid, amp, grok, hermes, kilo, qodercli, qoder.
-
experimental.cjk_ime_cursor_shapeenum default"steady_block"Cursor shape rendered for the IME anchor when `reveal_hidden_cursor_for_cjk_ime` is enabled.
blocksteady_blockunderlinesteady_underlinebarsteady_bar -
experimental.switch_ascii_input_source_in_prefixboolean defaultfalseWhile prefix mode is active, temporarily switch the macOS host input source to an ASCII-capable keyboard layout so prefix commands are read as ASCII even when a CJK IME is active, then restore the previous input source when prefix mode exits. macOS only; a no-op elsewhere and a best-effort no-op if the switch fails.
No keys match this filter.