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
blamecommand 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 webhooksauto_actions: List of automated response rulesalerts: 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file macmonica-1.1.3.tar.gz.
File metadata
- Download URL: macmonica-1.1.3.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b05fce0e928b8499fb16d7e520ec2a6dc383aff033554e120d7d3824b88b7969
|
|
| MD5 |
35321b8b01d8f7a878eed0152f0da566
|
|
| BLAKE2b-256 |
749a99552dea1b6a296b3b42413b2d0c44ff4b62432eed9e4b4fa265ea827e14
|
File details
Details for the file macmonica-1.1.3-py3-none-any.whl.
File metadata
- Download URL: macmonica-1.1.3-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba0b2681c72069c0ae70c6658df2bc71992125a747dd87265554f195fa63d974
|
|
| MD5 |
d769653d74869bb9e5280293477827ff
|
|
| BLAKE2b-256 |
8fd7ad62fcc0e1b2f2d62fec1724029330ba9e637aa17731246147e6c2e87e88
|