Skip to content

RandomUserUsingGitHub/NetworkMonitoring

Repository files navigation

🌐 Network Monitor

Made by Armin Hashemi — lightweight macOS network monitoring app built with SwiftUI.

macOS Swift License


Features

  • 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

Screenshots

Coming soon


Installation

Homebrew (recommended)

brew tap RandomUserUsingGitHub/homebrew-tap
brew install --cask network-monitor

Manual — Download from Releases

  1. Go to Releases and download the latest NetworkMonitor-release.zip
  2. Unzip it
  3. Drag NetworkMonitor.app/Applications
  4. Open Terminal and run:
bash install.sh

If macOS says "unidentified developer": right-click the app → OpenOpen Anyway (one time only)

For developers — Build from source

Requirements: macOS 13+, Xcode 15+

git clone https://github.com/RandomUserUsingGitHub/NetworkMonitoring.git
cd NetworkMonitoring
open NetworkMonitor.xcodeproj
# Press ⌘R to build and run

Or build from the command line:

bash build_and_distribute.sh

How it works

The 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.


Settings

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

Uninstall

bash install.sh --uninstall

Publishing a release (maintainer notes)

  1. Build: bash build_and_distribute.sh
  2. This creates NetworkMonitor-release.zip
  3. On GitHub: Releases → Draft a new release
  4. Tag: v1.0.0, upload NetworkMonitor-release.zip
  5. Source code is automatically included by GitHub

License

MIT — see LICENSE

About

A swift project to monitor your connectivity and ip on your MacOS

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors