Shareable Herdr + worktrunk dev layout for agentic coding workflows. Works on Omarchy, Ubuntu/Debian, and macOS.
Successor to agentic-tmux-setup — same sticky-agent layout, powered by Herdr instead of tmux.
curl -fsSL https://setup.simoncrypta.dev/install.sh | bashNon-interactive (skip agent prompt):
curl -fsSL https://setup.simoncrypta.dev/install.sh | bash -s -- --yesFrom a local clone:
cd /path/to/agentic-dev-setup
./install.sh- Herdr layout: sticky agent pane (left) + tabs for review (
tuicr), explorer (nvim), terminal - Dev layout plugin:
agentic-dev.dev-layout(linked automatically) - Shell commands:
dev,wtc,wts,wtd,d,t - worktrunk hooks: auto-create/close Herdr workspaces on worktree start/remove
- Config:
~/.config/agentic-dev/config.toml(agent command + editor) - Omarchy/Linux: fcitx5 hint hotkeys cleared (
Ctrl+Alt+H/J); optional Hyprland binding patch - Ubuntu/Debian: apt installs for common deps; tuicr/herdr/worktrunk via GitHub when needed
One Herdr workspace per worktree. The agent pane stays on the left (~50%); tool tabs are on the right. Switching tabs moves the agent pane with you — it is not its own tab.
┌──────────────────────────────────────────────────────────────────┐
│ workspace tabs review explorer terminal PREFIX #h │
├─────────────────────────┬────────────────────────────────────────┤
│ │ │
│ agent │ active tool tab │
│ (codex / claude / │ │
│ agent / opencode) │ review → tuicr │
│ │ explorer → nvim (neo-tree) │
│ sticky left pane │ terminal → shell │
│ │ │
│ prefix+1 │ prefix+2/3/4 or Alt+1/2/3 │
└─────────────────────────┴────────────────────────────────────────┘
Prefix is Ctrl-Space. prefix+D applies this layout in the current workspace.
On install you'll pick the agent pane command:
agentcodexopencodeclaude- custom
Saved to ~/.config/agentic-dev/config.toml. Change later with agentic-dev reconfigure.
| Command | Description |
|---|---|
dev |
Dev layout for current directory |
wtc [branch] |
Create worktree + new Herdr workspace |
wts [branch] |
Switch to existing worktree (fzf picker) |
wtd [branch] |
Remove worktree + close Herdr workspace |
d |
Apply layout in current Herdr workspace |
t |
Launch herdr |
| Key | Action |
|---|---|
prefix+D |
Apply dev layout |
prefix+1 |
Focus agent pane (recreates if crashed) |
prefix+2/3/4 |
review / explorer / terminal |
Alt+1/2/3 |
Same tabs without prefix |
Ctrl+Alt+H/J/K/L |
Focus pane left/down/up/right |
Alt+Up/Down |
Previous/next workspace |
prefix+q |
Reload herdr config |
Tab switching works even when the agent pane is missing — the agent is recreated lazily on the next tab switch or prefix+1.
agentic-dev help # full reference
agentic-dev doctor # check deps + integration
agentic-dev update # re-sync configs
agentic-dev reconfigure # change agent command
agentic-dev dry-run # preview changes
agentic-dev uninstall # remove integrationDependencies install via apt when available:
sudo apt-get install -y git fzf jq neovim lazygit curlTools not in apt are fetched automatically:
- herdr — herdr.dev/install.sh
- worktrunk (
wt) — GitHub release binary to~/.local/bin - tuicr — GitHub release binary to
~/.local/bin
Homebrew (Linuxbrew) is used when present and takes priority over apt.
On Ubuntu with Hyprland, the installer can optionally add SUPER+ALT+RETURN → herdr in ~/.config/hypr/bindings.conf. If you use fcitx5 (common on CJK setups), the Ctrl+Alt+H/J hint hotkey fix applies the same way as on Omarchy.
Omarchy runs fcitx5 for emoji and compose. By default fcitx5 binds Ctrl+Alt+H/J to spell-hint toggles, which conflicts with Herdr pane focus. This installer clears those hotkeys in ~/.config/fcitx5/conf/keyboard.conf.
On Omarchy or any system with ~/.config/hypr/bindings.conf, the installer can patch a key binding to launch herdr on SUPER+ALT+RETURN (replacing tmux if present). You'll be prompted during install.
Omarchy uses uwsm-app and omarchy-cmd-terminal-cwd; other Hyprland setups get a generic xdg-terminal-exec herdr binding.
Installed only if missing (Homebrew, apt, pacman, or upstream installers):
- herdr (brew, or
curl -fsSL https://herdr.dev/install.sh | sh) - git, worktrunk (
wt), fzf, jq, tuicr, neovim, lazygit
~/.config/agentic-dev/config.toml
~/.config/agentic-dev/shell/agentic-dev.{sh,zsh,inc.sh}
~/.config/herdr/config.toml
~/.config/herdr/plugins/dev-layout/
~/.config/worktrunk/herdr-layout.sh
~/.config/worktrunk/config.toml (only if not already present)
~/.config/fcitx5/conf/keyboard.conf (Linux, when fcitx5/Omarchy)
~/.local/bin/agentic-dev
~/.local/share/agentic-dev/lib/ (for CLI)
Shell rc gets a fenced marker block in ~/.bashrc and/or ~/.zshrc.
Use this if you already have Herdr configured and only want the dev layout plugin (agentic-dev.dev-layout) — sticky agent pane + review / explorer / terminal tabs.
Requires: Herdr 0.7+, jq, and the review-tab tools you use (tuicr, nvim, etc.).
Herdr plugins are ordinary code that runs as your user and can call the full Herdr CLI. See Herdr: Trust and security.
Before installing:
- Skim
plugins/dev-layout/herdr-plugin.tomlandplugins/dev-layout/dev-layout.sh. - Prefer interactive install (no
--yes) the first time — Herdr shows a preview of the source and commands. - Pin a release when you want a fixed revision:
herdr plugin install simoncrypta/agentic-dev-setup/plugins/dev-layout --ref v0.1.1Use --yes only for sources you already trust. The full curl | bash installer copies and links the plugin locally — equivalent to trusting this repository.
From GitHub (review the preview, then confirm):
herdr plugin install simoncrypta/agentic-dev-setup/plugins/dev-layoutPinned to a release:
herdr plugin install simoncrypta/agentic-dev-setup/plugins/dev-layout --ref v0.1.1From a local clone (development):
git clone https://github.com/simoncrypta/agentic-dev-setup.git
herdr plugin link ~/path/to/agentic-dev-setup/plugins/dev-layoutVerify:
herdr plugin list
herdr plugin action invoke agentic-dev.dev-layout.createAdd the plugin actions to ~/.config/herdr/config.toml. Minimum bindings:
[[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 = "alt+1"
type = "plugin_action"
command = "agentic-dev.dev-layout.select_review"
[[keys.command]]
key = "alt+2"
type = "plugin_action"
command = "agentic-dev.dev-layout.select_explorer"
[[keys.command]]
key = "alt+3"
type = "plugin_action"
command = "agentic-dev.dev-layout.select_terminal"Or copy the full example from config/herdr/config.toml in this repo (prefix Ctrl-Space, pane focus on Ctrl+Alt+HJKL, etc.).
Reload after editing:
herdr server reload-configThe plugin reads settings from the Herdr plugin config directory first, then falls back to the full-setup path:
$(herdr plugin config-dir agentic-dev.dev-layout)/config.toml— preferred (Herdr convention)~/.config/agentic-dev/config.toml— when using the full installer
herdr plugin config-dir agentic-dev.dev-layout
cp plugins/dev-layout/config.toml.example "$(herdr plugin config-dir agentic-dev.dev-layout)/config.toml"
# edit command / editor, then re-run create or applyMinimal config:
[agent]
command = "agent"
[layout]
editor = "nvim"Without config, the agent pane defaults to agent and the explorer tab uses $EDITOR or nvim.
herdr plugin action invoke agentic-dev.dev-layout.create # create layout in focused workspace
herdr plugin action invoke agentic-dev.dev-layout.apply # ensure layout exists
herdr plugin action invoke agentic-dev.dev-layout.select_reviewThe full installer also adds shell commands (dev, wtc, …), worktrunk hooks, and Linux desktop fixes — use Quick install if you want those.
agentic-tmux uninstall
curl -fsSL https://setup.simoncrypta.dev/install.sh | bashInstall CDN on Cloudflare Pages (agentic-dev-setup.pages.dev) with custom domain setup.simoncrypta.dev.
| URL | Behavior |
|---|---|
https://setup.simoncrypta.dev/ |
301 → GitHub repo (Worker) |
https://setup.simoncrypta.dev/install.sh |
Installer script (Worker → Pages) |
https://agentic-dev-setup.pages.dev/ |
301 → GitHub repo (public/_redirects) |
The custom domain uses a tiny Worker (workers/setup-domain/) with custom_domain = true, which creates the Cloudflare DNS record automatically. It redirects / to GitHub and proxies everything else to the Pages deployment.
Deploy:
npm install
npm run deploy # Pages assets + setup.simoncrypta.dev WorkerDNS troubleshooting: if a hostname was queried before the record existed, flush local cache (resolvectl flush-caches) and retry. ping setup.simoncrypta.dev should resolve to a Cloudflare anycast IP (e.g. 172.64.80.1).
Manual DNS fallback (Pages-only, requires CLOUDFLARE_API_TOKEN with Zone.DNS Edit):
CLOUDFLARE_API_TOKEN=... bash scripts/ensure-setup-dns.shshellcheck install.sh lib/*.sh bin/agentic-dev config/shell/agentic-dev.inc.sh plugins/dev-layout/dev-layout.sh
./install.sh --help
agentic-dev dry-run
npm run deploy # publish to Cloudflare PagesMIT — see LICENSE.