- Notifications
You must be signed in to change notification settings - Fork19
🦀⚙️ 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 see live power consumption. I was interested in this information while testing local LLM models.asitop
is a nice and simple TUI to quickly see current metrics, but it reads data frompowermetrics
and requires root privileges.macmon
uses a private macOS API to gather metrics (essentially the same aspowermetrics
) but runs without sudo. 🎉
- 🚫 Works without sudo
- ⚡ Real-time CPU / GPU / ANE power usage
- 📊 CPU utilization per cluster
- 💾 RAM / Swap usage
- 📈 Historical charts + avg / max values
- 🌡️ Average CPU / GPU temperature
- 🎨 Switchable colors (6 variants)
- 🪟 Can be rendered in a small window
- 🦀 Written in Rust
You can installmacmon
usingbrew:
$ brew install macmon
You can also installmacmon
usingMacPorts:
$ sudo port install macmon
InstallRust toolchain
Clone the repo:
git clone https://github.com/vladkens/macmon.git&&cd macmon
- Build and run:
cargo run -r
- (Optionally) Binary can be moved to bin folder:
sudo cp target/release/macmon /usr/local/bin
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 the pipe subcommand to output metrics in JSON format, which is suitable for piping into other tools or scripts. For example:
macmon pipe| jq
This command runsmacmon
in "pipe" mode and navigate output tojq
for pretty-printing.
You can also specify the number of samples to run using-s
or--samples
parameter (default:0
, which runs indefinitely), and set 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)}
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 in helping us improvemacmon
💪
macmon
is distributed under the MIT License. For more details, check out the LICENSE.
- tlkh/asitop – Original tool. Python, requires sudo.
- dehydratedpotato/socpowerbud – ObjectiveC, sudoless, no TUI.
- op06072/NeoAsitop – Swift, sudoless.
- graelo/pumas – Rust, requires sudo.
- context-labs/mactop – Go, requires sudo.
PS: One More Thing... Remember, 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 🌡️