{"slug": "neon-for-herdr-a-neon-pane-in-your-herdr-workspace", "title": "Neon for Herdr: A Neon pane in your Herdr workspace", "summary": "Neon for Herdr, a plugin for the Herdr terminal workspace manager, adds a Neon dashboard pane for managing projects, branches, and computes. The plugin, built with Ink, Effect, and the Neon TypeScript SDK, offers fuzzy search, branch creation, renaming, deletion, reset, compute control, and connection string retrieval. It requires Herdr 0.7.0+, Node 22+, and macOS or Linux, and uses OAuth with PKCE for authentication.", "body_md": "I just released [Neon for Herdr](https://github.com/neon-solutions/neon-herdr), a [Herdr](https://herdr.dev/) plugin that puts your Neon projects in a pane next to whatever you are already doing, so creating a branch, grabbing its connection string, or suspending a compute is only a keypress away.\n\nThe plugin lives here: [neon-solutions/neon-herdr](https://github.com/neon-solutions/neon-herdr)\n\n## What Neon for Herdr does\n\n[Herdr](https://herdr.dev) is a terminal workspace manager for developers and coding agents. Your editor, shells, and agents live in panes inside one persistent workspace, and plugins can add their own panes and actions. Neon for Herdr is the plugin that turns Neon into one of those panes: a terminal dashboard built with [Ink](https://github.com/vadimdemedes/ink), [Effect](https://effect.website/), and the [Neon TypeScript SDK](https://www.npmjs.com/package/@neon/sdk).\n\nInside Neon for Herdr, the project list shows every project you can reach, with its region, Postgres version, and storage:\n\n`/`\n\nopens a live fuzzy search over project name, organization, ID, and region. It ranks the cached list, so typing doesn't fire a request per keystroke.\n\nHit Enter on a project and you land on this screen below. Every branch shows its state and whether it's default or protected. The selected branch fills in its databases and roles, with the last four operations Neon ran at the bottom. The compute line is the one I read most: active or idle, the autoscaling range, and the suspend timeout for whichever branch you have selected:\n\nTyping `c`\n\ncreates a branch, `n`\n\nrenames it, `d`\n\ndeletes it, and `x`\n\nresets it from its parent.\n\nType `s`\n\nto start or suspend the compute, `R`\n\nto restart it, and `e`\n\nto edit min CU,max CU,suspend seconds in place. Type `y`\n\nto retrieve a connection string. The dashboard masks it on screen and puts the real one on your clipboard.\n\n## How to get going\n\n[Instructions also live on the repo](https://github.com/neon-solutions/neon-herdr)\n\n### Prerequisites\n\n- Herdr 0.7.0 or newer\n- Node 22 or newer\n- macOS or Linux\n\n### Install\n\nThis install command clones the repo, shows you a preview of the source and the commands it's about to run, runs the build steps from the manifest, then registers the plugin:\n\nAdd `--yes`\n\nfor a noninteractive install and `--ref`\n\nto pin a revision. If you would rather read the code first, `herdr plugin link .`\n\ntakes a working tree you have already built.\n\n### Sign in\n\nTo open the dashboard, run:\n\nIt opens on a \"Not connected\" screen and stays there until you do something about it. Press `a`\n\n, finish the flow in the browser, and the project list loads by itself:\n\nBehind that key is authorization code with PKCE against Neon's OAuth host. The only local moving part is a temporary callback listener on 127.0.0.1. Refresh tokens rotate and renew without reopening the browser, so you do this once per machine.\n\nOnce connected, the same `a`\n\nbecomes sign out, which deletes the stored credentials and clears the cached account data.\n\nOne thing to know if you're packaging your own build: the default oauthClientId is neonctl, the public Neon CLI client, so the flow works the moment you install. Ask Neon for a dedicated client identifier before you distribute anything.\n\n### Pick where the pane opens\n\nBy default the dashboard opens as a persistent split below whatever you have focused, so your shell or editor stays visible above it. It's an ordinary Herdr pane after that: resize, move, and zoom it with the usual pane commands. Herdr plugins cannot declare keybindings, so give it one in `~/.config/herdr/config.toml`\n\n. Pressing it again focuses the one you already have.\n\n`dashboardPlacement`\n\nchanges that:\n\n| Value | Result |\n|---|---|\n| split (default) | A pane beside the focused pane, down or right via dashboardSplitDirection. |\n| tab | A dedicated tab in the current workspace. |\n| zoomed | A pane zoomed over the focused pane. |\n| overlay | A temporary overlay that restores your previous focus and zoom when it closes. |\n\n### Configure it\n\nYou can configure it in config.json. The plugin ignores your .env file. Copy config.example.json into the directory `herdr plugin config-dir neon.herdr`\n\nprints and give it mode 600. Every field is optional:\n\n`pooledConnections`\n\ndecides whether `y`\n\ncopies the pooled or the direct connection string. OAuth tokens live in a restricted credentials.json next to this file.\n\nYou don't have to remember which of those you set. `?`\n\nshows the settings actually in force, each tagged with where it came from, plus the exact path to edit:\n\n### Switch organizations\n\nIf your account has several organizations and you haven't pinned one, the dashboard asks which one you want and remembers the answer:\n\n`o`\n\nreopens that picker and it filters by name, handle, ID, or plan as you type. Setting `orgId`\n\nin config.json pins it and skips the prompt.\n\n## A branch for the migration you are about to run\n\nOne of the clearest places to use this is when you're about to run a migration you don't trust yet, and you want it hitting a copy of production first. You need the copy, then its connection string, then the copy gone, without leaving the editor for a browser tab.\n\nYour keybinding opens the pane below your editor, still on the project you were last in. `/`\n\nfinds it, Enter opens it. Press `c`\n\nand name the branch after the migration file, `dk/0003_quiet_daredevil`\n\nhere, so you know a week later what it was for. It arrives without a compute endpoint though: the footer reads no connection until you add one from the console or the Neon CLI.\n\nOnce the compute is up, `y`\n\ncopies the branch's connection string. The masked toast is all that lands in your scrollback:\n\nNow the part I like:\n\nYour first attempt at the migration is wrong, as first attempts are. Press `x`\n\n, confirm with the branch name, and the branch is back to whatever production looks like right now. Your broken state survives under a timestamped branch, in case you want to look at what you did.\n\nWhen you're done, press `d`\n\n, type the name, and it's gone. Pressing `s`\n\nsuspends a compute that is still awake, so nothing keeps running after you have stopped caring about it.\n\nThe whole loop:\n\n## Try it out\n\nIssues and pull requests are welcome on [neon-solutions/neon-herdr](https://github.com/neon-solutions/neon-herdr), especially about which key should do what.\n\nIf you build something with it or want to argue about your favorite keybinding, come find us in the [Neon Discord](https://neon.com/discord)!", "url": "https://wpnews.pro/news/neon-for-herdr-a-neon-pane-in-your-herdr-workspace", "canonical_source": "https://neon.com/blog/neon-for-herdr-a-neon-pane-in-your-herdr-workspace", "published_at": "2026-08-13 12:00:00+00:00", "updated_at": "2026-08-13 14:52:25.892172+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools"], "entities": ["Neon", "Herdr", "Neon TypeScript SDK", "Ink", "Effect"], "alternates": {"html": "https://wpnews.pro/news/neon-for-herdr-a-neon-pane-in-your-herdr-workspace", "markdown": "https://wpnews.pro/news/neon-for-herdr-a-neon-pane-in-your-herdr-workspace.md", "text": "https://wpnews.pro/news/neon-for-herdr-a-neon-pane-in-your-herdr-workspace.txt", "jsonld": "https://wpnews.pro/news/neon-for-herdr-a-neon-pane-in-your-herdr-workspace.jsonld"}}