literal
Byte-exact strings: IDs, emails, hashes, error codes.
Your agents are really good at grep. Now they can do it across terabytes, in milliseconds.
agent › flag every call where a customer hinted at churning
tool › search(
calls/**/*.vtt1.3 TB
CUSTOMER: honestly it's too expensive for what we useCUSTOMER: we're looking at switching to another vendor+ 184 more
Claude Code has no vector index. It greps, and so does Cursor. Grepvine runs the same search over terabytes.
An embedding fixes “similar” once, at index time. An agent decides per question, then refines on what it finds.
A person can skim the top five. An agent acting on results needs all of them.
Finding one order ID shouldn't take chunking, an embedding model and 4.6× the storage.
Byte-exact strings: IDs, emails, hashes, error codes.
Full patterns over terabytes. p90 under 100 ms.
100% recall. No top-k cutoff, no approximate index.
100% precision. No neighbors, no “close enough”.
$0.50 per GB-month. $0.01 per 1,000 API calls, reads or writes. No minimum.
per month$162.50
per month$1,634
Building petabyte-scale AI infrastructure since 2020.
One agent task can fire off dozens of searches. Grepvine handles tens of thousands a second across billions of documents, and answers in milliseconds.
No. A vector database embeds your data once and returns the top-k chunks nearest your query. Grepvine returns every literal or regex match, and your agent decides what counts as similar: it writes the patterns, reads the matches and searches again. No embeddings, no chunking, no approximate index.
There are no clusters, shards or replicas to run. You pay $0.50 per GB-month and $0.01 per 1,000 API calls. When your agents stop searching, the query bill stops too.
With a tool call, like the grep coding agents already run. One task fans out into dozens of searches, and each returns the complete result set in milliseconds, over terabytes.
When a person reads the answer and a few similar passages are enough, as in a chatbot. When an agent acts on results, like erasing records or retrying failed requests, it needs every exact match.
from grepvine import Grepvine
db = Grepvine().index("orders")
hits = db.search(
literal="CUS-48211",
)
for hit in hits:
agent.refund(hit.id)