A Neovim plugin that integrates Atlassian's Rovo Dev CLI into a toggleable, fixed-width terminal split. The plugin provides seamless access to AI-powered development assistance while maintaining your workflow and keeping your buffers synchronized when Rovo Dev makes file changes.
What it is: A lightweight Neovim integration for the Rovo Dev CLI that provides a persistent terminal interface with intelligent buffer management.
Why it exists: Developers using Rovo Dev need quick access to the CLI without disrupting their editor workflow. This plugin solves the context-switching problem by embedding the CLI directly in Neovim with smart file synchronization.
Toggle the Rovo Dev terminal with a simple command or keymap:
:RovoDevToggleOr use the default keymap <C-,> in normal or terminal mode.
The plugin also supports Rovo Dev CLI flags:
:RovoDevRestore " Start with --restore flag
:RovoDevVerbose " Start with --verbose flag
:RovoDevShadow " Start with --shadow flag
:RovoDevYolo " Start with --yolo flag{
"atlassian-labs/rovo-dev.nvim",
opts = {
terminal = {
cmd = { "acli", "rovodev", "run" },
side = "right",
width = 0.33, -- ratio of total columns when 0<width<1, else fixed cols
},
file_refresh = {
enable = true,
refresh_on_terminal_output = true,
refresh_debounce_ms = 200,
},
keymaps = {
toggle = {
normal = "<C-,>",
terminal = "<C-,>",
},
run = {
restore = '<leader>rR',
verbose = '<leader>rV',
shadow = '<leader>rS',
yolo = '<leader>rY',
}
},
window = { number = false, signcolumn = "no", winfixwidth = true },
},
}use {
"atlassian-labs/rovo-dev.nvim",
config = function()
require("rovo-dev").setup()
end
}- Fixed-width terminal split that doesn't auto-expand when other windows are closed
- Persistent sessions - the terminal buffer and job survive window closes
- Automatic buffer refresh when Rovo Dev modifies files on disk
- Smart notifications via vim.notify for file changes (only for visible buffers)
- Multiple CLI flag support with dedicated commands and keymaps
- Configurable positioning (left or right split)
Complete configuration options:
{
terminal = {
cmd = { "acli", "rovodev", "run" },
side = "right", -- "right" | "left"
width = 0.33, -- 0<width<1 as ratio, else fixed columns
},
file_refresh = {
enable = true,
refresh_on_terminal_output = true,
refresh_debounce_ms = 200,
},
keymaps = {
toggle = {
normal = "<C-,>",
terminal = "<C-,>",
},
run = {
restore = '<leader>rR',
verbose = '<leader>rV',
shadow = '<leader>rS',
yolo = '<leader>rY',
}
},
window = {
number = false,
relativenumber = false,
signcolumn = "no",
cursorline = false,
wrap = false,
winfixwidth = true,
sidescrolloff = 0,
sidescroll = 1,
foldcolumn = "0",
colorcolumn = "",
},
}require("rovo-dev").setup(opts)- Initialize the pluginrequire("rovo-dev").toggle()- Toggle the terminal splitrequire("rovo-dev").version- Current plugin version (SemVer string)
- Session persistence: The terminal buffer and job persist when the window is closed (
bufhidden=hide) - Fixed width: Uses
winfixwidth = trueto prevent auto-resizing when other windows change - File synchronization: Automatically runs
:checktimeon focus/idle events and terminal output - Smart notifications: Only notifies about file changes for buffers visible in non-floating windows
Contributions to rovo-dev.nvim are welcome! Please see CONTRIBUTING.md for details.
We follow Semantic Versioning (SemVer) using Git tags of the form vX.Y.Z.
- MAJOR: Breaking changes to the user-facing API (Lua API, commands, config schema, or documented behavior)
- MINOR: Backward-compatible features
- PATCH: Backward-compatible bug fixes
The current version is available at runtime via:
print(require('rovo-dev').version)We maintain a human-readable changelog in CHANGELOG.md (Keep a Changelog style).
Two supported paths:
- Tag-driven release (recommended)
- Update
CHANGELOG.mdandlua/rovo-dev/version.lua(no leadingvin the file) - Commit your changes
- Create and push a tag:
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.Z- CI will verify that
version.luamatches the tag and create the GitHub release
- Manual release (workflow dispatch)
- In GitHub Actions, run the “Release” workflow manually
- Provide the version as
X.Y.Z(no leadingv) - The workflow will write
lua/rovo-dev/version.lua, commit, push, and create the release
Notes
- Avoid force-updating or reusing tags
- Optionally sign tags:
git tag -s vX.Y.Z -m "vX.Y.Z"
Copyright (c) 2025 Atlassian US., Inc. MIT licensed, see LICENSE file.
