Getting your first capture

Five steps from installing Hollowport to reading your first decrypted request — then where to go once you've got the basics down.

1

Install Hollowport

Download it from the App Store like any other app. No account, no sign-up — it opens straight to the Capture tab.

2

Install and trust the certificate

Open More → Certificate and follow the two steps: install the profile (iOS hands you off to Settings for this), then flip on full trust under Settings → General → About → Certificate Trust Settings. This is the same one-time step every HTTPS-inspecting proxy uses — Charles and Proxyman included — because iOS won't decrypt traffic for an app it doesn't already trust.

Nothing decrypts until this is done. Skip it and Hollowport still sees connections, but every HTTPS request shows up opaque instead of readable.

3

Start capturing

Tap Start on the Capture tab. iOS will ask you to approve a VPN configuration the first time — that's expected, and it's how Hollowport reads every app's traffic without a Mac or a Wi-Fi proxy. Approve it once and Hollowport starts as an on-device Network Extension.

4

Use whatever app you're testing

Switch to the app you actually want to inspect and use it normally — browse, log in, load a screen. Every connection it makes shows up back in Hollowport's Capture tab in real time, one row per request.

5

Tap a row to read it

Method, host, path, and status at a glance in the list; tap any row for the full request and response — headers, and a pretty-printed, collapsible body for JSON, with automatic decoding for gRPC/protobuf where there's no schema to work from.

Going further

Once the basics work

The rest of the app is organized around specific things you're actually trying to do, not a settings menu to memorize.

Change what a request sees

Breakpoints pause a live request on a matching host so you can edit or drop it before it's forwarded. Rules do the same thing automatically and repeatably — redirect, block, throttle, mock a response, or rewrite headers, matched by host and path (wildcards and regex both work).

Test a bad network

More → Network Chaos bundles latency, packet loss, and server errors into one-tap presets — Poor Network, Offline API, Slow Backend, Server Errors, Auth Failure — so you don't have to hand-configure a Rule every time you want to see how your app behaves badly.

Figure out why a request failed

Check the Problems tab first — HTTP errors, DNS/connection failures, upstream TLS issues, and interception (pinning, handshake failures) are already classified and grouped by host, so you're not scrolling a raw log looking for the one row that matters.

Resend a request with changes

Tap any captured request → Replay/Edit to change the method, headers, body, or query params and send it again, response inline. Replay ×N repeats it several times and tells you whether the outcome, latency, or body was actually consistent.

Compare before and after

Replay a request twice — once as captured, once with something changed (say, Authorization removed) — and open Compare for a summary of what changed in the outcome, with a narrow, evidence-backed read on whether that change is what actually caused it.

Automate a multi-step flow

Collections chain requests together — pull a token out of a login response with a variable extraction, reference it as {{authToken}} in every request after, and mark it a secret so it's masked in the UI and never written to disk in plain text.

Inspect a WebSocket

Turn on decoding for a specific host under More → WebSockets to see individual frames as they're sent and received, the same way HTTP requests show up in Capture.

Get a plain-language explanation

On a confusing failure, tap Explain with AI from the flow's detail view. It runs on Apple's on-device model only — nothing about your traffic is sent anywhere to generate the explanation.

One limit worth knowing up front: certificate-pinned traffic — banking apps, Apple's own push and iCloud Private Relay — is visible at the connection level but can't be decrypted, no matter how it's configured. That's a platform limit, not a Hollowport bug.