etc/hosts
An /etc/hosts file for your iPhone.
Point *.mysite.com at any machine you like. Every app on the phone resolves it there — Safari, Chrome, the app you are building — so you can reach a dev server using the same hostnames it uses in production, or point a production domain at a staging box.
Coming to the App Store
SupportRequires iOS 17 or later. A physical iPhone or iPad — not the Simulator.
How it works
A packet tunnel Network Extension installs a VPN profile whose DNS server exists only inside the tunnel. The profile is scoped to just your rule domains, so only lookups for those names are routed into the app.
The extension answers them itself and forwards everything else to the resolvers your device was already using. No real traffic goes through the tunnel — only DNS. The connection that follows is an ordinary direct one, routed however it normally would be.
Any app iOS resolver Extension | | | | api.mysite.com | scoped domain | |-------------------->|----------------->| | | A -> 192.168.1.42| |<--------------------|<-----------------| | '-- HTTP(S) direct to 192.168.1.42, not tunneled
Three steps
- 1
Add a redirect
A domain, and where it should go: a server discovered on your network, or any IP address or hostname.
- 2
Flip the switch
iOS asks once to allow the VPN configuration. That is the whole setup.
- 3
Open the site
Whatever makes the request — a browser, a native app — resolves the domain to your machine. Put the port in the rule's destination and
http://mysite.comreaches a dev server on 3000 with no port in the URL.
Details
Only your domains are touched
The VPN profile scopes itself to the domains in your rules. Every other lookup on the phone uses the normal resolver and the normal network path — this code never sees it.
Every app, not just the browser
Names are resolved by iOS, below the app layer, so the native app you are testing, a WebView, or an API client gets the same answer Safari does.
Finds servers on your network
Destinations on the local network are discovered over Bonjour and picked by name, address and port. Or type an IP; your iPhone's subnet is prefilled as a shortcut.
Tells you which end is broken
Check Reachability opens a TCP connection to ports 443, 80, 8080 and 3000, so a server bound to 127.0.0.1 stops looking identical to DNS that isn't working.
Shows its work
A live list of every lookup that reached the extension, marked redirected or forwarded, so you can see what is actually happening instead of guessing.
Remote destinations too
A rule can point a production domain at a staging box anywhere. The request still carries the original Host header, so the far end just has to answer for it.
Drop the port from the URL
Give a rule's destination a port — 192.168.1.42:3000 — and http://mysite.com reaches your dev server with no :3000 to type. HTTP and HTTPS clients that follow the system proxy are relayed inside the extension; everything else stays direct.
No certificate to install
Nothing here decrypts or inspects your traffic, so there is no root CA to add to your phone and nothing reading what you send. Debugging proxies need one; a DNS answer does not.
Nothing leaves the device
No account, no analytics, no servers of ours to talk to. Rules live on your iPhone; lookups are answered on it.
Matching
Each rule picks how much of the namespace it claims.
| Mode | mysite.com covers | Plan |
|---|---|---|
| Exact | mysite.com only | Free |
| Subdomains | mysite.com and everything under it — www., api.staging. | Pro |
| Pattern | whatever the *s line up with — api-*.mysite.com, *.dev.mysite.com | Pro |
Where rules overlap, the most specific one answers: an exact name beats a subdomain root beats a pattern. A rule the free plan can't run never touches your data — it stays in the list exactly as written and is marked paused, so a lapsed subscription, or one picked up again later, turns them all back on untouched.
Pricing
Free
$0
- 3 redirects
- Exact hostname matching
- Bonjour discovery and reachability checks
Pro
$4.99
per month, or $24.99 per year
- Unlimited redirects
- Subdomain matching — mysite.com and everything under it
- Pattern matching — api-*.mysite.com, *.dev.mysite.com
- 14-day free trial — no payment method
Lifetime
$49.99
once
- Every Pro feature, no subscription
- Covers this version and the updates that follow it
- No server involved — it keeps working if updates stop
Prices in USD. The App Store shows the price in your own currency, and it is the one that applies. Lifetime is a separate one-time purchase — it does not cancel an active subscription. It covers this version and the updates that follow it; a future major version may be sold separately. See Terms for the subscription details.
Your traffic stays yours
The extension only ever sees lookups for the domains you list. It collects nothing, sends nothing, and has nowhere to send it — there is no Pterobit server in this app.
Read the privacy policy