Skip to content

emmanuelchucks/DataMeter

Repository files navigation

DataMeter

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.

Features

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

Project structure

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/

Install locally

scripts/install-local.sh

This builds Release, installs DataMeter.app into /Applications, and launches it. Enable Launch at Login in Settings if you want DataMeter to start automatically.

Develop

Generate/open the Xcode project:

xcodegen generate
open DataMeter.xcodeproj

Run tests:

swift test
xcodebuild -project DataMeter.xcodeproj -scheme DataMeter -configuration Debug -derivedDataPath DerivedData test

Run a debug build:

xcodebuild -project DataMeter.xcodeproj -scheme DataMeter -configuration Debug -derivedDataPath DerivedData build
open DerivedData/Build/Products/Debug/DataMeter.app

Smoke check

scripts/smoke-macos.sh

This builds the app, opens it, verifies the accessibility snapshot, captures a screenshot, and writes ignored artifacts to artifacts/smoke/.

Privacy

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.

Limitations

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

About

macOS app for tracking per-app network data usage locally

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors