Markdown version of https://extraheadroom.com/headroom-vs-vexp

# Headroom vs vexp: what's the difference?

vexp and Headroom both cut what Claude Code and ChatGPT Codex spend on context, and both run entirely on your machine. They work at different points in the request, so most people comparing them can run both. This page covers what each does, where they overlap, and how to choose.

## Quick answer

**vexp** decides _which code_ the agent reads. It indexes your repository into a local dependency graph and gives the agent MCP tools that return the few functions that matter in full and the rest as signatures, instead of letting it open file after file. **Headroom** compresses _whatever the agent sends_: tool output, logs, JSON, search results, and file reads, in a local proxy just before each request reaches the model, with the originals retrievable on demand. vexp shrinks code exploration; Headroom shrinks everything else in the request. They stack.

## Side by side

| | Headroom | vexp |
| --- | --- | --- |
| Shape | A menu bar app for macOS, Windows, and Linux, built on an open-source CLI. | An MCP server, shipped as a VS Code extension or a standalone CLI (`npm install -g vexp-cli`). |
| How it cuts tokens | Compresses the request on its way out, by content type, and attaches a retrieval tool so the model can pull back anything it needs. | Replaces file-by-file exploration with ranked "context capsules": the relevant functions in full, their neighbours as signatures only. |
| What it works on | Everything in the request: tool output, logs, JSON, search results, file reads, and long histories. | Source code and Markdown docs in your indexed repositories. |
| Agent coverage | Claude Code and ChatGPT Codex covered deeply; OpenCode and Grok Build as experimental connectors. | Any agent that speaks MCP; vexp lists 17. |
| Setup | Download and open once. It sets up its own routing; no terminal. | Install the extension or CLI; it detects your agents, writes their MCP config, and indexes the repository. |
| Beyond tokens | Savings dashboard, usage-window tracking, [project learnings](/docs/how-learning-works), and one-click [add-ons](/docs/add-ons). | Impact analysis before a change, session memory, and a mechanical "done" check against the graph. |
| Pricing | 7-day free trial, then plans matched to your Claude or ChatGPT tier, from $4 a month. | Free up to 2,000 graph nodes in one repository; Pro $19 a month; Team $29 per seat a month. |

## Where they differ

vexp works before the agent reads anything. Its index is built with tree-sitter (functions, classes, and types as nodes; calls and imports as edges) and stored in a local SQLite file. When the agent asks for context, vexp ranks candidates by graph centrality and returns a bounded capsule. Its own example turns 8,247 tokens of raw files into a 2,140-token capsule for the same question. It also does things Headroom does not attempt: showing every caller a change will break, and checking a finished task for broken imports and untouched dependents.

Headroom works on the request itself. Much of what a coding session sends is not source code: test runs, build logs, `grep` results, JSON from APIs and MCP tools, and the same tool output repeated across turns. Headroom compresses each of those with rules for its type, leaves the provider's cache prefix untouched, and keeps the original retrievable, so nothing the agent needs is thrown away. Because it sits in the network path, it needs no change to how you or the agent work, and it covers every request, including the ones vexp never sees.

## About the savings numbers

vexp's founder, answering a buyer's question on vexp's AppSumo listing, described Headroom as giving "around 20% for coding agents", and argued that source code compresses poorly as text. The second point is right: logs and JSON compress far better than code, which is exactly the gap a code-graph tool fills. On the first, our own measurement is higher. Across 183 Claude Code users from September 29 to October 5, 2026, Headroom removed 34% of input tokens, and the median user's input reduction was 29.9%. The method and distribution are in [Extra Headroom in production](/blog/claude-code-savings-real-usage).

vexp publishes an outcome benchmark instead: an 81.7% resolve rate on SWE-bench Pro with Claude Opus 5, from a single run. The two numbers measure different things, and neither tells you what your own sessions will look like. Both tools run locally and uninstall cleanly, so the useful test is a task you already do, with and without each.

## Can you run both?

Yes. Unlike two proxies compressing the same request, these do not compete for the same tokens. vexp's capsules arrive as MCP tool results, and Headroom compresses the request that carries them. It finds less to remove in a capsule, which is already compact, and keeps compressing the logs, test output, and history around it.

AppSumo buyers have reported both setups. One wrote that Headroom's savings were "on top of the reductions received from Vexp" and that "Vexp and Headroom work great together"; another that the two "appear to work side by side with no issue". A third replaced vexp with Headroom. Their full reviews are on our [reviews page](/reviews).

If you want graph-style code navigation without a second product, Headroom's add-ons include two tools in vexp's category: Serena, for live symbol lookups and references, and Codebase Memory, which indexes call chains and dependencies in a persistent graph. Neither does vexp's completion check.

## Which should you pick?

Choose **vexp** if most of your context goes to the agent exploring a large codebase, reading many files to find the three that matter, or if you want its impact analysis and done checks. Choose **Headroom** if your sessions in Claude Code or ChatGPT Codex are heavy on tool output, logs, tests, and long histories, and you want it handled in the background with a dashboard showing what was saved. If both describe your sessions, run both.

The category moves quickly. If you are reading this some months after it was written, check both projects directly rather than trusting a comparison page, including this one. For the input, output, and terminal-side tools that sit alongside either, see [Headroom vs Ponytail vs RTK](/headroom-vs-ponytail).
