Capture list
The Captures view uses the same renderer-friendly FlowSummary shape for the
live stream and imported .ppsession files, so filters, saved views, sorting,
and detail inspection behave consistently across both sources.
Columns
| Column | Notes |
|---|---|
| Δ | Select up to two live flows for a status/timing/header/body-shape comparison. |
| kind / R | Protocol badge and engine-truth indicator for an applied rule. |
| Method / Host / URL | Full request URL, including query string; default ports are hidden in the Host display only. |
| Status | Includes paused and transport-error states. |
| Size / Time / Start / End | Response bytes, total duration, and local wall-clock timing. |
The table is virtualized, sortable, keyboard-navigable, resizable, and keeps column widths in local storage.
Structured filtering
Space-separated terms compose with AND. Free text remains backward-compatible and searches host, path, and method.
status>=400kind:ws duration>1shost:api.example.com -host:analytics.example.com method:POSTrule:map-local header:content-type=json body:"error message"agent:<mcp-session-id>Supported fields are status, host, method, kind, duration, rule,
header, body, agent, contract, and coverage. The agent value is the
internal MCP session ID inserted by View traffic; it attributes rather than
hides traffic. Duration accepts ns, us, ms, or s; ws, h1, h2, and
gql aliases are accepted. Invalid fields, values, operators, and unclosed
quotes produce an inline error and do not silently hide rows.
Body filtering searches captured inline bytes. A truncated row may contain a match outside that prefix; open its detail to fetch the full stored body.
Use Save view to name the current query plus Rule-hits toggle. Saved views are local to the desktop profile. Pause view freezes the visible live snapshot while the proxy continues recording in the background; resume to catch up safely.
Mock and regression workflows
- Right-click a completed textual response and choose Create Map Local to
freeze it into the
Captured mocksrule group. Binary, empty, and unavailable bodies are skipped with a reason. - Check Δ on exactly two live rows and click Compare for status, duration, response-header-name, and JSON body-shape drift.
- Import a
.ppsession, select it in Baseline…, and click Run baseline to compare current live traffic. The report separates status regressions, p95 latency regressions, and response-shape drift, and lists new/removed endpoints.
These actions reuse the same capture_to_mock, diff_flows, and
diff_capture_vs_baseline cores exposed over MCP; the GUI does not maintain a
second comparison implementation.
Network waterfall and budgets
Click Waterfall to visualize measured DNS, TCP connect, TLS, request upload,
TTFB, and download spans. Requests carrying the harness/browser
x-proxypro-step marker are grouped under that action; other traffic stays in
Navigation / untagged. A reused connection intentionally has no DNS/TCP/TLS
bar—the app does not charge a previous connection’s setup to the current flow.
Optional TTFB and total-duration budgets persist locally and mark violating
rows. When a .ppsession baseline contains phase timing, the regression report
compares endpoint p95 per phase and identifies whether DNS, connect, TLS,
upload, TTFB, or download caused the slowdown. Older sessions remain readable
but cannot provide phase attribution.
The waterfall links to the newest Lighthouse HTML report created by
run_lighthouse. Lighthouse scores/paint metrics and ProxyPro network spans are
kept separate; the link is for cross-checking the lab audit with its captured
request window.
Bodies and live updates
Small bodies arrive inline. Larger bodies are fetched on demand from the engine’s memory/SQLite body store. gzip, brotli, and zstd HTTP bodies are decompressed before display. Capture events are batched at roughly 30fps.
Clear removes both renderer state and the engine capture snapshot; it does not reappear when the stream reconnects.