Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork26
🦀⚙️ Sudoless performance monitoring for Apple Silicon processors. CPU / GPU / RAM usage, power consumption & temperature 🌡️
License
vladkens/macmon
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Apple Silicon processors don't provide an easy way to view live power consumption. I was interested in this data while testing local LLM models.asitop
is a nice and simple TUI for quickly checking current metrics, but it reads data frompowermetrics
and requires root privileges.macmon
uses a private macOS API to gather similar metrics (essentially the same aspowermetrics
), but runs without sudo. 🎉
- 🚫 Runs without sudo
- ⚡ Real-time CPU / GPU / ANE power usage
- 📊 CPU utilization per cluster
- 💾 RAM / Swap usage
- 📈 Historical charts with average and max values
- 🌡️ Average CPU / GPU temperature
- 🎨 Switchable color themes (6 variants)
- 🪟 Can be displayed in a small window
- 🦀 Written in Rust
brew install macmon
sudo port install macmon
cargo install macmon
nix-env -i macmon
Usage: macmon [OPTIONS] [COMMAND]Commands: pipe Output metricsin JSON format debug Print debug informationhelp Print this message or thehelp of the given subcommand(s)Options: -i, --interval<INTERVAL> Update intervalin milliseconds [default: 1000] -h, --help Printhelp -V, --version Print versionControls: c - change color v - switch charts view: gauge / sparkline q - quit
You can use thepipe
subcommand to output metrics in JSON format, which makes it suitable for piping into other tools or scripts. For example:
macmon pipe| jq
This command runsmacmon
in "pipe" mode and sends the output tojq
for pretty-printing.
You can also specify the number of samples to collect using the-s
or--samples
parameter (default:0
, which runs indefinitely), and set the update interval in milliseconds using the-i
or--interval
parameter (default:1000
ms). For example:
macmon pipe -s 10 -i 500| jq
This will collect 10 samples with an update interval of 500 milliseconds.
{"timestamp":"2025-02-24T20:38:15.427569+00:00","temp": {"cpu_temp_avg":43.73614,// Celsius"gpu_temp_avg":36.95167// Celsius },"memory": {"ram_total":25769803776,// Bytes"ram_usage":20985479168,// Bytes"swap_total":4294967296,// Bytes"swap_usage":2602434560// Bytes },"ecpu_usage": [1181,0.082656614],// (Frequency MHz, Usage %)"pcpu_usage": [1974,0.015181795],// (Frequency MHz, Usage %)"gpu_usage": [461,0.021497859],// (Frequency MHz, Usage %)"cpu_power":0.20486385,// Watts"gpu_power":0.017451683,// Watts"ane_power":0.0,// Watts"all_power":0.22231553,// Watts"sys_power":5.876533,// Watts"ram_power":0.11635789,// Watts"gpu_ram_power":0.0009615385// Watts (not sure what it means)}
InstallRust toolchain
Clone the repo:
git clone https://github.com/vladkens/macmon.git&&cd macmon
- Build and run:
cargo run -r
We love contributions! Whether you have ideas, suggestions, or bug reports, feel free to open an issue or submit a pull request. Your input is essential to helping us improvemacmon
. 💪
macmon
is distributed under the MIT License. For more details, check out the LICENSE file.
- tlkh/asitop – The original tool. Written in Python, requires sudo.
- dehydratedpotato/socpowerbud – Written in Objective-C, sudoless, no TUI.
- op06072/NeoAsitop – Written in Swift, sudoless.
- graelo/pumas – Written in Rust, requires sudo.
- context-labs/mactop – Written in Go, requires sudo.
P.S. One more thing... Monitoring your Mac's performance withmacmon
is like having a personal trainer for your processor — keeping those cores in shape! 💪
About
🦀⚙️ Sudoless performance monitoring for Apple Silicon processors. CPU / GPU / RAM usage, power consumption & temperature 🌡️
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.