
# Vera
[](https://github.com/VeraTools/Vera/blob/master/LICENSE)
[](https://github.com/VeraTools/Vera/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/@vera-ai/cli)
[](https://pypi.org/project/vera-ai/)
[](https://github.com/VeraTools/Vera/releases)
[](docs/supported-languages.md)
**Local code search for AI coding agents and the developers who use them.**
[Install](docs/installation.md) · [Features](docs/features.md) · [Query guide](docs/query-guide.md) · [Benchmarks](docs/benchmarks.md) · [How it works](docs/how-it-works.md) · [All docs](docs/README.md)
**V**ector **E**nhanced **R**eranking **A**gent
Describe what the code does, and Vera finds it. Ask for "where expired sessions are cleaned up" and you get back the functions and classes that do it, ranked, with file paths and line ranges. Exact names work too.
Vera is a single native binary. The index lives in your project, search runs on your machine, and the default model runs on any CPU with no GPU, API key, or server to manage.

## Quick start
```bash
# 1. Install (pick one: bunx, npx, or uvx)
bunx @vera-ai/cli install # or: npx -y @vera-ai/cli install / uvx vera-ai install
# 2. Download the default local model and index the current project
vera setup --potion-code --index .
# 3. Search
vera search "where expired sessions are cleaned up"
```
Run `vera setup` with no flags in a terminal for a guided setup that can also install the agent skill. The [installation guide](docs/installation.md) covers GPU backends, API mode, prebuilt binaries, and Docker.
## What Vera does well
**It finds code by behavior and by name.** Every query runs keyword search (BM25) and embedding search side by side, merges the two lists, then applies code-aware ranking that prefers definitions over passing mentions and source files over tests and docs. Searching `parse_config` finds that function; searching "load settings from environment variables" finds it too.
**Results are whole functions, not line fragments.** Vera parses files with tree-sitter and indexes functions, classes, methods, structs, and other symbols as separate chunks. 54 of the [65 supported languages](docs/supported-languages.md) get symbol-level chunks; config files, docs, and the rest are split by section, whole file, or line windows. An agent reads the relevant symbol instead of opening the whole file.
**It is fast on an ordinary CPU.** On a desktop CPU (Ryzen 7 9800X3D), Vera indexes its own repository (438 files, about 7,900 chunks) in under a second, and a search from the command line returns in about 0.13 seconds, process startup included. `vera update .` and `vera watch .` re-index only the files that changed.
**Its search quality holds up against the best local tools.** On Semble's 1,251-task code search benchmark, run with the same embedding model, Vera scores within 1% of Semble on nDCG@10 and slightly ahead on Recall@5, with an index about a seventh the size. Details are [below](#benchmarks).
**It does more than search.** The same index answers structural questions: where a symbol is defined, who calls it, which routes or environment variables exist, which types implement an interface, and which functions have no callers. You can scope any search to files changed in your working tree or branch.
**It is built for agents.** `vera agent install` adds a Vera skill to more than 30 agent clients, including Claude Code, Codex, Cursor, OpenCode, Gemini CLI, and Copilot. Results come back as compact Markdown code blocks with paths and line ranges, which agents read well. An MCP server is included for clients that prefer it.
## Using it with an AI agent
The recommended setup is the CLI plus the Vera skill. The skill tells the agent when to reach for `vera search`, `vera references`, or plain `grep`, and how to write queries that work.
```bash
vera agent install # interactive: pick agents and global or project scope
vera agent install --client all # every supported agent, global scope
```
The interactive installer can also add a short Vera section to your project's `AGENTS.md`, `CLAUDE.md`, or editor rules file. If you use the [skills CLI](https://github.com/vercel-labs/skills), `npx skills add VeraTools/Vera` works too.