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:
:RovoDevToggle
Or 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 = true
to prevent auto-resizing when other windows change - File synchronization: Automatically runs
:checktime
on 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.md
andlua/rovo-dev/version.lua
(no leadingv
in 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.lua
matches 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.