Neovim's LLM plugin for the paranoid and the precise
A Lua plugin that wires LLMs into Neovim without agents, autocompletion, or background snooping—just explicit commands and markdown chat buffers.

What it does
parrot.nvim lets you rewrite, append, or prepend text via LLM commands (:PrtRewrite, :PrtAppend, :PrtPrepend) on visual selections, and hold persistent chat sessions in plain Markdown buffers. It supports OpenAI, Anthropic, Gemini, xAI, Ollama, and a long tail of OpenAI-compatible endpoints through a unified provider system.
The interesting bit
The plugin’s entire identity is a reaction against agentic tools like Claude Code or Codex. No autocompletion, no hidden file analysis, no “helpful” background requests—every API call is explicit and user-triggered. The author even named it after the “stochastic parrot” critique of LLMs, which is either self-awareness or preemptive irony.
Key highlights
- Two independent model selections: one for chat, one for inline commands, so you can use a cheap model for quick edits and a capable one for deep discussion
- Chats persist as
.mdfiles; context can be scoped per-repository via.parrot.md - API keys load lazily from env vars, bash commands, or password manager CLIs
- Hooks system for custom prompts and predefined workflows
- Retry and edit commands (
:PrtRetry,:PrtEdit) for iterating on LLM outputs without retyping prompts
Caveats
- Requires Neovim 0.10+ and leans on plenary.nvim plus optional fzf/telescope/ripgrep
- Chat model switching only works from inside a chat buffer; command model switching works elsewhere—this split is documented but easy to trip over
- Based on an early fork of gp.nvim, so some architectural debt may linger
Verdict
Worth a look if you want LLM assistance in Neovim but find agentic tools too eager or opaque. Skip it if you want Copilot-style ghost text or hands-off automation; this plugin makes you drive stick.