Skip to main content

Real-time macOS hardware performance monitoring for Apple Silicon (M1/M2/M3/M4) with AI workload focus - enhanced asitop alternative

Project description

MSILTOP - MacOS Performance Monitor for Local AI

Python 3.8+ macOS Apple Silicon License: MIT

Real-time macOS hardware performance monitoring CLI tool for Apple Silicon Macs (M1/M2/M3/M4+) with AI workload focus

MSILTOP is a Python-based nvtop-inspired command line tool specifically designed for Apple Silicon Macs. This enhanced and actively maintained fork of the original fluidtop project provides comprehensive hardware monitoring with additional features, support for newer Apple Silicon chips, and optimizations for modern terminal emulators including Ghostty.

📦 Installation & Usage

Quick Start with UV (Recommended)

# Install UV package manager (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Run MSILTOP directly without installation (one-time usage)
sudo uvx msiltop

# Run with custom options
sudo uvx msiltop --interval 2 --theme cyan --avg 60

# Or install as a tool for regular usages
uv tool install msiltop@latest -U
sudo uv tool run msiltop
# to update msiltop
uv tool install msiltop@latest -U
# Run with custom options
sudo uvx msiltop --interval 2 --theme cyan --avg 60

Install from PyPI

# Install with pip
pip install msiltop

# Run after installation
sudo msiltop

🚀 Key Features & Capabilities

Hardware Monitoring

  • Real-time CPU monitoring - Individual core utilization and frequency tracking
  • GPU performance tracking - Apple GPU usage, memory, and power consumption
  • Neural Engine (ANE) monitoring - AI/ML workload detection and utilization
  • Memory usage monitoring - RAM and swap memory tracking
  • Power consumption analysis - CPU/GPU power draw with thermal throttling detection
  • Temperature monitoring - System thermal state and throttling alerts

Apple Silicon Support

  • Complete Apple Silicon coverage - M1, M2, M3, M4, and future chip support
  • Optimized for modern terminals - Enhanced Ghostty compatibility and performance
  • Hardware-specific metrics - TDP specifications for all variants
  • Individual core monitoring - Detailed per-core performance and efficiency tracking

AI & Machine Learning Focus

  • AI workload detection - Specialized monitoring for machine learning tasks
  • Neural Engine utilization - Track AI inference and training workloads
  • Memory usage optimization - Critical for large model performance
  • Future ML framework integration - Planned support for popular AI libraries

Development Installation

# Clone repository
git clone https://github.com/pratikdevnani/msiltop.git
cd msiltop

# Install in development mode
uv sync
sudo uv run msiltop

🎛️ Command Line Options & Configuration

msiltop [OPTIONS]

Options:
  --interval INTERVAL   Display refresh rate in seconds (default: 1.0)
  --theme THEME       Color theme selection (default: cyan)
                     Options: default, dark, blue, green, red, purple, orange, cyan, magenta
  --avg AVG           Power averaging window in seconds (default: 30)
  --show_cores        Enable individual CPU core monitoring
  --max_count COUNT   Restart powermetrics after N samples (stability)
  -h, --help          Show help message and exit

Usage Examples

# Basic monitoring with 1-second refresh
sudo msiltop

# High-frequency monitoring for AI workloads
sudo msiltop --interval 0.5 --show_cores

# Long-term monitoring with 60-second power averaging
sudo msiltop --avg 60 --max_count 1000

# Custom theme
sudo msiltop --theme purple

🔧 How MSILTOP Works

MSILTOP leverages macOS's built-in powermetrics utility to access hardware performance counters with minimal system impact. Root privileges are required due to powermetrics security requirements.

Technical Architecture

  • CPU/GPU Utilization: Active residency measurements via powermetrics
  • Power Consumption: Hardware energy counters and thermal state monitoring
  • Memory Statistics: psutil virtual memory and swap tracking
  • System Information: sysctl CPU details and system_profiler GPU specifications
  • Hardware Database: Built-in TDP specifications for all Apple Silicon variants

Note: Bandwidth monitoring was removed as macOS 13 deprecated bandwidth support in powermetrics.

System Requirements

  • Hardware: Apple Silicon Mac (M1, M2, M3, M4, or newer)
  • Operating System: macOS Monterey (12.0) or later
  • Python: Python 3.8+ (automatically managed with UV)
  • Privileges: Root access required for powermetrics

Migration from asitop

MSILTOP is a drop-in replacement for asitop with identical command-line interface:

# Replace this:
sudo asitop

# With this:
sudo msiltop

📚 Documentation

For detailed information, troubleshooting, and frequently asked questions, see our comprehensive FAQ which covers:

  • Apple Silicon Architecture: Understanding E-CPU vs P-CPU cores
  • System Requirements: Supported chips and compatibility
  • Monitoring Details: Power accuracy, Neural Engine tracking, and more
  • Troubleshooting: Common issues and solutions
  • Migration Guide: Differences from asitop and compatibility

🛠️ Development & Publishing

Automated Release Process

MSILTOP uses GitHub Actions to automate the entire release process. No manual steps required!

🧪 Development Workflow

# Setup development environment
git clone https://github.com/pratikdevnani/msiltop.git
cd msiltop
uv sync

# Make changes to code
# Test changes locally
sudo uv run msiltop

# Run with development options
sudo uv run msiltop --interval 0.5 --show_cores

# Test build (optional)
uv build
sudo uv run msiltop --help  # Verify build works

🐛 Contributing

  • Report bugs and request features via GitHub Issues
  • Submit pull requests for bug fixes and improvements
  • Improve documentation and examples
  • Test on different Apple Silicon variants

📄 License

MIT License - maintaining compatibility with the original asitop project.

🙏 Acknowledgments

This project builds upon the excellent foundation created by Timothy Liu with the original asitop project. We extend our gratitude for creating the groundwork for Apple Silicon performance monitoring.

MSILTOP is a lightweight fork of FluidInference's fluidtop. The motivation for this fork is to keep the tool lean and focused by removing features that are not necessary, based on my understanding of the core use cases.


Keywords: Apple Silicon monitoring, M1 M2 M3 M4 performance, macOS system monitor, AI workload tracking, Neural Engine monitoring, GPU utilization, real-time hardware stats, terminal performance tool, powermetrics CLI, asitop alternative

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

msiltop-0.2.2.tar.gz (184.7 kB view details)

Uploaded Source

Built Distribution

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

msiltop-0.2.2-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file msiltop-0.2.2.tar.gz.

File metadata

  • Download URL: msiltop-0.2.2.tar.gz
  • Upload date:
  • Size: 184.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for msiltop-0.2.2.tar.gz
Algorithm Hash digest
SHA256 ec31055aa41e3eabb157cfdd91a82f3ef5941f00db3137955d5cbb24e045430b
MD5 74d864ecdec617b165e4ccf36cc1e96f
BLAKE2b-256 b86a7a2cabf13cb5874facf92b5baeaf3e0ce9be0006d6f726badc5fe3c74b1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for msiltop-0.2.2.tar.gz:

Publisher: release.yml on pratikdevnani/msiltop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file msiltop-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: msiltop-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for msiltop-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2bf284483157dc2c3910ae11f4e77b660118a284c77e0ab2f077c6799b8b98d4
MD5 e85c9f7b31b7e3d46a461f43f70054b8
BLAKE2b-256 d6590f8e386d83d89efd690bc1c82fddc01b0e6a5c79b6ab97fa1f61b08d4911

See more details on using hashes here.

Provenance

The following attestation bundles were made for msiltop-0.2.2-py3-none-any.whl:

Publisher: release.yml on pratikdevnani/msiltop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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