Legal

Privacy Policy

Perch for Mac and iPhone  ·  Last updated 27 September 2026

What Perch collects, at a glance

The short version, for the apps: your Mac does the diagnosis and keeps the results to itself. Pair an iPhone and it reads a copy across your own network. Neither app runs any analytics or crash reporting. This website is different from both apps: it keeps a waitlist and counts anonymous visits.

Data Where it goes
Scan results & device list Your Mac, read by a paired iPhone
Wi-Fi measurements Your Mac only
Diagnosis history Your device and its backups
Pairing key & certificate Your Mac's Keychain
Record of router requests & changes Your Mac only
Router password (once Perch supports your router) Your Mac's Keychain
Update check (Mac, if you allow it) srstech.in, hosted by Vercel
App analytics None collected
Crash reports None collected
Waitlist name & email Google Sheets
Website page views Vercel Web Analytics, anonymous
01

About this policy

This policy explains how Rahul Kumar Gupta, trading as SRS Tech ("we", "our", "us"), of Bengaluru, Karnataka, India, handles data for Perch. Perch is two apps that share one core: Perch for Mac and Perch for iPhone. Where the two differ, this policy names which app it means.

Both apps are in build. Neither has been released, and this policy describes what each one does today so it stays accurate the day either app ships.

02

Your network data stays on your network

Your network data stays on your network. Scan results, device addresses, network names, IP addresses and hostnames go into a database file on your own Mac.

There is no cloud, no server of ours that stores anything you measure, and nothing about your network travels past your own local network on its own.

The one exception is yours to make: Export on the Mac writes a report wherever you choose to save it, and that file lists device addresses and names. Perch can write a redacted version that leaves both out.

03

What your paired iPhone reads, and what it does not

Pair an iPhone with your Mac and it can read some of what the Mac holds. For each device it lists: hardware address, IPv4 address, hostname and vendor name. It also reads the Mac's latest verdict and its watch samples, which carry signal, negotiated rate, channel, band and gateway latency.

Network names and BSSIDs never cross to the phone. They stay on the Mac.

Any paired iPhone can read your Mac's summary of your router, whether or not its switch is on. Today that summary only says Perch found no router it can control. Once Perch supports your router, it will also show the router's brand, its channels and whether guest Wi-Fi is on. An iPhone you allow to change router settings can also send requests to your Mac, and once Perch supports your router, it can send your router's password too. See Your router, below.

That connection runs over your own network, pinned with TLS to the one certificate you approved by comparing six digits shown on both screens. A Mac with no pairing on its books, and no pairing window open, opens no port for a phone to reach.

04

What the iPhone cannot see

Some of this sits outside Perch's reach, in your favour. iOS gives a normal App Store app no signal strength, no neighbouring networks, no channel and no band. iOS enforces that limit, and Perch has no way around it.

iOS also returns a fixed, spoofed hardware address to every third-party app. The iPhone app can never read the real hardware addresses of other devices on your network, or name their makers. Reading your network's name or an access point's identifier needs an entitlement Perch does not request.

05

Your router

Today. Perch for Mac has a Router tab in Settings. No version of Perch recognises a router yet, so that tab can only say that Perch can't control yours. Perch does not sign in to your router and stores no router password.

One thing already happens. In the Mac's Settings, under Pairing, each paired iPhone has a switch called Can change router settings, and it is off until you turn it on. When a paired iPhone asks your Mac to look for your router, your Mac adds a line to a record file on your Mac, described below, and answers that it found no router it can control. It contacts nothing on your network to give that answer. If the iPhone isn't allowed to ask, your Mac refuses and still writes a line.

Once Perch can connect to your router. The rest of this section describes a version of Perch that supports your router, and that version has not shipped. It can change a few of your router's settings for you, such as turning guest Wi-Fi on or off, if you give it your router's admin password. Some routers pair with an app through a button you press on the box and give Perch a key instead. What follows about the password applies to that key too.

  • The password stays on your Mac. Perch keeps it in your Mac's login Keychain, one item per router, named Perch router password. It is not synced through iCloud Keychain. The Mac's password box is marked as a password field, so macOS may offer to save a copy in its Passwords app; we have not checked whether it does. If you accept, that copy belongs to macOS. Perch's own copy never goes into Perch's database, its settings, an export or a log, and it never comes to us.
  • Perch sends it only to that router. Perch recognises your router by its hardware address. Before every sign-in, Perch reads the hardware address of whatever answers at your router's address. If it is a different device, or Perch can't read it, Perch does not send the password and tells you so. Someone determined on your network could imitate a router's hardware address, so this protects against ordinary cases, such as a replaced router or an address reused by another device, and not against that.
  • It never goes over an insecure connection unless you say yes. Once your router has shown Perch a secure connection, Perch remembers its certificate, stops if the certificate changes, and never sends the password to that router over an insecure connection. Some routers offer only an insecure settings page, where another device on your network could read the password on its way. Perch asks before sending a password that way and sends it only if you agree. Your answer covers that password alone, so Perch asks again when you enter a new one.

From a paired iPhone. An iPhone whose switch is on can connect a router your Mac doesn't have yet. You type the router password on the phone, and it goes to your Mac over the encrypted connection the two already use. Your Mac holds it in memory until it signs in, and keeps it as described above only if the router accepts it. A yes to the insecure-connection question counts the same whether you give it on the phone or on the Mac. Perch saves nothing about your router on the phone and never puts the password in the phone's Keychain. Its password box is set up so that iOS should not offer to save the password either, but nobody has checked that on a real iPhone yet. The phone forgets the password when the connect finishes, or sooner if you leave the router screen or switch to another app. What the phone shows about your router, such as its brand, its channels and whether guest Wi-Fi is on, stays in memory and is not saved. What your Mac sends the phone about your router carries no network name, no hardware address and no list of your devices. A phone can't disconnect a router, and can't connect one while your Mac already has one. Your Mac checks the switch when a request arrives and again just before acting on it, so turning the switch off, revoking the phone or letting the pairing expire stops anything still waiting.

What else Perch keeps. The same Keychain item holds the router's hardware address, its model, what the router says about itself and its software version where it gives one, the maker its hardware address is registered to, which kind of router Perch recognised it as, the user name if your router asks for one, the date you connected it, the date you agreed to an insecure connection if you did, and a fingerprint of the certificate Perch recognises it by. If your router's software changes, Perch stops reading and changing its settings until Perch itself is updated. It notes that in the router's item and in a second Keychain item, Perch router software change, which holds the router's hardware address, what the router said about itself when Perch noticed the change, the build of Perch that noticed it, and the date. A third item, Perch router radio names key, holds a random key your Mac makes the first time it describes a router's radios to a paired iPhone, so the iPhone can refer to each radio without learning its hardware address. It holds no password and stays when you disconnect. Neither of those two items is synced through iCloud Keychain. The router settings Perch shows you are held in memory while Perch runs and are not saved, apart from the values a change writes to the record file below.

The record file. ~/Library/Application Support/Perch/router-changes.jsonl gets a line for each change Perch makes to your router or refuses to make, and for each request a paired iPhone makes for your Mac to look for your router, read it again, connect it or update its password. A line says when, who asked (your Mac, or a paired iPhone by the identifier Perch gave its pairing), what was asked, how it ended, and if Perch refused, why. A line about a change also says which setting and, unless your Mac refused the request as soon as it arrived, the value you saw before, the value you asked for, and the last reading Perch took from the router, if it took one: channel numbers and settings, and guest Wi-Fi on or off per band. A line about an iPhone's request to look, read, connect or update the password holds nothing the router said. If an iPhone that isn't allowed keeps asking, your Mac writes at most one line for each kind of request every ten minutes, and the next such line counts the ones it left out. That count is lost if no later line comes or Perch quits first. A channel change naming a radio your Mac no longer reads adds no line, because Perch sends nothing for it. The file holds no passwords (a password change appears only as "changed"), no list of your devices and no hardware addresses of your router's radios. Only your Mac account can read it. Perch never reads it back, never puts it in an export and never sends it anywhere. It is never trimmed, and at a few hundred bytes a line it stays small.

Perch's system log notes only steps, such as "signed in" and "signed out", and never your router's address, password or settings.

Disconnecting. On the Mac, Settings, then Router, Disconnect deletes the router's Keychain item, with the password and everything kept beside it. Only the Mac can do this. The record file stays until you delete it. So does the Perch router software change item, on purpose: disconnecting and connecting again does not lift the stop. A newer version of Perch removes that item itself the next time it talks to that router. You can delete it sooner in Keychain Access, and that lifts the stop: once you disconnect, quit and reopen Perch, and connect the router again, the same version of Perch will read and change its settings again, on router software Perch has not been checked against.

