/mactop

mactop - Apple Silicon Monitor Top

Primary LanguageGoMIT LicenseMIT

mactop

GitHub Downloads (all assets, all releases) GitHub Release

mactop is a terminal-based monitoring tool "top" designed to display real-time metrics for Apple Silicon chips written by Carsen Klock. It provides a simple and efficient way to monitor CPU and GPU usage, E-Cores and P-Cores, power consumption, and other system metrics directly from your terminal!

mactop

Compatibility

  • Apple Silicon Only (ARM64)
  • macOS Monterey 12.3+

Features

  • Apple Silicon Monitor Top written in Go Lang and CGO
  • Real-time CPU and GPU power wattage usage display.
  • Detailed native metrics for CPU cores (E and P cores) (Apple's Mach Kernel API)
  • Memory usage and swap information.
  • Network usage information
  • Disk Activity Read/Write
  • Easy-to-read terminal UI
  • Two layouts: default and alternative
  • Customizable UI color (green, red, blue, cyan, magenta, yellow, and white)
  • Customizable update interval (default is 1000ms)
  • Processes list (sorted by CPU usage)
  • Disk Storage (Used, Total, Available)
  • Party Mode (Randomly cycles through colors)
  • Optional Prometheus Metrics server (default is disabled)
  • Support for all Apple Silicon models.

Install via Homebrew

You can install mactop via Homebrew! https://brew.sh

brew install mactop
sudo mactop

Updating via Homebrew

brew update
brew upgrade mactop

Installation

To install mactop, follow these steps:

  1. Ensure you have Go installed on your machine. If not, you can install it by following the instructions here: Go Installation Guide.

  2. Clone the repository:

    git clone https://github.com/context-labs/mactop.git
    cd mactop
  3. Build the application:

    go build
  4. Run the application:

    sudo ./mactop

Usage

After installation, you can start mactop by simply running:

sudo ./mactop

sudo is required to run mactop

Example with flags

sudo mactop --interval 1000 --color green

mactop Flags

  • --interval or -i: Set the powermetrics update interval in milliseconds. Default is 1000. (For low-end M chips, you may want to increase this value)
  • --color or -c: Set the UI color. Default is white. Options are 'green', 'red', 'blue', 'cyan', 'magenta', 'yellow', and 'white'. (-c green)
  • --prometheus or -p: Set and enable the local Prometheus metrics server on the given port. Default is disabled. (e.g. -p 2112 to enable Prometheus metrics on port 2112)
  • --version or -v: Print the version of mactop.
  • --help or -h: Show a help message about these flags and how to run mactop.

mactop Commands

Use the following keys to interact with the application while its running:

  • q: Quit the application.
  • r: Refresh the UI data manually.
  • c: Cycle through the color themes.
  • p: Party Mode (Randomly cycles through colors)
  • l: Toggle the main display's layout.
  • h: Toggle the help menu.

Example Theme (Green) Screenshot (sudo mactop -c green) on Advanced layout (Hit "l" key to toggle)

mactop theme

Confirmed tested working M series chips

  • M1
  • M1 Pro
  • M1 Max
  • M1 Ultra
  • M2
  • M2 Pro
  • M2 Max
  • M2 Ultra
  • M3
  • M3 Pro
  • M3 Max
  • M4
  • M4 Pro
  • M4 Max

(If you have a confirmed working M series chip that is not listed, please open an issue, so we may add it here!)

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork mactop
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

What does mactop use to get real-time data?

  • sysctl: For CPU model information
  • system_profiler: For GPU Core Count
  • psutil: For memory and swap metrics
  • powermetrics: For majority of GPU, Network, and Disk metrics
  • host_processor_info: For CPU metrics (E and P cores) Apple Mach Kernel API in CGO

License

Distributed under the MIT License. See LICENSE for more information.

Author and Contact

Carsen Klock - @carsenklock

Project Link: https://github.com/context-labs/mactop

Disclaimer

This tool is not officially supported by Apple. It is provided as is, and may not work as expected. Use at your own risk.

Acknowledgements

  • termui for the terminal UI framework.
  • gopsutil for system memory monitoring.
  • asitop for the original inspiration!
  • htop for the process list and CPU cores inspiration!