A macOS app for tracking how much network data each app/process uses on your Mac.
DataMeter is designed for everyday network data-usage awareness: keep it running, let it launch at login, and use the dashboard to see which apps are consuming data today, this week, this month, or during the current session.
- Per-app/process network usage tracking using macOS
nettop. - Session, Today, This Week, This Month, and All Time filters.
- Network filter, useful for isolating usage on specific Wi-Fi or network connections.
- Searchable, sortable app usage table.
- Download/upload/total summaries.
- App icons and nicer app names when macOS can resolve the process to an app bundle.
- Local SQLite history at
~/Library/Application Support/DataMeter/usage.sqlite. - Optional Launch at Login so totals keep accumulating after you opt in.
- Menu bar companion view.
This is an XcodeGen-managed macOS app project:
DataMeterApp/ SwiftUI app, dashboard, settings, menu bar UI, app icon/display resolution
DataMeterCore/ nettop sampler, parser, accumulator, SQLite storage, network identity/session history
DataMeterCoreTests/ unit tests for core behavior
scripts/ local install and smoke-test scripts
project.yml source of truth for DataMeter.xcodeproj
Package.swift SwiftPM entry point for core/test iteration
Generated artifacts are ignored by git:
DerivedData/
.build/
artifacts/
scripts/install-local.shThis builds Release, installs DataMeter.app into /Applications, and launches it. Enable Launch at Login in Settings if you want DataMeter to start automatically.
Generate/open the Xcode project:
xcodegen generate
open DataMeter.xcodeprojRun tests:
swift test
xcodebuild -project DataMeter.xcodeproj -scheme DataMeter -configuration Debug -derivedDataPath DerivedData testRun a debug build:
xcodebuild -project DataMeter.xcodeproj -scheme DataMeter -configuration Debug -derivedDataPath DerivedData build
open DerivedData/Build/Products/Debug/DataMeter.appscripts/smoke-macos.shThis builds the app, opens it, verifies the accessibility snapshot, captures a screenshot, and writes ignored artifacts to artifacts/smoke/.
DataMeter stores usage history locally at ~/Library/Application Support/DataMeter/usage.sqlite. It does not include analytics, telemetry, ads, cloud sync, or crash-report uploading. See PRIVACY.md.
- DataMeter tracks; it does not block or limit apps.
- Per-app totals are not retroactive. DataMeter has to be running to collect usage.
- Very short-lived commands can be missed between samples.
- Browser tabs are not separated.