Skip to content

lighthouse-computer/Network-Monitor

Repository files navigation

Network Monitor

A native macOS menu-bar app that shows you, second by second, which apps are using your network and how much.

Network Monitor demo

Full-quality screen recording (49 MB): network-monitor-demo.mov

Platform Swift License Commercial use

No accounts. No telemetry. No background services. Zero outbound connections — the app never opens a socket of its own, enforced by a CI gate on every build.


Install

brew install --cask lighthouse-computer/taps/network-monitor

Or grab the signed .dmg from the Releases page and drag it to /Applications. Developer-ID signed, notarized, stapled — no Gatekeeper prompt.

Why no Mac App Store? The app needs /usr/bin/nettop and /Applications metadata; the App Sandbox blocks both. Install from GitHub instead.


What you get

In the menu bar — live total speed (↓ 1.2 MB/s ↑ 305 KB/s), refreshed every second.

One row per app, sorted by lifetime bytes: trust badge, PIDs, total bytes, current speed. A green dot marks anyone transmitting right now.

Type to search across app names, PIDs, ports, and services. Results group with match-type chips.

Right-click a row to hide it, kill a runaway process (graceful quit for GUI apps, SIGTERMSIGKILL for daemons; system processes are never offered the action), or reset history.

Click a row for a floating chart panel (Live / 5 min / 15 min / 1 hr / 24 hr) with a crosshair, port breakdown, and the remote IPs behind each port. Pin up to 3 panels side by side.


Privacy

This is the whole pitch — everything else is convenience.

  • Zero outbound connections. No license check, no update ping, no analytics. A CI gate fails the build if any outbound-connection API reappears in shipped sources.
  • All analysis is on-device. Domains, IPs, port classifications — nothing leaves the machine.
  • 24-hour history cap. Downsampled to per-minute means beyond the last hour. Nothing older is written or transmitted.

Full accounting in PRIVACY-AUDIT.md.


Requirements

macOS 13 Ventura or later
CPU Apple Silicon or Intel
To build Swift 5.9+ (Xcode 15 or Command Line Tools)
Dependencies none — no third-party Swift packages

Build from source

git clone https://github.com/lighthouse-computer/Network-Monitor.git
cd Network-Monitor
swift test       # logic suite — runs headlessly, no signing
swift run        # build and launch the monitor

For the signed/notarized release path: DISTRIBUTION.md.

Sources/MonitorCore/              parsers, rule engine, identity matching — pure Foundation
Sources/NetworkUsageMonitor/      the menu-bar app: sampling, UI, policy
FilterExtension/                  content-filter system extension — firewall enforcer (see Roadmap)
docs/v2.0.0/                      architecture, security model, privacy audit

The monitor spawns nettop -P -n -L 1 once per second, parses the CSV, and groups per-PID byte deltas by bundle identifier — so Chrome helpers and Electron renderers collapse into one row. Code signatures are checked once per bundle and cached. Idle CPU stays near 0%.


Roadmap: per-app firewall

A per-app firewall is built and in the source tree, but disabled in shipping builds. It blocks an app from the network with an identity-based rule (matched on Team ID + designated requirement, so renaming or re-signing a binary can't dodge a block), enforced by a NetworkExtension content-filter system extension that keeps running after the GUI app quits.

macOS 26 regressed activation of newly-notarized content-filter system extensions — they fail in sysextd's realize phase regardless of install location (the "cannot allow apps outside /Applications" log line is a documented red herring). Rather than ship a firewall that silently enforces nothing, it's held behind a feature flag until Apple resolves the bug.

Design and security model: ARCHITECTURE.md · RULES-ENGINE.md · SECURITY.md.


Contributing

Bug reports and small fixes are welcome. Open an issue before starting anything larger. See CONTRIBUTING.md.

License

PolyForm Noncommercial License 1.0.0 — free for any noncommercial use: personal, study, research, nonprofits, educational and government organizations. Commercial use requires a separate paid license — see LICENSING.md. Source-available, not OSI open source.

About

A free, on-device macOS menu-bar network monitor — see which apps are using your bandwidth, second by second. No accounts, no telemetry, zero outbound connections.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors