A macOS menu bar app that watches your public IP and tells you what the internet actually knows about it.
curl -fsSL https://xstral.com/install.sh | bash
Builds on your Mac in a few seconds. No password required.
Most tools show an IP and a city. XstralWatch asks four services at once and reports where they disagree, because they routinely do.
ip-api, ipapi.is, ipwho.is and ipinfo. Every verdict names the services behind it, and says “disputed” when they disagree instead of picking a winner.
A second lookup is pinned to your physical interface, bypassing the tunnel. If that address differs from your public one, the tunnel really is carrying your traffic.
Whether you look like a VPN exit, a hosting range, a Tor exit or a mobile carrier — the signals that decide whether a site quietly blocks you.
Logs a new entry when your subnet, country or operator changes — not for every rotation inside a VPN's address pool.
Refreshes when a route changes, so connecting a VPN or switching Wi-Fi updates the reading without touching anything.
Follows your system appearance live, with an explicit override. Menu bar summary, full dashboard when you want the detail.
Three versions, and one of them was wrong about something important.
A developer build. It lived entirely in the menu bar — one line of text, one source, and no way to know when that source was wrong. It went stale whenever the network changed, and it only ever ran on my machine.
The rewrite, and the point where this stopped being a script and became an app: a proper macOS dashboard alongside the menu bar. Four independent sources instead of one, cross-checked, reporting disagreement rather than picking a winner — because v1 confidently called a datacenter VPN exit "residential", and it was wrong. Tested against VPN exits across a dozen countries, from Madrid to Singapore to New Delhi, and the readings held up.
You control the clock now: check every 10 seconds, 30 seconds, minute, 10 minutes, 30 minutes, or only when you ask. Fixed a launch problem where the app started silently and left you hunting the menu bar to find it. Added install and page counters, and a handful of small fixes.
macOS attaches a com.apple.quarantine flag to anything a
browser downloads. Gatekeeper then refuses to open quarantined apps that
aren't signed with a paid Apple Developer ID and notarized by Apple — and
on Apple Silicon the dialog reads “XstralWatch is damaged and can't be
opened”, which is alarming and simply untrue.
Command-line tools don't set that flag, and software compiled on your own machine was never downloaded at all. So there's nothing to quarantine and nothing to warn about.
Worth saying plainly: this doesn't make XstralWatch
verified — it means macOS stops asking. Piping a script into a
shell is also how plenty of malware arrives. That's why this one fetches
readable source rather than a binary, checks it against a published
SHA-256, and never asks for sudo. Read it first if you like:
curl -fsSL https://xstral.com/install.sh | less
The installer takes options, and you can always build it yourself.
# install somewhere else, and don't launch afterwards curl -fsSL https://xstral.com/install.sh | bash -s -- --to ~/Applications --no-launch # or build it by hand curl -fsSL https://xstral.com/xstralwatch-2.1.tar.gz | tar -xz cd xstralwatch-2.1 && ./build.sh
Building needs the Xcode Command Line Tools — xcode-select --install. Nothing else.