Install GitHub

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.

greplmripgrepctags / 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 graphcallers / callees / impact (blast radius) built from a structural reference index, plus xref for resolved references (definitions, calls, imports).
  • Typed go-to-definitiondef <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 $NAME meta-variable pattern, trigram-prefiltered so it stays fast.
  • Context packspack "<task>" --budget N assembles exactly the code relevant to a task, ranked by lexical relevance and call-graph centrality, packed to a token budget.
  • Git time-travelblame, symbol history, and changed <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.