Made by Armin Hashemi — lightweight macOS network monitoring app built with SwiftUI.
- Live ping graph — real-time latency visualisation with colour-coded status
- Public IP & location tracking — detects IP changes with city/country lookup
- Outage detection — notifications when connectivity drops or restores
- Eye icon — hide/reveal your public IP at any time
- IP censoring — optionally censor IP in notifications when a change is detected
- In-app settings — configure everything without touching config files
- Themes — green, amber, blue, red
- Customisable subtitle — change "by Armin Hashemi" to anything you like (I'll allow it :D)
- Login item control — toggle start-at-login from inside the app
- Configurable ping — host, interval, timeout, packet size, fail threshold
Coming soon
brew tap RandomUserUsingGitHub/homebrew-tap
brew install --cask network-monitor- Go to Releases and download the latest
NetworkMonitor-release.zip - Unzip it
- Drag
NetworkMonitor.app→/Applications - Open Terminal and run:
bash install.shIf macOS says "unidentified developer": right-click the app → Open → Open Anyway (one time only)
Requirements: macOS 13+, Xcode 15+
git clone https://github.com/RandomUserUsingGitHub/NetworkMonitoring.git
cd NetworkMonitoring
open NetworkMonitor.xcodeproj
# Press ⌘R to build and runOr build from the command line:
bash build_and_distribute.shThe app runs as a single process with two components:
| Component | Description |
|---|---|
| UI | SwiftUI interface — live ping graph, IP details, speed test, settings |
| Background monitor | Runs on a background thread — handles ping, IP tracking, and notifications |
The background monitor writes state to /tmp/.netmon_* files. The UI reads them on a 1-second timer. Monitoring continues even when the window is closed (the app stays in the menu bar). Settings are stored in UserDefaults and synced to ~/.config/network-monitor/settings.json.
All settings are configurable in-app via the ⚙️ gear icon:
| Setting | Default | Description |
|---|---|---|
| Ping host | 8.8.8.8 | Target to ping |
| Ping interval | 2s | How often to ping |
| Ping timeout | 2s | Per-packet timeout |
| Packet size | 56 bytes | ICMP packet size |
| Fail threshold | 3 | Failures before outage alert |
| IP check interval | 10s | How often to check public IP |
| Censor IP in notifications | off | Show only first octet in alerts |
| Theme | green | green / amber / blue / red |
| Launch at startup | on | Start app at login |
| Subtitle text | "by Armin Hashemi" | Custom tagline |
bash install.sh --uninstall- Build:
bash build_and_distribute.sh - This creates
NetworkMonitor-release.zip - On GitHub: Releases → Draft a new release
- Tag:
v1.0.0, uploadNetworkMonitor-release.zip - Source code is automatically included by GitHub
MIT — see LICENSE