The ripgrep of AI context: a zero-dependency C++23 CLI + MCP server giving coding agents a ranked, deterministic map of any repo, blast radius, tests-to-run and quality deltas. Signatures at 80% fewer bytes than bodies; ~5% of a grep-and-read pass's tokens.
[](https://github.com/redhat-et/ripwire/actions/workflows/ci.yml)
[](https://github.com/redhat-et/ripwire/releases/latest)
[](LICENSE)
[](CONTRIBUTING.md)
[](THIRD_PARTY.md)
[](present/ripwire-showcase.pdf)
# Rip'n Fast. Less Tokens. Better Code.
## Give your coding agent a map before it reads the repo.
ripwire is the ripgrep of AI context. Point it at any repository and your agent gets a ranked,
deterministic call graph — what to touch, what it breaks, which tests to run — instead of grepping
around and reading whole files.
Fifty years of software-engineering results, and research from last month. 42 repositories and 67 papers folded — McCabe (1976) through to seven papers published in the last two months — each row in docs/LINEAGE.md naming the lesson taken and the file it lives in, all of it put into a single blazing-fast compiled executable
Beside those sits a labelled survey of 237 tools that contributed nothing and says so. The two
sets are disjoint by construction, so they add rather than nest — a tool that gave a lesson is never
counted twice.
Both halves are load-bearing, and they are doing different jobs. The settled results are what
make the quality lens trustworthy: McCabe on complexity (1976), Halstead on volume (1977), Spärck
Jones on term specificity (1972), Nagappan & Ball on churn. Fifty years of replication means those
are not opinions, and a tool that measures your code should be built on the ones that survived.
The recent work is what makes it current: **seventeen of the folded papers are from 2026, seven
published in the last two months and three in the last thirty days** (dates as of 2026-09-08; every
row carries its arXiv id, so the claim is checkable rather than atmospheric). Retrieval for coding
agents, context-compression cost, placebo-controlled localization — that literature is months old,
not decades, and several rows were folded within weeks of the paper appearing.
Neither half alone would be enough. A tool built only on the classics would not know what an agent
needs; one built only on last month's preprints would have nothing underneath it. And the newest row
is a result that failed when it was tested here — which is the point of writing them down. All three counts are re-derived from that document's own tables by
test/readmedriftcheck.sh on every run, which fails if this page and those tables disagree, so the
claim cannot quietly drift. The row-by-row ledger is
[docs/LINEAGE.md](docs/LINEAGE.md).
Languages: Rust · C++ · Objective-C/C++ · C · Metal · CUDA · Python · Go · Swift · TypeScript ·
JavaScript · Java · Ruby · PHP · Lua · Elixir · Bash · C# · JSON · TOML · YAML · Markdown — see
[language support and limits](#languages).
### No API key. No embeddings. No index server. No daemon.
One process, no server — indexes this repository in 0.25 s using 6.6 MB, against 46.8 s and 391 MB for the graph-database MCP server it was measured against; warm queries answer in 197 ms to its 1,082 ms
Measured on 48 matched questions across django, webpack and this repository. Across all three,
ripwire indexes in 0.25–0.45 s and 6.6–16.5 MB against that server's 23–52 s and
391–623 MB. The full method, the wins named one by one and the losses included, is in
[Against the leading graph-database code-context MCP server](#against-the-leading-graph-database-code-context-mcp-server)
and [docs/EVALS.md](docs/EVALS.md).
One binary, offline — and the same line activates the skills for every agent it finds: Claude Code · Codex · Cursor · Windsurf · Gemini · opencode · aider
One self-contained binary on your own machine, offline, installed in one line — and the same line
installs and activates the task-shaped skills that teach your agent when to reach for it, not
just how, for every agent it finds on the machine. If your
agent can run shell commands — Claude Code, Codex, Cursor, Windsurf, Gemini, opencode, aider — it is
set up the moment the install finishes; [the MCP server is the optional second
interface](#set-it-up-in-your-coding-agent). Install it and ask it something before you finish
reading this page:
RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)" export PATH="$HOME/.local/bin:$PATH" # where it installed; the installer prints this line if you need it cd your-repo ripwire . --for="<the change you are about to make, in words>"
Reach for the CLI first — it is the cheaper interface. The MCP server is the optional second
way in, and its convenience has a cost the shell pipe does not carry: its verb schemas sit in your
agent's context every session, whether or not it calls them.
### Same answer, a fraction of the tokens — read this table first if your agent is on a budget
How these ten rows were measured — 2026-08-08, figures in ~tokens (≈ bytes/4), every ratio from a real run reproduced by the command in its row