06

Permissions, and what each buys

Four prompts altogether: three on the Mac, one on the phone. Each one arrives next to what it buys, and none of them lands during onboarding.

  • Location Services, on the Mac. Names the networks around you, decides the country code that governs which channels Perch can recommend, and unlocks a beacon detail some access points broadcast. The scan works without it: refuse it and Perch still counts your neighbours, grades the contention and gives you the verdict, but refusing costs more than named neighbours; it also costs the country code that decides which channels Perch can legally recommend, and the beacon detail.
  • Local Network, on the Mac. Asked before Perch looks for devices on your network.
  • Notifications, on the Mac. Asked when you switch alerts on, and again when you open the pairing window. Never at launch.
  • Local Network, on the iPhone. Asked ahead of the phone's first measurement: Perch tells you the ask is coming and why beforehand, explains it in five languages, and reports a refusal as a refusal rather than as a broken router.
07

Every destination Perch contacts

Perch reaches a small, fixed set of addresses:

  • Your router. Once Perch supports your router, Perch also signs in to its settings page to read its settings and make the changes you ask for. See Your router, above.
  • The DNS server your Mac is already configured to use.
  • Cloudflare's 1.1.1.1, and Quad9's 9.9.9.9 when the first goes quiet.
  • One reserved address, used only to detect a local interceptor.
  • Cloudflare's speed.cloudflare.com, for the opt-in bufferbloat check. That download stops at 100 MB, spends around 25 MB on a typical home connection, and never uses cellular on the iPhone. Perch asks once and keeps the answer. Settings, under Checks on the Mac and from the toolbar on the iPhone, switches it back off, and the next measurement skips the download.
  • On the Mac only, this website, www.srstech.in, to check for updates. See below.

Those servers see your IP address, the same as any website you open. Perch sends them no data about your network or your devices.

Updates to the Mac app. Perch for Mac uses Sparkle, an open-source updater, to ask this website whether a newer version is out. The iPhone app is updated by the App Store and does none of this. The Mac checks only if you let it: the second time you open Perch, it asks whether to check automatically. If you agree, it checks at most once a day while Perch is open, and Settings, under Checks, turns that off again. Choosing Check for Updates in the Perch menu checks once, whatever that switch says.

A check downloads one small file that names the latest version. If a newer one is out and you choose to install it, the Mac downloads the new version from this website. Perch never installs an update unless you choose to. Both requests carry the same three things: the version of Perch you have, the version of Sparkle it uses, and the languages your Mac is set to prefer. macOS adds that last one to web requests itself, and it can include a region, such as English (India). The requests carry nothing about your network or your devices. Sparkle can also send a report describing your Mac, and Perch has that switched off. This website is hosted by Vercel, which sees the IP address each request comes from, as any web host does. Before installing anything, Perch checks that the download carries our signature, and refuses it if it does not. The list of versions is signed too, and Perch refuses a list without our signature. If the list keeps failing that check for 20 days, Perch reads it again, but it still installs nothing that lacks our signature.

08

Analytics and crash reporting: none

No analytics SDK is integrated into either app. Nothing about your use of Perch is collected. There is no account, and there is no opt-out, because there is nothing to opt out of.

Perch's privacy manifest, filed with Apple for every release, is the verifiable form of that claim. Its first three declarations, quoted as the app's own words to Apple: no tracking, no tracking domains, no collected data types.

The manifest also lists two Apple APIs Perch calls, with a reason for each: one saves your bufferbloat opt-in where no other app can read it, and one reads how long your iPhone has been running so Perch can time a measurement. The boot time itself stays on your phone; the only thing Perch takes from it is how long something took.

If Perch ever adopts consented product-usage analytics, it will carry no network identifier, and this policy will be updated before it ships.

09

Pairing and the local channel

The first time you open pairing, the Mac app generates a P-256 private key and a self-signed certificate, both held in your Mac's login Keychain. Pairing an iPhone means comparing a six-digit number derived from that certificate on both screens and confirming they match. The phone then pins the certificate's digest as its whole trust decision for that Mac.

