Published In English
Why the AI in my editor is a terminal column, not a plugin
A Neovim distro where any CLI agent runs in up to nine live columns, no API key touches the config, and nothing is ever submitted on your behalf. The reasoning.
Every IDE I tried kept putting my hands back on the mouse, and every AI editor kept putting a chat panel where my code should be. Meanwhile the AI tooling I actually enjoyed using had moved into the terminal as CLI agents. So I stopped fighting it and put everything in the terminal. That is NvSinner, my Neovim distro, and its central decision is the one in the title.
There is no AI plugin
Press <leader>j and a column opens on the side of the editor. The first time, a picker asks which CLI to run: claude, kiro-cli, opencode, or a plain shell with no AI at all. Only the ones actually on your PATH are offered. Sessions two through nine are independent columns with their own agent each, so a refactor in one and a spike in another do not share a conversation.
The consequence I care about most is boring and structural: the CLI handles its own authentication. No API key ever touches the config. When a vendor changes an auth flow, or a model, or a pricing tier, that is their CLI's problem and not a plugin I have to maintain.
The editor becomes a cockpit
Once agents run in columns, the interesting work is knowing what they are doing. Every terminal's top bar carries a session label and an activity spinner driven by the actual output, so a glance tells you whether an agent is still working or idle. When a program signals a prompt, the bar flips to needs input. :NvSinnerAgents opens a two pane modal listing every column, what it runs, and a live preview of its chat, so a session you hid an hour ago can still tell you what it was working on.
When an agent edits a file on disk, the buffer reloads under you and a toast names the file. The lines it touched get a soft wash in your accent colour, right in the file pane, so you can see what changed while you are still reading the summary in the column. The marks clear the moment you take over the file.
Nothing is submitted on your behalf
You can send context without the clipboard. Select code and <leader>as drops it into the column's input; <leader>ab sends a path mention of the current file; <leader>ad sends the current line's diagnostics; <leader>jx mentions every file visible in a window, and deliberately not the ones merely open in a buffer you closed the window on. Select code and <leader>x opens a small modal: Fix, Refactor, Explain, or your own question.
In every one of those cases the payload lands in the CLI's input line unsubmitted. You read it and press Enter yourself. That is the same rule I built into Midas, where an assistant proposes a movement and nothing is written until you approve it, and I did not notice the two were the same idea until I had built both. The agent can compose. The human commits.
What it costs to keep it native
The activity spinner, the disk auto-reload, the settings persistence, the health checks and the updater are all plain Lua core modules with no plugin behind them. That is more code to own, and the payoff is that teaching the cockpit a new CLI, or correcting one that reworded its prompt, is a one line edit in a table at the top of one file.
The trade I would flag to anyone copying this: auto-reload is disk wins by design. When the agent edits a file, unsaved in-editor edits to that buffer are discarded. It is built for the workflow where you edit through the AI column and the editor is the cockpit. If you type in both places at once, you will lose something, and that is a real constraint rather than a bug I have not got to.
It is MIT licensed and installs beside whatever Neovim setup you already have, which is the subject of the next note.