The last two rows are telling: code and search results pass through untouched. In a separate quality test the critical error was still found correctly when the input shrank from 10,144 to 1260 tokens, and all four verification questions were answered correctly. Latency measurements are published too: compression of large scenarios itself takes hundreds of milliseconds or seconds, but thanks to less prefill on the model's side the authors got a positive balance in 11 scenarios out of 12.
Now about the figures that reach the headlines, and how far they can be trusted.
60-95% on JSON - supported by the direction of the benchmarks: 83-91% is published for large arrays, and structured logs go above 90%.
15-20% for coding agents - a README claim. This is already an end-to-end figure rather than a measurement of one compressor, and the real percentage depends on the share of machine output against code and user prompts.
"The same answers" - too broad a formulation. The project shows specific accuracy tests, but no lossy compression scheme can guarantee identical quality on every unknown task.
Compression for RAG - the documentation disagrees with itself: the introduction speaks of RAG results as a goal, while the limitations page lists RAG documents as passthrough.
40-70% on code - only with tree compression actually active. The default safety gates often leave code untouched.
Limitations and security
Short conversations barely gain: the limitations page cites a median of about 4.8% for short exchanges. On a single question with no tools Headroom simply has nothing to work with.
Code is protected exactly when it is needed - during debugging, review and fixes. That lowers the savings but protects correctness, and for a coding agent it is a plus rather than a flaw.
Compression can add latency, especially model-driven text compression. The gain is counted across the whole chain, not inside the compressor.
Not everything compresses: short content, malformed JSON, small arrays, system prompts and already-compact blocks pass through as they are.
And separately - parts of the documentation contradict one another. The ranges for text, the behaviour with RAG and code compression are described differently on different pages. The project moves fast, so for production it is worth pinning a specific version and testing on your own workload.
On security the picture is this. Headroom positions itself as local-first: in proxy mode the content is processed on your machine and then goes to the provider you were addressing anyway; the CCR store is local too. But the proxy stands at an extremely sensitive point - prompts, tool results, credentials in headers and potentially private code all pass through it. So treat it as part of your trusted computing base: install from the official repository, do not expose it publicly without need, control the CCR storage, read the release notes before upgrading, and pin the version instead of blindly taking the latest.
There is an argument for that caution in the project's own history: among the fixes in 0.34.0 are security-related dependency bumps for aiohttp and cryptography, and neighbouring releases changed CORS and transport behaviour. And once more about the desync: the security policy in the repository still lists 0.27.x as the supported latest, so go by the releases.
Headroom versus pxpipe: one goal, entirely different mechanics