tai.nvim + tai

a minimal Neovim plugin and a CLI tool built
to bring AI-powered text and code insights directly
to your editor.

the plugin sends selections, prompts, or full files
for processing using the groq API.


features

- send motions or visual selections from Neovim
- prompt for input and combine it with text or files
- responses show up in a split buffer in Neovim
- apply patches or run commands
- agents create plans for big code changes


keybindings

normal mode:

gT + motion	- send motion selection
gP + motion	- send motion selection with input
<leader>ti 	- prompt input and send
<leader>tf 	- prompt input with file


insert mode:

<C-x><C-t>	- trigger complete function


installation

clone or place lua/tai/ into your Neovim config dir
~/.config/nvim/lua/ and add keymaps to init.lua:

  vim.g.mapleader = " "

  local tai = require("tai")

  vim.keymap.set("n", "gT", function()
    vim.cmd("set operatorfunc=v:lua.tai_operator_send")
    vim.api.nvim_feedkeys("g@", "n", false)
  end)

  vim.keymap.set("n", "gP", function()
    vim.cmd("set operatorfunc=v:lua.tai_operator_send_with_prompt")
    vim.api.nvim_feedkeys("g@", "n", false)
  end)

  vim.keymap.set("v", "<leader>t", function()
    tai.operator_send("char")
  end, { noremap = true, silent = true })

  vim.keymap.set("i", "<leader>ti", function()
    vim.schedule(tai.prompt_input)
  end, { noremap = true })

  vim.keymap.set("i", "<leader>tf", function()
    vim.schedule(tai.prompt_full_file)
  end, { noremap = true })


CLI

build the go code:

  go build -o tai .

move tai to a folder in your path.


usage

make sure the GROQ_API_KEY env var is set.
create a .tai file at the root or your project.
editting any file in that project should start tai.
then just use the keybindings above.

note: the first time tai is open it will index all
your project's files, so it may take some time to
fully load.

to use the CLI you just run tai in your shell, this
will start the interactive mode that you can use to
chat.

tai is aware if is being used in a pipeline, so you
can run it to improve your terminal workflow, e.g.

  ls . | tai "rename to snake_case" | ... 


screenshots

- side panel
- input for prompt


license

MIT License

(C) 2025 Brian Mayer