setup 16reel 432026-09-04updated 2026-09-19
Send your AI pictures of your code instead of the code (pxpipe setup)
pxpipe images dense Claude Code traffic into PNGs, packing about 3.1 characters per image token.
- a local proxy renders your bulky context as PNGs before it leaves your machine
- dense code packs 3.1 characters per image token, against about 1 as text
- 59 to 70% lower bill at Fable list prices, measured by the author
This is the setup for pxpipe, the tool from the reel. Everything below is from the project's own README, read on 4 September 2026.
What it actually does: it runs as a local proxy on your own machine. Before a request leaves for Anthropic, it rewrites the bulky parts of that request, the system prompt, the tool docs and the older history, into compact PNG images. Claude reads them through the same vision channel it already uses for screenshots.
The one idea that makes it work
An image's token cost is set by its pixel dimensions. It is not set by how much text is inside it.
So dense content, code, JSON and tool output, packs about 3.1 characters per image token, against roughly 1 character per text token on real Claude Code traffic. Same content, same reader, a third of the tokens.
Install
npx pxpipe-proxy
Running it with Claude Code
Point Claude Code at the proxy:
npx pxpipe-proxy
ANTHROPIC_BASE_URL=http://127.0.0.1:47821 claude
Or skip the environment variable, which also preserves /remote-control, connectors and first party gates:
pxpipe warp -- claude
Seeing what it actually saved you
This is the part worth doing, because it measures your own traffic instead of asking you to trust a headline.
pxpipe stats # human readable report
pxpipe stats --json # machine readable
Events land in ~/.pxpipe/events.jsonl, and each request is measured against a free count_tokens counterfactual, so the report compares what you were charged against what the same request would have cost as text.
Turning it off, or pinning things as text
PXPIPE_MODELS=off # everything passes through byte identical
You can pin individual blocks as text with options.keepSharp(block), and choose which models get imaged:
PXPIPE_MODELS=claude-fable-5,gemini-3.6-flash,gemini-3.7-flash
What to expect, honestly
The bill figure is a price, and prices move. The README's own framing: at current Fable list prices this lands as a roughly 59 to 70% lower end to end bill, but "prices move and workloads differ, so the durable number is the token cut itself." Measure your own with pxpipe stats rather than taking the range on trust.
All the numbers are the author's own. They are measured with a live count_tokens probe and the method is stated in the open, which is more than most projects do. No third party has reproduced them.
It is lossy, and the author says so first. Exact 12 character hex strings inside dense imaged content came back 13 of 15 on Fable 5 and 0 of 15 on Sol. In the README's words the misses are "silent confabulations, not errors", which is the part to actually worry about: a wrong value that looks right. Byte exact things, IDs, hashes and secrets, must stay as text, and recent turns do stay text. The factsheet preserves up to 96 recognised precision critical tokens, not every identifier. A dedicated verbatim risk guard is not built yet.
The escape hatch for byte exact work is to route it to a subagent on a model that is not on the allowlist, where it passes through as text:
CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-4-6
On real tasks it held up. SWE-bench Lite ran 10 of 10 with imaging on and 10 of 10 off, at 65% smaller requests. SWE-bench Pro ran 14 of 19 on against 15 of 19 off at 60% smaller, verdicts agreed on 18 of 19, and the single split re-resolved 3 of 3 on replication, so that gap is run to run variance rather than a compression penalty. The README calls it small n, and it is right to.
Other limits worth knowing. Encoding adds latency to large requests before they leave. ASCII and Latin-1 are well tested, CJK works but conservatively. The research status on the page reads current as of 22 July 2026.
Follow up, 19 September 2026: what it does to the bill
The second reel asked the obvious question: would pictures really lower your AI bill? Here is the arithmetic, with the sources.
Image tokens are billed by area, not by character. Anthropic's vision doc: an image costs ceil(width / 28) x ceil(height / 28) visual tokens, one per 28 by 28 pixel patch, at the model's normal per token price. Image tokens are not cheaper than text tokens; there are just fewer of them. So the whole trick is how many characters pxpipe fits into one patch. On real Claude Code traffic the README measures about 3.1 characters per image token for dense content (code, JSON, tool output).
The README's own example. About 48k characters of system prompt plus tool docs: around 25k tokens as text, around 2.7k as the rendered page. At the Fable 5 list price of $10 per million input tokens that is $0.25 against about $0.03 for that one block, before caching. That is one request; a working day is a great many of them.
Two things that would flatter the figure, and are not counted. The cache discount is provider behaviour, not a pxpipe saving, so the project's savings doc measures both sides in the same cache state. And sparse prose packs about 3.5 characters a token as plain text, so imaging it loses money; the gate that decides what gets imaged was calibrated on 391 samples.
What lasts is the token cut, not the percentage. Prices move. The 59 to 70% figure above holds at September 2026 list prices; the 25k to 2.7k ratio is the durable part, and (as the section above says) exact IDs, hashes and secrets still belong in text.
Sources: the README and docs/CACHING_AND_SAVINGS.md on main (7,393 stars, last push 11 September 2026) and Anthropic's vision and pricing pages, all read on 16 September 2026. No request was imaged for this page. The stronger number is your own pxpipe stats.
The source
The project: https://github.com/teamchong/pxpipe
7.3k stars, 637 forks, MIT licence. Every claim on this page is from that README, read on 4 September 2026. If it has changed since, trust the repo over this page.
What did your own stats say?
Run it for a day on work you were going to do anyway, then check pxpipe stats. Tell me in The Rabbit Hole what your real number was, because the only figure that matters here is the one measured on your traffic and not on somebody else's.
It is the room where I keep the parts that don't fit on a page like this: the full run of numbers, what broke the first time, and the ones that looked good and then didn't work at all.
Two catches, up front, because that's the rule here. It's private, so you have to be inside to read anything. And it's new, so you'd be early rather than joining something busy.
Free to join: skool.com/the-rabbit-hole-3206/about
if you run it, tell me
the rabbit hole
It's free to join. Ask there and I answer in the open, so the next person with the same question finds it. Premium ($5 a month) adds weekly office hours.
Post in there what you ran it on and what you got, or reply to the DM. I read every one.
