{"slug": "herdr-nvim-neovim-integrated-into-your-herdr-workspace", "title": "Herdr-nvim: Neovim integrated into your herdr workspace", "summary": "ChmaraX released herdr-nvim, a plugin integrating Neovim into herdr workspaces as a persistent sidebar with a fuzzy file picker and code annotation features, requiring nvim 0.10 and herdr 0.7.4. The plugin allows toggling a full-height nvim sidebar, opening files from agent output, and sending comments to agents with file:line context.", "body_md": "Neovim, built into your [herdr](https://herdr.dev) workspace: a persistent\nnvim sidebar one key away, with quick access to the files your agent works on.\n\n## herdr-nvim.mp4\n\n**Full-height nvim sidebar, one key to toggle.** Your panes move into the left half, and nvim takes the right. Toggle it off, and herdr restores the original layout. Each tab keeps its own persistent nvim, so buffers, cursor, and pending annotations survive the toggle.**Fuzzy file picker.** It opens on the files your agent touched recently (newest first, with diff stats). Type to fuzzy-search the whole repo.`⏎`\n\nopens the file in the sidebar at the right line.**Code annotations you send to the agent.** Comment lines or a selection like a code review. Then send them all to any agent in the workspace (pi, claude, codex), with file:line and git context.\n\nnvim ≥ 0.10 · herdr ≥ 0.7.4 · runs inside a herdr session\n\nBoth halves come from this repo:\n\n**1. The herdr plugin** (sidebar + picker):\n\n```\nherdr plugin install ChmaraX/herdr-nvim\n# or, for a local checkout: herdr plugin link /path/to/herdr-nvim\n```\n\nBind keys to the two actions in `~/.config/herdr/config.toml`\n\n(herdr binds\nnone by default):\n\n```\n[[keys.command]]\nkey = \"prefix+e\"\ntype = \"plugin_action\"\ncommand = \"chmarax.herdr-nvim.toggle\"\ndescription = \"nvim sidebar\"\n\n[[keys.command]]\nkey = \"prefix+o\"\ntype = \"plugin_action\"\ncommand = \"chmarax.herdr-nvim.pick-file\"\ndescription = \"open file from agent output\"\n```\n\n**2. The nvim plugin** (annotations), with lazy.nvim:\n\n```\n{ \"ChmaraX/herdr-nvim\", opts = {} }\n```\n\n`prefix+e`\n\ntoggles it. Each tab gets its own nvim, backed by a headless\ndaemon that survives the toggle. Two tabs can show two different files in two\nsidebars. When you close and reopen a sidebar, it loses nothing. herdr\nremoves the daemons of closed tabs automatically.\n\n`prefix+o`\n\npops a fuzzy file picker. It has two modes:\n\n**Default view (no query):** the files touched this session, newest first. It mines edits from the agent's session log and adds uncommitted git changes. For agents that herdr does not track, it scrapes recent pane output instead. The cursor starts on the newest file, so`⏎`\n\nopens it with no typing.**Typing:** fuzzy matches across the**whole repo**, ranked best first. This includes every file that`git ls-files`\n\nreports, and it honors`.gitignore`\n\n. The match is on the path and filename, not the file contents.\n\nEach row shows:\n\n- the path, relative to the agent's cwd\n- a\n`new`\n\nbadge for files created this session - green/red\n`+N -M`\n\ndiff stats for uncommitted edits - a relative touched-age (\n`2m`\n\n,`3h`\n\n)\n\nIf you start the picker from a non-agent pane (for example, the sidebar itself), it reads the agent in the same tab. So it searches the repo that you see.\n\nThe default view shows the latest `max_files`\n\nentries (20). A typed query is\nuncapped.\n\n| Mapping | Action |\n|---|---|\n`<leader>ac` |\ncomment the current line / visual selection |\n`<leader>al` |\nlist comments (float): hover to jump, `⏎` edit, `d` delete |\n`<leader>as` |\npaste all comments into a chosen agent's input |\n`<leader>aS` |\nsend all comments to a chosen agent (auto-submits) |\n\nComments are ephemeral by design: in-memory only, extmark-tracked (they follow your edits), cleared after a successful send. The sent prompt includes each comment's file:line plus the repo and branch, so the agent has context.\n\nFor a pending-comment indicator (`● 3`\n\n) in your statusline:\n`require(\"herdr-nvim\").statusline()`\n\n— it returns `\"\"`\n\nwhen nothing is\npending.\n\nTwo small config surfaces, one per half:\n\n**nvim side** — `setup{}`\n\nopts:\n\n``` js\nrequire(\"herdr-nvim\").setup({\n  prefix = \"<leader>a\",     -- keymap prefix\n  keymaps = true,           -- set false to define your own\n  clear_after_send = true,  -- comments are ephemeral by design\n})\n```\n\n**herdr side** — `~/.config/herdr-nvim/config.toml`\n\n(optional; missing or\nmalformed files fall back to these defaults):\n\n```\n[sidebar]\nnvim_bin = \"nvim\"   # binary used to spawn the per-tab nvim daemon\nposition = \"right\"   # right (default), left, top, or bottom\n\n[picker]\nscan_lines = 300    # pane lines scanned by the fallback text-scrape\nmax_files = 20      # session entries shown before you type a query\n                    # (a typed query fuzzy-searches the whole repo, uncapped)\nherdr-nvim doctor                     # live checks: splits, toggle, daemon, remote-ui\nherdr-nvim doctor --with-agent claude # also verify agent registration\n```\n\nDoctor runs labeled checks in a scratch workspace and always removes them\nafterward. The most common failure is `daemon-healthy`\n\nFAIL: the nvim daemon\ndid not start. Make sure that `sidebar.nvim_bin`\n\npoints at a working nvim ≥\n0.10.\n\n```\njust ci    # cargo fmt + cargo test + headless Lua suite\n```\n\n", "url": "https://wpnews.pro/news/herdr-nvim-neovim-integrated-into-your-herdr-workspace", "canonical_source": "https://github.com/ChmaraX/herdr-nvim", "published_at": "2026-08-14 07:35:22+00:00", "updated_at": "2026-08-14 08:10:56.261449+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools"], "entities": ["ChmaraX", "herdr", "Neovim", "lazy.nvim"], "alternates": {"html": "https://wpnews.pro/news/herdr-nvim-neovim-integrated-into-your-herdr-workspace", "markdown": "https://wpnews.pro/news/herdr-nvim-neovim-integrated-into-your-herdr-workspace.md", "text": "https://wpnews.pro/news/herdr-nvim-neovim-integrated-into-your-herdr-workspace.txt", "jsonld": "https://wpnews.pro/news/herdr-nvim-neovim-integrated-into-your-herdr-workspace.jsonld"}}