Skip to main content

Lightweight macOS system health monitor with historical tracking, smart alerts, and actionable insights — Monica would be proud of how clean your system runs

Project description

macmonica

A lightweight macOS system health monitor that tracks metrics over time, sends smart alerts, and tells you exactly what's draining your resources.

What makes it different from htop/btop/glances: Those are live-only dashboards. macmonica tracks history, predicts battery degradation, groups processes by app, sends macOS notifications, and tells you why your Mac is slow — not just that it's slow.

Install

pip install macmonica

After install, the CLI command is macmonica:

macmonica doctor

Quick Start

# Set up background collector + daily digest (one command)
macmonica install

# See what's happening right now
macmonica why

# Live dashboard
macmonica

# What drained my battery?
macmonica blame

# To remove
macmonica uninstall

Commands

Real-time

Command Description
macmonica Live dashboard with process grouping, energy impact, battery health
macmonica doctor Full system health check with pass/fail/warn verdicts
macmonica why Plain English explanation of what's wrong
macmonica top [--sort cpu|mem|energy] Grouped process list (like top, but useful)
macmonica recommend Actionable recommendations based on current state

Battery & Power

Command Description
macmonica blame [--hours N] Correlates battery drain with top CPU consumers
macmonica wake-log Shows wake/sleep events — catches phantom drain
macmonica usb Connected USB devices and their power draw

Historical

Command Description
macmonica history [--period 24h|7d|30d] Sparkline trends with color-coded alert zones
macmonica compare 24h 7d Side-by-side period comparison
macmonica report [--period week|month] Full health report with daily breakdown
macmonica digest [--today] [--notify] Daily summary with optional macOS notification
macmonica alerts Alert history log

Data & Config

Command Description
macmonica export [--period 24h|7d|30d|all] [-o file.csv] Export to CSV
macmonica status Collector status, DB size, last snapshot time
macmonica config [--init] View or create configuration
macmonica collect Run collector daemon (for launchd)
macmonica collect-once Single snapshot (for testing)

Features

Smart Alerts (macOS notifications)

  • CPU sustained above threshold
  • Memory/disk usage critical
  • Battery health degraded
  • WiFi signal weak
  • Disk I/O rate abnormal
  • Anomaly detection — alerts when metrics deviate from your 7-day baseline
  • Quiet hours — no notifications between 11pm-7am (configurable)

Battery Intelligence

  • Tracks cycle count, max capacity, and condition over time
  • Predicts when battery will hit 75% health
  • blame command tells you exactly what drained your battery
  • Wake/sleep log catches phantom drain from DarkWake events

Process Grouping

Chrome's 30 helper processes show as one "Chrome" row with aggregated CPU/memory. Same for Safari, VS Code, Slack, Firefox, and any Electron app.

Webhooks

Send alerts to Slack, Discord, or ntfy.sh:

{
  "webhook_url": "https://ntfy.sh/your-topic"
}

Auto-Actions

Configure automatic responses to conditions:

{
  "auto_actions": [
    {
      "condition": {"metric": "cpu_avg", "op": ">", "value": 95},
      "action": "notify",
      "message": "CPU critical"
    }
  ]
}

Configuration

Config lives at ~/.macmonica/config.json. Create defaults with:

macmonica config --init

Key settings:

  • collect_interval: Seconds between snapshots (default: 60, min: 10)
  • retention_days: How long to keep data (default: 30)
  • quiet_hours: {"enabled": true, "start": 23, "end": 7}
  • webhook_url: URL for alert webhooks
  • auto_actions: List of automated response rules
  • alerts: Per-alert-type thresholds and enable/disable

Resource Usage

The background collector is designed to be invisible:

  • CPU: ~0.26s per collection cycle, then sleeps 60s
  • Memory: ~28MB (Python + psutil baseline)
  • Disk: ~1MB/month of SQLite data
  • No subprocess calls in the hot path (battery/thermal cached 5min, WiFi cached 1min)

Data Storage

All data is stored locally in ~/.macmonica/macmonica.db (SQLite). Nothing is sent anywhere unless you configure a webhook.

Requirements

  • macOS (Apple Silicon or Intel)
  • Python 3.10+

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

macmonica-1.1.1.tar.gz (32.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

macmonica-1.1.1-py3-none-any.whl (38.5 kB view details)

Uploaded Python 3

File details

Details for the file macmonica-1.1.1.tar.gz.

File metadata

  • Download URL: macmonica-1.1.1.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for macmonica-1.1.1.tar.gz
Algorithm Hash digest
SHA256 97b9487d3f10b22dfc0847a05741ad565e3eb639ce10b75d6c9a31c2ad0d572f
MD5 e75ceded5d989e10856cdf4caf787f91
BLAKE2b-256 2d220cbd35715db732e1de5119229724ca51ffee076b060322eb4d34c9b082ff

See more details on using hashes here.

File details

Details for the file macmonica-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: macmonica-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 38.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for macmonica-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ff25a95c17d2e5bdd06a4b14691cc924d72f4b31793ac09faf89c7231f7a056f
MD5 8ea1f42649ce95b332b6190f94f5091f
BLAKE2b-256 575525b33bfd608d29e09561b197d1245a3306960090206a0c2dd3150be1eab1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page