Reinstalling the Mac app changes the certificate. The phone refuses the old digest and asks you to pair again, because accepting a changed certificate silently would be indistinguishable from an attack.

Each pairing is its own token: individually visible and individually revocable from your list of paired devices. Tokens expire at 90 days and renew on their own as that date approaches.

10

Purchases, once they exist

Nothing in Perch is purchasable today. When it is, Apple's StoreKit will hand the app a signed transaction, and the app checks that transaction on your own device. There is no licence server and no receipt server; verification happens on your device.

11

The website and the waitlist

This site works differently from the two apps described above. Join the waitlist and your name and email go, through Google Apps Script, into a private Google Sheet. Cloudflare Turnstile and a hidden field guard the form against automated submissions. You will receive two emails: a confirmation right away, and then one message telling you Perch is ready to install.

The website also counts anonymous page views through Vercel Web Analytics. It sets no cookies and does not identify visitors.

12

Retention and deletion

Dragging the app to the Trash leaves things behind, on both platforms.

On your iPhone. Deleting Perch removes your results and your settings. One thing outlives it: the credential your phone uses to talk to a paired Mac. iOS keeps Keychain items when an app goes away, and that credential still opens your Mac. Tap Forget this Mac on the Your Mac screen before you delete Perch, and the phone erases it. If the phone is already gone, open Perch on the Mac, go to Settings, then Pairing, and press Revoke beside that phone. The leftover credential then opens nothing.

On your Mac. Perch runs outside Apple's sandbox so it can read your Wi-Fi hardware, which means it has no container for macOS to take away with the app. Quit Perch, then delete these by hand:

  • ~/Library/Application Support/Perch/ holds the database of networks, devices and results
  • ~/Library/Preferences/com.rahulgupta.Perch.plist holds your settings, and any plan a paired iPhone reported. When you revoke an iPhone, the same file keeps a random ID that Perch gave that pairing until Perch has saved the revocation, which is usually at once. The ID does not include the iPhone's name
  • ~/Library/Caches/com.rahulgupta.Perch/ holds any update Perch has downloaded
  • ~/Library/Application Support/Perch/router-changes.jsonl, if it exists, holds the record of router requests and changes described under Your router. It sits inside the first folder, so deleting that folder removes it too

After that, open Keychain Access, search for Perch, and delete the certificate and the private key you find. Perch generates that pair the first time you open pairing and keeps it for the life of the install. It identifies your Mac to your own iPhone and to nothing else. Once Perch can connect to a router, you may also find an item named Perch router password for each router you connected. Delete it too, or press Disconnect in Perch's Router settings before you remove the app. If Perch ever stopped changing a router's settings because its software changed, there is also an item named Perch router software change, which Disconnect leaves in place, and if Perch ever showed a router's radios on a paired iPhone, one named Perch router radio names key. Delete those by hand.

Backups. Your device's own backups copy Perch's data along with everything else on it. On an iPhone, iCloud Backup or a backup to your computer includes your saved results and the credential a paired Mac recognises. iCloud Backup, or an encrypted backup to your computer, brings both back on a new phone; an unencrypted computer backup brings the credential back only to the same phone. Those results are timings and the checks' conclusions, with no network names and no addresses. On a Mac, Time Machine includes Perch's database, which holds the networks and devices it has seen. Those backups are yours, kept by Apple or on your own disk. Perch sends nothing to them itself.

A waitlist entry lives in our Google Sheet until we remove it. Email support@srstech.in to ask.

13

Children's privacy

Perch is built for adults managing a home network and is not directed at children under 13. We do not knowingly collect personal information from anyone that age. If you believe a child has given us personal information, contact us and we'll delete it.

14

Your rights

Depending on where you live, you may have the right to access, correct or delete personal data we hold about you, or to withdraw consent at any time.

Because your network and diagnostic data stays on your own device, there is usually nothing on our side to access or delete beyond a waitlist entry. Email support@srstech.in and we'll handle it directly.

15

Changes to this policy

We may update this policy as the apps near release. Each update changes the "last updated" date at the top of this page. Continuing to use Perch after an update means you accept the revised policy.

16

Contact

Questions about this policy or your data:

Rahul Kumar Gupta, trading as SRS Tech
Bengaluru, Karnataka, India
support@srstech.in
srstech.in