Skip to content

Repository files navigation

herdr-dev-layout

Sticky agent pane for Herdr: review / explorer / terminal tabs with a live agent that follows the active tool tab.

Plugin id: agentic-dev.dev-layout
Requires: Herdr >= 0.7.5, jq, and the tools you use in each tab (tuicr, nvim, etc.)

Trust and security

Herdr plugins run as your user and can call the full Herdr CLI. Read Trust and security before installing.

Before installing:

  1. Skim herdr-plugin.toml and dev-layout.sh.
  2. Prefer interactive install (no --yes) the first time — Herdr shows a source/command preview.
  3. Pin a release when you want a fixed revision.

Install

herdr plugin install simoncrypta/herdr-dev-layout --ref v0.2.0

Local development link:

git clone https://github.com/simoncrypta/herdr-dev-layout.git
herdr plugin link ~/path/to/herdr-dev-layout

Verify:

herdr plugin list
herdr plugin action invoke agentic-dev.dev-layout.create

Actions

Action id Behavior
create / apply Create or ensure the sticky-pane layout in the current workspace
focus_agent Focus the agent pane (dev workspaces only; no-op elsewhere)
select_review / select_explorer / select_terminal Semantic tab switch with sticky agent (dev only; no-op elsewhere)
alt_review / alt_explorer / alt_terminal Semantic tabs in a dev workspace; otherwise focus the 1st / 2nd / 3rd tab

Navigation never creates a layout. Only create / apply do.

On Herdr startup (and after live handoff), the [[startup]] hook reconciles saved state: invalid records are quarantined, closed workspaces are dropped, and stale pane ids are cleared so later navigation can recreate lazily.

Keybindings

Add to ~/.config/herdr/config.toml:

[[keys.command]]
key = "prefix+d"
type = "plugin_action"
command = "agentic-dev.dev-layout.apply"

[[keys.command]]
key = "prefix+1"
type = "plugin_action"
command = "agentic-dev.dev-layout.focus_agent"

[[keys.command]]
key = "prefix+2"
type = "plugin_action"
command = "agentic-dev.dev-layout.select_review"

[[keys.command]]
key = "prefix+3"
type = "plugin_action"
command = "agentic-dev.dev-layout.select_explorer"

[[keys.command]]
key = "prefix+4"
type = "plugin_action"
command = "agentic-dev.dev-layout.select_terminal"

[[keys.command]]
key = "alt+1"
type = "plugin_action"
command = "agentic-dev.dev-layout.alt_review"

[[keys.command]]
key = "alt+2"
type = "plugin_action"
command = "agentic-dev.dev-layout.alt_explorer"

[[keys.command]]
key = "alt+3"
type = "plugin_action"
command = "agentic-dev.dev-layout.alt_terminal"

Reload after editing:

herdr server reload-config

Config

herdr plugin config-dir agentic-dev.dev-layout
cp config.toml.example "$(herdr plugin config-dir agentic-dev.dev-layout)/config.toml"
[agent]
command = "agent"

[layout]
editor = "nvim"

Without config, the agent pane defaults to agent and the explorer tab uses $EDITOR or nvim.

Migration

If you previously linked or installed this plugin from simoncrypta/agentic-dev-setup/plugins/dev-layout:

  1. Upgrade Herdr to >= 0.7.5.
  2. Unlink/uninstall the legacy local source.
  3. Install simoncrypta/herdr-dev-layout --ref v0.2.0.
  4. Keep your existing plugin state/config directories; startup reconciliation clears only stale pane ids.

The stable plugin id remains agentic-dev.dev-layout.

Development

bash -n dev-layout.sh tests/*.sh
python3 -c 'import tomllib; tomllib.load(open("herdr-plugin.toml","rb"))'
bash tests/state_test.sh
bash tests/actions_test.sh
bash tests/startup_test.sh
shellcheck dev-layout.sh tests/*.sh

Releases

Contributors

Languages