Capture UI & requests

Capture combines client tabs, HTTP requests and WebSocket connections on the left, and details on the right. Pin and sort requests, filter by content or response body, then enter copy, forward, param transform, Mock, Debug API, or collaboration from real traffic.

Demo

Filter requests and inspect details

Use client tabs, protocol/method filters, and keyword search to find a request, then inspect details and resend it.

Client tabs

Tabs are keyed by source IP: one tab per proxied client. Reorder by drag-and-drop; newly seen IPs are appended at the end (order does not follow request arrival jitter).

  • Labels usually show the client IP; loopback/localhost may read as a localized “this machine” style label.
  • Closing a client tab clears that IP’s rows from the capture list and hides the tab; forwarding through the proxy is unchanged—only UI state and loaded list data.
  • Different phones on the same Wi‑Fi, or multiple containers/VMs on one PC, appear in different tabs whenever their source IPs differ.
  • When no client tab is available, the list may show all loaded sessions without a single-IP filter—follow what the running app shows.

Request list

The left column lists sessions for the current context: first scoped by the active client tab, then shaped by tree layout, sort order, and the filters below.

List context menu

Right-click a row to use **that request as a template**: DevPeek prefills URL, query, body, headers, and more so you do not retype match conditions—handy for creating rules or debugging from real traffic.

  • **Mock / param transform**: open the visual wizard, pick match features from the request, then save.
  • **Forward to…**: prefills the request Host to locate or create a forward rule.
  • Also copy URL / full message, open **Debug API** to edit and resend, or **Send to peer**.

Context menu shortcuts: template a row into Mock, param transform, or forward rules, plus debug and collaboration.

Screenshot: DevPeek capture list context menu
List context menu

Tree layout

Group rows by protocol plus host; click group headers to collapse or expand. The tree toggle can be persisted in-app.

Two views of the same list area: flat rows on the left, tree grouping on the right (shown side by side for comparison; in the app you toggle between modes).

Screenshot: DevPeek capture list with several request rows
Flat list (chronological rows)
Screenshot: DevPeek capture list in tree mode
Tree grouping

Columns, sorting, and pins

Columns include status, method, Host, Path, size, time, and duration. Click headers to sort; resize Method / Host and the widths persist. Pin important requests from the context menu or shortcut; Clear can preserve pinned rows.

Filter & search

Filter HTTP(S) by content type such as JSON, HTML, images, media, and other. Keywords match URL, Host, Path, and method; enable response-body scope when needed. Case and regex are supported per client tab. WebSocket sessions use the separate connection list below.

Below left: protocol chips you can toggle together. Below right: when HTTP or HTTPS is checked, the per-method sub-filter appears and combines with the protocol chips.

Screenshot: protocol filter chips above the capture list
Protocol multi-select (HTTP, HTTPS, WebSocket, …)
Screenshot: method toggles shown for HTTP and HTTPS filters
HTTP/HTTPS method sub-filter (GET, POST, …)

Clear vs close tab

The trash/clear action (when enabled) clears server-side rows for the selected client only and does not hide the tab. The × on a tab clears that client and hides the tab; traffic from that IP may recreate the tab later.

Recording, capture view, and SSL

Proxy recording controls whether new requests enter the list; forwarding continues while it is off. HTTPS is plaintext only when SSL decrypt is on, the host matches Include, and no Exclude rule wins. The proxy pipeline is independent of the current page: enabled rules still match in Debug, and manual Mock uses the global tamper dialog.

WebSocket connections

Proxied WS / WSS appears in a separate connection list below requests. Inspect handshakes and frames, search, simulate sending, intercept text frames, and export HAR—see WebSocket sessions and WS Flow.

Per-client list pause

When a client tab is selected, you can pause its list refresh and skip Mock for that client to reduce noise.

Insert order and scrolling

New sessions usually appear at the top. When the Mock tamper dialog selects a pending row, the list scrolls it into view.

Row chrome

Pin star: pinned requests stay in a dedicated top section outside the regular paging window; click again or use the shortcut to unpin.

Method badge: colored HTTP verb (GET, POST, …).

Status badge: shown when a status code exists; color hints 2xx / 3xx / 4xx / 5xx bands.

Rows that matched a Mock rule show an amber inset border. After disconnect or wait timeout during Mock, the row may get a gray left bar and muted styling. In tree mode, leading blank space is indentation, not status.

Detail pane (capture)

With a row selected, the right pane shows that session—headers, bodies, and param transform output are **read-only**. Manual Mock tampering happens in the full-screen **Mock tamper** dialog (see Mock/Breakpoint), not in the detail pane. If the client disconnects or Mock wait times out, a gray reason bar may appear above the main tabs.

Layout and action bar

When a session is selected, a **Debug** button can appear at the top of the detail column, opening the **Debug API** drawer prefilled from the current row (same as list context menu).

When switching rows in the list, the detail pane keeps your scroll position for continuous reading; scroll to the top yourself when you want a fresh view.

Main tab bar

