Skip to main content

metop

A Python-based GPU/ANE monitoring tool for Apple Silicon Macs. Like nvtop or nvidia-smi, but for Metal and the Neural Engine.

Features

  • GPU Monitoring (no sudo required)

    • Device, Renderer, and Tiler utilization percentage
    • GPU memory usage (in-use vs allocated)
    • Top GPU-active processes from AGX user client GPU time deltas
    • Selectable process list with keyboard and mouse-wheel scrolling
    • Real-time sparkline history
  • System Monitoring

    • CPU usage and load average
    • Memory usage and swap
    • Disk usage and read/write throughput
  • ANE + Power Metrics (requires sudo / powermetrics)

    • CPU/GPU/ANE/Total power (mW/W)
    • GPU/ANE frequency and active/idle residency (when available)
    • ANE utilization estimated from residency (fallback: power-based)
  • Display Modes

    • Default stacked layout: top for GPU+ANE, CPU, and power; middle for memory, disk, and history; bottom for top GPU processes
    • Runtime switching with m (1 for stacked, 2 for classic)
  • System Info

    • Chip detection (M1/M2/M3/M4 series)
    • CPU/GPU/ANE core counts
    • Total memory

Installation

# Install from source
pip install -e .

# Or with optional fast IOKit bindings
pip install -e ".[fast]"

Usage

# Basic monitoring (GPU only)
metop

# Enable ANE + power metrics (requires sudo)
sudo metop

# Custom refresh interval (500ms)
metop -i 500

# Disable ANE/powermetrics even with sudo
metop --no-ane

# Start in the classic layout
metop --layout classic

# Debug mode (single sample, raw output)
metop --debug

Screenshot

metop main screen

How It Works

GPU Monitoring

Uses IOKit via ioreg command to query the AGXAccelerator driver's PerformanceStatistics. This provides:

  • Device Utilization % - Overall GPU busy percentage
  • Renderer Utilization % - Shader/compute units
  • Tiler Utilization % - Geometry processing
  • Per-process GPU activity by diffing each AGX user client's accumulatedGPUTime

Per-process activity is reported as GPU time over the sample window, normalized into an estimated percentage. This is a best-effort approximation, not a direct hardware residency counter.

ANE + Power Metrics

Uses powermetrics (-f plist) to collect CPU/GPU/ANE power and residency/frequency data. Requires sudo because powermetrics needs root access.

ANE utilization is estimated from:

  • preferred: ANE active residency reported by powermetrics
  • fallback: power-based estimate
utilization = (current_power / max_power) * 100%

Requirements

  • macOS Monterey (12.0) or later
  • Apple Silicon Mac (M1/M2/M3/M4 series)
  • Python 3.9+
  • rich (terminal UI)
  • psutil (memory stats)

License

MIT License

Metadata

Release files for metop 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for metop 0.2.1
File Size Uploaded
metop-0.2.1.tar.gz 28.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for metop 0.2.1
File Interpreter ABI Platform
metop-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 58.8 kB

Release files / metop-0.2.1.tar.gz

Download URL metop-0.2.1.tar.gz
Size 28.2 kB
Tags Source
SHA-256 checksum
How to use checksums
bcfe1dcf28aefd09ce6c2414842658fd50825bf19675960f5901f500691d09ff
BLAKE2b-256 checksum
How to use checksums
56f4a198bc351a739fb38ed52e6def61c96f14f51f65fb7a0e4a2fe3fdf7c80a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.

Transparency log

Release files / metop-0.2.1-py3-none-any.whl

Download URL metop-0.2.1-py3-none-any.whl
Size 30.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
410b81b870bd5b1da7a324684c72b71a035ee1947f3411dce0be17874dd11d0e
BLAKE2b-256 checksum
How to use checksums
143fdaedbaff990f0b974aba6169fb3f207bd1202651023f4cf85e1dfe7b0ce4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page