Voice-triggered AI coding assistance for Neovim.
Speak your intent, and let AI make the changes. No typing required.
- Press
<leader>rto start recording - Speak your command (e.g., "add error handling to this function", "rename this variable to userCount")
- Press
<leader>ragain to stop - Watch as the AI executes your command on the current buffer
- Neovim >= 0.9
- OpenCode CLI - AI backend
- Audetic - Voice-to-text engine
lazy.nvim
return {
"silvabyte/audetic.nvim",
event = "VeryLazy",
opts = {
model = {
provider = "anthropic",
model_id = "claude-haiku-4-5",
},
voice = {
keybind = "<leader>r", -- Push-to-talk
},
},
}Run :checkhealth audetic to verify your setup.
require("audetic").setup({
server = {
url = nil, -- nil = auto-start server
port = nil, -- nil = auto-allocate free port
auto_start = true,
timeout = 15000, -- request timeout (ms)
},
model = {
provider = "anthropic",
model_id = "claude-haiku-4-5",
},
voice = {
enabled = true,
keybind = "<leader>r",
},
ui = {
window_width = 50, -- feedback window width
window_max_height = 10, -- feedback window max height
max_event_log = 50, -- max messages in chat log
success_duration = 2000,
error_duration = 4000,
},
})All options shown are defaults.
| Key | Action |
|---|---|
<leader>r |
Start/stop voice recording |
| Command | Description |
|---|---|
:AudeticToggle |
Toggle voice recording |
:AudeticCancel |
Cancel active voice operation |
:AudeticStatus |
Show current voice state |
Add voice status to your statusline:
-- lualine example
sections = {
lualine_x = {
{ require("audetic").statusline },
},
}Status indicators:
[REC]- Recording[...]- Processing transcription[AI]- AI executing command
Before using voice commands, start the Audetic service:
audeticAudetic runs as a background service on http://127.0.0.1:3737.
Enable debug logging:
vim.g.audetic_debug = trueView logs with :messages.
MIT