Features & comparison
On this page
Why greplm?
Every other code-search tool is built for a human scrolling a terminal. greplm is built for the agent loop: small, structured, token-compact results over a hot local index — the kind a program can hammer thousands of times a session without drowning in file text.
| greplm | ripgrep | ctags / LSP | |
|---|---|---|---|
| Content search (literal/regex/word) | ✅ | ✅ | ❌ |
| Symbol definitions (14 languages) | ✅ | ❌ | ✅ |
| Find references | ✅ | ⚠️ text-only | ✅ |
| Call graph: callers / callees | ✅ | ❌ | ⚠️ LSP only |
| Blast radius (transitive impact) | ✅ | ❌ | ❌ |
| Typed go-to-definition | ✅ | ❌ | ✅ LSP |
| Structural / AST search | ✅ | ❌ | ❌ |
| Git time-travel (blame/history/changed) | ✅ | ❌ | ❌ |
| Task context packs (budgeted) | ✅ | ❌ | ❌ |
| Persistent incremental index | ✅ | ❌ (scans each run) | ⚠️ regenerate |
| Warm daemon (sub-ms queries) | ✅ | ❌ | ❌ |
| Token-compact output for agents | ✅ | ❌ | ❌ |
| Optional offline semantic search | ✅ | ❌ | ❌ |
| MCP server + ready-made agent files | ✅ | ❌ | ❌ |
| Fully offline / no network | ✅ | ✅ | ✅ |
Reach for ripgrep when you are scanning a terminal. Reach for greplm when an agent needs a queryable index it can hammer thousands of times without re-scanning the tree.
Features
- Fast content search — literal, regex, whole-word, with language and path filters.
- Symbol lookup — find definitions by exact, prefix, substring, or fuzzy match across Rust, Python, JavaScript, TypeScript/TSX, Go, Java, C, C++, C#, Ruby, PHP, Swift, and Dart (Flutter).
- References — locate every occurrence of an identifier, definitions first.
- Call graph —
callers/callees/impact(blast radius) built from a structural reference index, plusxreffor resolved references (definitions, calls, imports). - Typed go-to-definition —
def <file> <line> <col>resolves the identifier under the cursor using scope, usage context, and imports, flagging the unambiguous target. - Structural (AST) search — match a tree-sitter query or a
$NAMEmeta-variable pattern, trigram-prefiltered so it stays fast. - Context packs —
pack "<task>" --budget Nassembles exactly the code relevant to a task, ranked by lexical relevance and call-graph centrality, packed to a token budget. - Git time-travel —
blame, symbolhistory, andchanged <rev>annotated with symbols. - File outlines & snippets — read a file’s structure or an exact slice with context.
- Incremental indexing — only re-indexes what changed; an optional watcher and warm daemon keep queries sub-millisecond.
- Offline & private — no network calls, nothing leaves your machine.