Honey PX
An image's token cost is fixed by its pixel area, not its character count.
Dense text packs ~3 chars per image-token vs ~1 as text, so a 90k-char file
read as PNG pages costs a fraction of the text read. pxpipe export
(teamchong/pxpipe) does the rendering; the agent Reads the pages.
Lossy by design — misreads of exact strings are silent confabulations,
not errors. The export writes a factsheet.txt carrying the verbatim
precision tokens (paths, SHAs, ids, numbers) as text alongside the images;
always read it too.
When to use
- Bulk is read-only reference: skimming a big vendored file, a large diff
for review context, docs, generated code — content you reason over, not
byte-copy.
- Dense (code, JSON, logs) and big — worth it above ~6k chars; the
export prints
% saved, skip if it's low. Sparse prose loses money.
- The reader is Fable-class. Opus misreads ~7% of renders; other models
degrade — read as text there.
Don't use
- Files you will Edit —
old_string must be byte-exact; imaged reads
aren't. Read the real file (with offset/limit) before any edit.
- Secrets, hashes, ids, numeric values you'll act on — treat anything
exact recalled from an image as unverified; re-
Grep the source first.
- Anything the user asked to see verbatim, or that gets written back.
- Small or sparse content — the fixed pixel cost loses.
How
npx pxpipe-proxy export --json --out <scratchpad> <file-or-dir> # or --git / --diff <ref> / --stdin
Output dir pxpipe-export-<hash>/ contains page-*.png, factsheet.txt,
manifest.json (token report). Then:
Read every page-*.png and factsheet.txt. If instead you pass the
renders to a model over the raw API (subagent prompt, panel), include the
export's prompt.txt banner — naked dense renders can trip
stop_reason: refusal on Fable-class models; the banner prevents it.
- Treat the manifest's
percentSaved as the go/no-go — if it printed low,
read the text instead.
- Before acting on any exact string seen only in an image, verify it against
the source with
Grep.
Cheaper still is not reading at all — Grep/offset/limit (Lever 3b) and
eson crush (CCR) come first. PX is for when you genuinely need the whole
bulk in view.
1---2name: honey-px-33description: Read huge read-only text as PNG pages; big input cut.4license: MIT5---67# Honey PX89An image's token cost is fixed by its pixel area, not its character count.10Dense text packs ~3 chars per image-token vs ~1 as text, so a 90k-char file11read as PNG pages costs a fraction of the text read. `pxpipe export`12(teamchong/pxpipe) does the rendering; the agent `Read`s the pages.1314**Lossy by design** — misreads of exact strings are *silent confabulations*,15not errors. The export writes a `factsheet.txt` carrying the verbatim16precision tokens (paths, SHAs, ids, numbers) as text alongside the images;17always read it too.1819## When to use2021- Bulk is **read-only reference**: skimming a big vendored file, a large diff22 for review context, docs, generated code — content you reason over, not23 byte-copy.24- **Dense** (code, JSON, logs) and **big** — worth it above ~6k chars; the25 export prints `% saved`, skip if it's low. Sparse prose loses money.26- The reader is **Fable-class**. Opus misreads ~7% of renders; other models27 degrade — read as text there.2829## Don't use3031- Files you will **Edit** — `old_string` must be byte-exact; imaged reads32 aren't. Read the real file (with `offset`/`limit`) before any edit.33- **Secrets, hashes, ids, numeric values you'll act on** — treat anything34 exact recalled from an image as unverified; re-`Grep` the source first.35- Anything the user asked to see verbatim, or that gets written back.36- Small or sparse content — the fixed pixel cost loses.3738## How3940```sh41npx pxpipe-proxy export --json --out <scratchpad> <file-or-dir> # or --git / --diff <ref> / --stdin42```4344Output dir `pxpipe-export-<hash>/` contains `page-*.png`, `factsheet.txt`,45`manifest.json` (token report). Then:46471. `Read` every `page-*.png` **and** `factsheet.txt`. If instead you pass the48 renders to a model over the raw API (subagent prompt, panel), include the49 export's `prompt.txt` banner — naked dense renders can trip50 `stop_reason: refusal` on Fable-class models; the banner prevents it.512. Treat the manifest's `percentSaved` as the go/no-go — if it printed low,52 read the text instead.533. Before acting on any exact string seen only in an image, verify it against54 the source with `Grep`.5556Cheaper still is not reading at all — `Grep`/`offset`/`limit` (Lever 3b) and57`eson crush` (CCR) come first. PX is for when you genuinely need the whole58bulk in view.