XstralWatch icon

XstralWatch

A macOS menu bar app that watches your public IP and tells you what the internet actually knows about it.

macOS 13+ Apple Silicon & Intel No account Version 2.1
curl -fsSL https://xstral.com/install.sh | bash

Builds on your Mac in a few seconds. No password required.

XstralWatch dashboard with a VPN connected, showing the public IP, risk signals and the address the ISP sees
Connected to a VPN. Four sources agree the exit is a datacenter and disagree about "proxy" — so it says disputed. The ISP address is blurred here; on your machine it shows, which is how you know the tunnel is carrying traffic.

What it tells you

Most tools show an IP and a city. XstralWatch asks four services at once and reports where they disagree, because they routinely do.

Four sources, cross-checked

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.

Proof your VPN is working

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.

Datacenter and proxy detection

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.

A record of every change

Logs a new entry when your subnet, country or operator changes — not for every rotation inside a VPN's address pool.

Reacts to the network

Refreshes when a route changes, so connecting a VPN or switching Wi-Fi updates the reading without touching anything.

Light and dark

Follows your system appearance live, with an explicit override. Menu bar summary, full dashboard when you want the detail.

How it got here

Three versions, and one of them was wrong about something important.

Version 1 Beta · never released

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.

Version 2.0 First real release

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.

Version 2.1 Current

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.

Already running 2.0? Re-run the install command above — it replaces your copy in place and keeps your IP history. Worth it for the refresh intervals alone, if you ever wanted it checking more often than once a minute.

Why a command instead of a download

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

Other ways to install

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.