Last updated: 2026-04-19
Current shipped baseline: v2.2.0 (commit e93804f)
These are implemented and in the repo now:
- Optional persistent session capture (
previewandfullbody modes) - Session querying over indexed persisted traffic
- HAR export from full session or filtered subset
- Session recovery flow for truncated/unclean writes
- Session MCP tools:
proxy_session_startproxy_session_stopproxy_session_statusproxy_list_sessionsproxy_get_sessionproxy_query_sessionproxy_search_session_bodiesproxy_get_session_exchangeproxy_export_harproxy_import_harproxy_replay_sessionproxy_delete_sessionproxy_session_recover
- Session resources/templates:
proxy://sessionsproxy://sessions/{session_id}/summaryproxy://sessions/{session_id}/timelineproxy://sessions/{session_id}/findings
- Browser discovery resources:
proxy://browser/primaryproxy://browser/targets
- Scraping and reverse-engineering utility first
- MCP-native interfaces first (tools/resources/templates)
- Query-first UX for AI agents (avoid huge payload dumping)
- Crash resilience and operability over “nice to have” UI polish
- No default privacy-redaction workflow in roadmap scope
Implemented at src/tools/sessions.ts (proxy_replay_session). Ships with:
- Filter-based selection (
hostname_contains,url_contains,status_code,exchange_ids) mode: "dry_run"(plan-only, no outbound) andmode: "execute"target_base_urloverride (redirect replay to staging/local)limit/offset/timeout_mscontrols- Per-request result capture on execute
Deferred (not blocking POC workflows):
proxy_replay_statusstreaming status (currently returns all results synchronously)proxy://replay/{replay_id}/summaryresource (dedicated replay run tracking)- Variable substitution (
{timestamp},{nonce}, captured token refs) — currently replays recorded bodies verbatim
Problem solved:
- Quickly identify what changed between “works” and “fails” captures.
Planned interface additions:
- Tool:
proxy_diff_sessions - Resource template:
proxy://sessions/{session_id}/diff/{other_id}
Functional requirements:
- Compare headers, query params, status codes, body field deltas
- Volatility scoring for candidate signature/auth fields
- Endpoint-level and field-level diff summaries
Edge cases/failure modes:
- Different request ordering and different request counts
- Dynamic IDs/timestamps creating noisy diffs
Acceptance criteria:
- Produces endpoint diff summary and top changed fields
- Can suppress known dynamic fields via ignore patterns
Effort: M
Dependencies: replay + query output schema alignment
Problem solved:
- Make encoded/compressed payloads searchable and understandable.
Planned interface additions:
- Tool:
proxy_decode_exchange - Tool:
proxy_list_decoders
Functional requirements:
- Built-in decoders: gzip, br, deflate, base64-json, msgpack
- Plugin decoder interface for protobuf/custom payloads
- Store decoded preview artifacts per exchange
Edge cases/failure modes:
- Binary blobs mistaken for text
- Decoder false positives
Acceptance criteria:
- Decoded views appear in tool output for supported formats
- Decoder failures are explicit and non-fatal
Effort: M
Dependencies: persisted exchange retrieval (already shipped)
Problem solved:
- Cover real-time targets that do not expose key data via plain HTTP.
Planned interface additions:
- Tool:
proxy_list_ws_streams - Tool:
proxy_get_ws_frames - Resource template:
proxy://sessions/{session_id}/ws
Functional requirements:
- Capture WS open/close events and frame metadata
- Capture SSE streams with event segmentation
- Index by host/path/channel and searchable payload snippets
Acceptance criteria:
- WS/SSE streams visible in session summaries
- Query by stream/channel returns frame/event timelines
Effort: L
Dependencies: capture layer extensions in proxy engine
Problem solved:
- Convert captured traffic into reusable execution templates.
Planned interface additions:
- Tool:
proxy_generate_flow_template - Resource template:
proxy://sessions/{session_id}/templates
Functional requirements:
- Build step graph from observed call dependencies
- Mark dynamic placeholders automatically
- Export templates as JSON for replay tool consumption
Acceptance criteria:
- One-click template generated from selected request slice
- Template replays successfully with variable input map
Effort: M
Dependencies: replay engine, session indexing
Superseded by the cloakbrowser + Playwright rewrite. The browser interceptor
now exposes a Playwright Page directly — no external CDP attach is needed.
If external CDP/Playwright attach becomes a use case again, a future tool
could launch cloakbrowser with --remote-debugging-port in args.
Problem solved:
- Reduce recovery time and data loss risk for long sessions.
Planned interface additions:
- Tool:
proxy_session_checkpoint - Tool:
proxy_session_verify_integrity
Functional requirements:
- Chunked append logs with checksums
- Explicit checkpoint markers
- Faster startup index rebuild path
Acceptance criteria:
- Recovery handles very large sessions predictably
- Integrity verification reports corruption boundaries
Effort: M
Dependencies: current session-store internals
Problem solved:
- Scale replay beyond one process.
Planned interface additions:
- Tool:
proxy_replay_enqueue - Tool:
proxy_replay_worker_status
Functional requirements:
- Queue-backed replay jobs
- Multiple workers consuming common jobs
- Aggregate run metrics and failure reporting
Acceptance criteria:
- Multi-worker runs complete with deterministic job accounting
Effort: L
Dependencies: replay engine stable
Problem solved:
- Ensure replayed flows still match expected semantics.
Planned interface additions:
- Tool:
proxy_replay_verify - Resource:
proxy://replay/{replay_id}/parity
Functional requirements:
- Compare replay outputs to baseline by schema/key fields
- Report drift severity by endpoint
Acceptance criteria:
- Produces pass/fail and drift summaries for a replay run
Effort: M
Dependencies: replay engine + diff logic
| Priority | Feature | Phase | Effort | Dependencies | Status |
|---|---|---|---|---|---|
| P1 | Replay engine | 1 | M | Session query (shipped) | Shipped (v2.x, minus replay-status + variable substitution) |
| P2 | Session diffing | 1 | M | Replay/query schema | Planned |
| P3 | Decoder pipeline | 1 | M | Persisted exchange access (shipped) | Planned |
| P4 | WebSocket/SSE capture | 2 | L | Capture layer extensions | Planned |
| P5 | Flow template generation | 2 | M | Replay + indexing | Planned |
| P6 | CDP convenience bridge | 2 | S | CDP resources (shipped) | Planned |
| P7 | Durability checkpoints | 3 | M | Session-store internals | Planned |
| P8 | Distributed replay workers | 3 | L | Replay engine stable | Planned |
| P9 | Replay parity verification | 3 | M | Replay + diff logic | Planned |
- M1: Replay + diff usable for one real target flow
- M2: Decoder + WS/SSE coverage for modern apps
- M3: Durability and scale features production-ready
Phase 1:
- Replay correctness tests (ordering, retries, rate limits)
- Diff regression fixtures (known changed/unchanged captures)
- Decoder fixture corpus tests (valid/invalid payloads)
Phase 2:
- WS/SSE capture integration tests with synthetic stream server
- Template generation round-trip tests (capture -> template -> replay)
- CDP convenience attach smoke test
Phase 3:
- Crash-recovery stress tests on large sessions
- Replay queue worker concurrency and idempotency tests
- Parity verification tests against baseline fixtures
Create one GitHub issue per roadmap feature with:
- Problem statement
- Public MCP interface additions
- Data/storage impacts
- Edge cases and failure modes
- Acceptance criteria
- Test plan
- Dependencies/blockers
Issue naming convention:
[roadmap][phase-N] <feature-name>
Example:
[roadmap][phase-1] replay-engine[roadmap][phase-1] session-diff