Five main tabs: Overview, Request headers, Request body, Response headers, Response body. When you click different rows in the list, the app generally **keeps the active tab** (e.g. stay on Response body to compare payloads).

  • Overview: key fields at a glance.
  • Request / response headers: read-only.
  • Request / response bodies: Preview, Raw, Transform inner tabs—read-only.

Overview (shared metrics)

Overview shows client IP, method, Host, status code, duration, and full URL for a quick scan.

  • Client IP: traffic source; loopback may read as a localized “this machine” label.
  • HTTP method: matches list badges.
  • Host: matches the URL host.
  • Status: colored bands for 2xx / 3xx / 4xx / 5xx.
  • Duration: milliseconds; shows an em dash when unknown.

Request and response headers

Read-only request and response headers for copy and comparison. Mock edits happen in the Mock tamper dialog.

If there is no content, you see an empty state.

Request and response bodies (inner tabs)

Inner tabs include Preview, Raw, and Transform (when rules apply). All read-only—Mock edits happen in the tamper dialog.

When switching rows, your chosen inner tab generally stays put for easier comparison.

Response body defaults to Preview when you switch rows; switch to Raw manually when you need raw text.

  • Request body: uplink content; param transform output appears under Transform.
  • Response body: downlink content.

Tips for comparing many requests

Combine “top tab stays put” with Overview metrics:

  • Latency sweep: pin Overview, click rows, read duration + status colors only.
  • JSON bodies: pin Request body on Raw or Preview and step through rows.
  • Responses: pin Response body; switch to Raw when you need raw text.

Mock tamper dialog

When **manual Mock** hits, a full-screen **Mock tamper** dialog opens (title shows pending count). It auto-opens while items are pending and cannot be dismissed via overlay click, Esc, or the close button; it closes when the queue is empty. Edit headers/bodies in the dialog, then Continue or Abort for the current item; footer actions also offer Continue all / Abort all.

  • Left **Pending** list: request / response stages in order, with method, URL, and client IP.
  • Right editor: headers and body. Rows bound to param transform default to **plaintext**; DevPeek encrypts before Continue.
  • Rules with both request and response: after request Continue, wait for the origin response, then edit the response.
  • Dialog ↔ list sync: switching queue items selects and scrolls the matching row; after continue, the read-only detail pane refreshes for side-by-side review.

The dialog is **not tied to the active client tab or main window tab**: whether you are on **Capture** or **Debug**, and whichever device tab is selected, it auto-opens while items are pending—same proxy chain as the capture list and Debug tab Network. Only per-client **list pause** skips Mock matching for that IP.

Manual Mock in two phases: edit request headers/body in the dialog; after Continue, if the rule includes a response stage, wait for the origin response before editing it.

DevPeek Mock tamper dialog: editing request headers and body
Request phase · edit, then Continue
DevPeek Mock tamper dialog: request released, waiting for response intercept
Request released · waiting for response
DevPeek Mock tamper dialog: editing response headers and body
Response phase · edit, then Continue

Detail pane vs dialog

The detail pane stays read-only for original / preview / Transform views—**do not edit Mock content there**.

If the client disconnects or Mock wait times out, a gray reason bar may appear above detail tabs and the list row is muted. Clearing pending items on close may surface a toast.

List selection and detail top tab

When a new Mock pause is queued, the app selects the session, scrolls the list, and switches the detail **main tab** for quick review: request phase prefers Request body (else Request headers); response phase prefers Response body (else Response headers).

This alignment helps you read capture data while the dialog is open—it is **not** in-detail editing. Manually clicking another paused row applies the same top-tab rules.

Enabling and matching Mock rules

The Mock library can enable multiple rules. The proxy evaluates in list order and stops at the first hit. Use the right-side Mock panel to toggle, filter, and manage groups or open full settings; a running dot indicates that at least one rule is enabled.

Continue / Abort and the queue

After Continue or Abort on the current item, if more items remain, the dialog selects the next pending entry in order.

Continue all / Abort all batch-process every pending row in the left list. When done, the dialog closes; list selection remains for review.

If the Debug API drawer is open when Mock hits, auto-select/scroll is deferred until the drawer closes.

Debug API (in-place)

The detail Debug button **debugs the API in place**: open the bottom drawer prefilled from the current row—no copy/paste into Postman or similar tools. Body modes include none, JSON, plain text, x-www-form-urlencoded, multipart (text/file), and binary file. Query / JSON fields with param transform and re-encrypt enabled show **plaintext**; DevPeek writes ciphertext on Send. Undecrypted HTTPS tunnels may block send with an inline reason. Response snapshots update in the drawer after each send.

One-way decrypt-only configs show read-only plaintext in the drawer with a hint to enable re-encrypt in conversion config—see Param transform.

Open from the detail **Debug** button or list menu. Edit URL, query, body, and headers, then Send; bound fields show plaintext and encrypt automatically. Response snapshot updates below after each send.

DevPeek Debug API drawer: plaintext query/body, auto encrypt on send, response snapshot
Debug API: edit plaintext, auto encrypt, compare responses