Files

Demo 1 — cost A/B

What it measures: does pxpipe cost less on a real coding task? Honest verdict: ~break-even on cost. The compression is real (~55% fewer real tokens, verified) but it lands in cache_read — cheap at $ (0.1×), and its weight against a Pro/Max weekly cap is unpublished. The capability story is in ../effective-context/.

Two columns fix the same failing test suite in isolated working copies — one plain, one through pxpipe — both behind a proxy so both arms are logged. It's a real project (template/): the fix hinges on precise SPEC.md rules (volume tiers by total quantity, loyalty applied after the discount, banker's rounding), so it doubles as a recall test. node --test is built in (no install).


Run it — 3 scripts, 3 terminals

# Terminal 1 — set up: kills old proxies, builds, starts BOTH proxies, seeds copies
bash demo/cost-ab/setup.sh        # Fable only (Opus off); 'setup.sh opus' to enable Opus

# Terminal 2 — LEFT  = normal   (interactive Claude — you watch the CLI)
bash demo/cost-ab/a.sh            # defaults to Fable; `a.sh opus` to use Opus

# Terminal 3 — RIGHT = pxpipe   (interactive Claude)
bash demo/cost-ab/b.sh            # use the SAME model as a.sh for a fair A/B

a.sh / b.sh launch a real interactive Claude session with the task prompt already submitted — you see the CLI work, nothing headless. They run two real sessions (uses plan usage). claude is usually a shell alias; the scripts resolve the real binary, or set CLAUDE_BIN=/path/to/claude. To redo a run, re-run setup.sh (it resets the working copies + fresh logs), then a.sh / b.sh.

Model: everything defaults to Fable 5 — Opus is off by default, matching production. To run the A/B on another model, pass it to all three scripts: setup.sh opus (adds Opus to the :47824 proxy's compress scope), then a.sh opus / b.sh opus (also sonnet, haiku, or a full claude-… id) — same model on both columns for a fair A/B. setup.sh is what enables compression for that model; you can also toggle it live on the dashboard "compress models" chips.

See the result — just open the dashboard

Each proxy serves a live dashboard in your browser — no commands, no extra window:

open in browser shows
http://127.0.0.1:47824/ (pxpipe → b.sh) THIS SESSION — N% fewer tokens (… total)
http://127.0.0.1:47823/ (plain → a.sh) ~0% — the passthrough control

It updates as the run goes. The headline is the honest, rate-free number: real server tokens (input+cache_create+cache_read+output) vs the same body as text (count_tokens) — two real numbers, one division, no rate/cap assumptions. The plain dashboard reading ~0% proves the method doesn't invent savings.

Optional CLI (same numbers, if you prefer a terminal):

node eval/ab/savings.mjs                                                # token compression, both arms
node eval/ab/analyze.mjs ~/.pxpipe/ab-on.jsonl ~/.pxpipe/ab-off.jsonl   # $ / cap?? (divergence-confounded)

The $/cap?? deltas from analyze.mjs compare two different runs, so they're muddied by divergence — trust the per-arm token % (dashboard or savings.mjs). What the token cut saves depends on pricing (cache_read ×0.1 at $; weekly-cap weight unknown).

The other demo

This is the cost demo. The capability demo ("does pxpipe stay sharp where plain drowns?") is in ../effective-context/ — the more promising story, since cost is ~break-even.