DISCOVER THE FUTURE OF AI AGENTS

99

Added Feb 23, 2026
Agent & Tooling
Open Source
Large Language ModelsAI AgentsAgent FrameworkCLIAgent & ToolingModel & Inference FrameworkDeveloper Tools & CodingProtocol, API & Integration

An AI client for Neovim that supports multiple AI providers (OpenCode/Claude Code/Cursor Agent/Gemini CLI), featuring visual selection AI assistance, intelligent context management (#rule references/@file references), and automatic markdown file injection. Built for developers who still enjoy writing code by hand.

Overview#

99 is an AI client for Neovim developed by ThePrimeagen, positioned as "The AI client that Neovim deserves, built by those that still enjoy to code."

This is an experimental project exploring the combination of AI and traditional coding (tradcoding), with the core philosophy that hand-written code remains important and the best products still rely on it.

Core Features#

Core API#

  • visual implementation: AI-assisted implementation based on visual selection
  • search: AI-powered search functionality
  • debug: Debugging capabilities
  • Extensions.Worker.work: Extension worker mechanism
  • stop_all_requests(): Stop all ongoing AI requests
  • view_logs(): View runtime logs

Multi-Provider Support#

ProviderCLI ToolDefault Model
OpenCodeProvider (default)opencodeopencode/claude-sonnet-4-5
ClaudeCodeProviderclaudeclaude-sonnet-4-5
CursorAgentProvidercursor-agentsonnet-4.5
GeminiCLIProvidergeminiauto

Intelligent Context Management#

  • # Rule References: Type # to autocomplete rule file references
  • @ File References: Type @ to fuzzy search and reference project files
  • md_files Config: Automatically find and add markdown files based on request origin
  • custom_rules: Support for custom skill rule directories (SKILL.md format)

UI/UX Extension Integration#

  • Telescope Integration: Model selector and Provider selector
  • fzf-lua Support: Same selector functionality as telescope
  • Completion Source Support: nvim-cmp / blink.cmp (choose one)

Project Architecture#

99/
├── .github/           # GitHub configuration
├── lua/99/            # Core Lua code
├── queries/           # Tree-sitter query definitions
├── scratch/           # Temporary files and examples
├── scripts/           # Helper scripts
├── syntax/            # Syntax highlighting files
├── AGENTS.md          # AI agent development guide
├── TUTORIAL.md        # Tutorial planning
├── TODO.md            # Roadmap and improvements
└── Makefile           # Build and test configuration

Installation#

Prerequisites#

Must install one of the supported AI CLI tools: opencode (recommended), claude, cursor-agent, gemini

Lazy.nvim Installation#

{
    "ThePrimeagen/99",
    config = function()
        local _99 = require("99")
        local cwd = vim.uv.cwd()
        local basename = vim.fs.basename(cwd)
        _99.setup({
            logger = {
                level = _99.DEBUG,
                path = "/tmp/" .. basename .. ".99.debug",
                print_on_error = true,
            },
            tmp_dir = "./tmp",
            completion = {
                custom_rules = { "scratch/custom_rules/" },
                files = { -- configuration options },
                source = "cmp", -- or "blink"
            },
            md_files = { "AGENT.md" },
        })
    end,
}

Basic Keymaps#

-- Visual mode AI request
vim.keymap.set("v", "<leader>9v", function() _99.visual() end)
-- Stop all requests
vim.keymap.set("n", "<leader>9x", function() _99.stop_all_requests() end)
-- Search functionality
vim.keymap.set("n", "<leader>9s", function() _99.search() end)

Typical Workflow#

  1. Open code in Neovim
  2. Select code segment using visual mode
  3. Trigger AI request (<leader>9v)
  4. Enter request in prompt window, use # for rule references, @ for file references
  5. AI generates response and performs code modifications

Related Projects

View All

STAY UPDATED

Get the latest AI tools and trends delivered straight to your inbox. No spam, just intelligence.