The conclusion from that table is simple: a PNG cannot be treated as reliable byte storage. Hashes, secrets, identifiers, paths with critical characters, checksums, API keys - anything where every character matters must not be handed over through an image alone.
The risk is partly mitigated: the factsheet keeps a limited number of recognised precision-critical fragments as text, while recent state and open tool calls stay in their original form. But the README admits plainly that there is no universal guard against verbatim distortion yet. The authors also document a real failure: the model once misremembered a person's name from history that had gone into an image and confidently produced the wrong one.
Why you cannot say "any vision model is supported"
pxpipe uses different render profiles for different models: geometry, font size, the number of columns, history depth and the maximum number of images all depend on the specific model. The code includes, for instance, the bitmap Spleen 5×8 and several JetBrains Mono profiles, and the README stresses that the exact model identifier matters.
The logic runs like this. A strong reader lets images be packed more aggressively and yields a high number of characters per vision token. A weak one needs larger glyphs, so the image cost rises and the savings fall. For an unknown model outside the allowlist pxpipe prefers to pass the request through unchanged, byte for byte. That is the right engineering tradeoff: the quality of reading matters more than the technical ability to send a picture.
Security: the proxy sees your prompts and keys
The security documentation warns about this plainly: pxpipe handles API credentials and may see confidential prompts and tool results. The project's recommendations are these: keep the server on the local address 127.0.0.1; do not expose the proxy publicly without an authenticated encrypted reverse proxy; for the Cloudflare Workers variant with provider credentials use PXPIPE_WORKER_SECRET; do not enable debug capture of errors in production, since it may contain prompts and keys; and remember that event logs, dumped PNGs and export artifacts may themselves contain sensitive data.
The practical rule: treat pxpipe as a component inside your trust boundary. If you are not prepared to let a process see the original prompt and the API traffic, this architectural option is not for you.
When it is sensible, and when to stay on text
pxpipe fits especially well in long coding sessions, where the system block, the tools and the old history keep growing and being resent. Large logs and JSON sit well too - dense tool results pack into PNG efficiently. The more expensive the large uncached input, the more noticeable the effect. And a separate value is measurability: the dashboard and the event log let you check your own workload instead of trusting a headline.
Testing is worth doing properly: bring the proxy up locally, work through several real sessions rather than one synthetic prompt, look at pxpipe stats, check exact-reading errors separately on your typical code and logs, and compare not only input tokens but the actual cost, the latency and the quality of the agent's decisions.