Pry Pry
Network DevTools for iOS · Free & Open Source

Debug your iOS app.
No Mac required.

Pry lives inside your app. Captures every URLSession request, mocks responses, throttles connections — all on-device. No proxy, no certificates, no setup.

ContentView().pry() — that's it.

MIT License · Swift 6 · iOS 18+ · Zero deps
Pry network inspector showing captured API requests
Free & Open Source MIT Licensed iOS 18+ Swift 6 Zero Dependencies Star on GitHub

Why Pry?

Proxy-based tools were designed for a Mac-first workflow. Pry was designed for the way you actually debug — on device, in context, instantly.

The old way

  • Install Charles or Proxyman ($50-$89)
  • Configure proxy on your Mac
  • Trust a self-signed certificate on device
  • Pray it works through corporate VPN
  • Switch to Mac every time you debug
  • Lose context when you switch apps

Every. Single. Debug. Session.

The Pry way

ContentView()
    .pry()
  • Works on cellular, VPN, corporate WiFi
  • Debug on the go — no Mac needed
  • Zero context switching — stays in your app
  • 100% on-device, nothing leaves your app
  • Free forever. MIT licensed.

Everything you need, on device

A full debugging suite that lives inside your app. No external tools, no context switching.

Free & Open Source

Network Inspector

Every request. Every detail.

Pry hooks into URLSession at the foundation layer. No swizzling, no proxy, no certificate dance. Every request captured automatically.

  • Timing breakdown: DNS, TLS, connect, TTFB
  • JSON body with syntax highlighting
  • GraphQL awareness, JWT decode, redirect chain
  • Search, filter, sort, pin, swipe to copy cURL
timing breakdownJSON highlightingGraphQL awareJWT decodecURL exportredirect chain
Console and App Hub

Console & App Hub

Terminal-style console with colored log types. Plus a full App Hub with deeplink and push notification simulators, cookies, UserDefaults, device info, and permissions.

  • Structured logs: info, success, warning, error, debug
  • Deeplink monitor with URL builder simulator
  • Push notification capture with APNs simulator
  • Cookies, UserDefaults, device info, permissions
Unlock more with Pro See all →
Pro — breakpoints and mocks

Breakpoints & Mocks PRO

Pause requests before they hit the server, or responses before they reach your app. Mock any endpoint with fake JSON. Replay and compare requests.

  • Breakpoint on request or response
  • Mock responses with custom status and delay
  • Replay any captured request
  • Compare two requests side by side
Pro — Performance metrics

Performance & Export PRO

Live CPU, memory, and FPS metrics with anomaly detection. Export sessions as Postman Collection or HAR archive. Network throttle for testing slow connections.

  • CPU, memory, and FPS with insights feed
  • Session export: Postman Collection & HAR
  • Network throttle: 3G, Lossy, Offline
  • Protobuf decoder without .proto schema
PRO

Network Throttle

Simulate Slow 3G, Fast 3G, Lossy, or Offline.

PRO

Request Diff

Compare two requests side-by-side.

PRO

Replay

Re-send any captured request with one tap.

PRO

HAR Export

Export sessions for Chrome DevTools.

PRO

Postman Export

Generate ready-to-use Collections.

PRO

Protobuf Decoder

Raw decode without .proto schema.

Your data never leaves the device.

Not ours to see. Not ours to store.

100% On-Device

All processing happens locally. Intercepted requests, logs, and metrics never leave your phone.

No Cloud, No Server

Pry has no backend. There is nothing to leak, nothing to breach, nothing to subpoena.

Open Source Auditable

The code is public and MIT licensed. Read every line. Verify every claim.

"We don't even have a backend. There's nothing to leak."

Pry is MIT licensed. Read the source code →

Add it in 30 seconds

Three steps. No configuration files, no build phases, no scripts.

  1. 1

    Add the package

    dependencies: [
        .package(url: "https://github.com/9alvaro0/Pry.git", from: "1.3.0")
    ]

    Or in Xcode: File → Add Package Dependencies and paste https://github.com/9alvaro0/Pry

  2. 2

    Attach the modifier

    import Pry
    
    @main
    struct MyApp: App {
        var body: some Scene {
            WindowGroup {
                ContentView()
                    .pry()
            }
        }
    }
  3. 3

    Tap the ladybug

    A floating action button appears on top of your app. Tap it to open the inspector. That is it -- no proxy, no certificates, no configuration.

Free forever, or upgrade for more

Pry Free covers everything most apps need. Pro adds breakpoints, mocks, performance, and export.

Pry Free

$0

MIT license, forever.

  • Network inspector + timing
  • Console, deeplinks, push simulator
  • cURL export + all viewers
Use Pry Free
Early bird

Pry Pro

$49

One-time. $79 after launch.

  • Breakpoints & mock responses
  • Replay, diff, throttle
  • Performance + Postman/HAR export
Get Pry Pro — $49

See full feature comparison →

Frequently asked questions

Is Pry Pro a subscription? +

No. Pry Pro is a one-time purchase. You get lifetime access to the current major version and all minor and patch releases within it. Future major versions may require an upgrade.

Can I use Pry Pro on multiple projects? +

Yes. A single-developer license covers unlimited projects built by the license holder. If you work in a team, each developer needs their own license.

Does Pry work with Alamofire / AFNetworking? +

Yes. Pry intercepts at the URLSession level, which is the foundation layer for Alamofire, AFNetworking, and virtually all iOS networking libraries. If it uses URLSession under the hood, Pry captures it.

Can I use Pry in TestFlight or debug builds? +

Yes. Pry is a debug tool — include it in debug builds and strip it from release builds using #if DEBUG or SPM build conditions. It has no server component, so there is nothing to disable.

What happens if I lose my GitHub access to PryPro? +

Open a private issue on the PryPro repository with your purchase receipt and we will re-add you. Access is tied to your purchase, not to a time-limited token.

Refund policy? +

Full refund within 14 days of purchase, no questions asked. Your repository access is revoked automatically on refund.

Can I see the Pro source code? +

Yes. Pry Pro is distributed as source code, not a compiled binary. You can step-through debug, adapt it, and submit feedback. Redistribution is not allowed by the license.

Does Pry send any data to your servers? +

No. Pry is entirely on-device. Nothing is ever sent to prytool.dev or anywhere else. The only network traffic Pry creates is the traffic your app is already making.

What happens after I buy Pro? How do I activate it? +

After purchase, you receive a GitHub collaborator invite to the private PryPro repo. Accept it, then add the PryPro package via SPM. Use .pryPro() instead of .pry() — that's the only change.

Stop switching to your Mac to debug.
Start debugging where it happens.

No proxy. No certificates. No Mac.