ALL-SMI(1)

NAME
all-smi - Command-line utility for monitoring GPU hardware

SYNOPSIS
all-smi [local] [OPTIONS]
all-smi view --hosts URL... | --hostfile FILE [OPTIONS]
all-smi api [OPTIONS]
all-smi help [COMMAND]

DESCRIPTION
all-smi is a comprehensive hardware monitoring tool that provides real-time information about GPU/NPU utilization, memory usage, temperature, power consumption, chassis-level metrics, and other system information. It supports various hardware platforms including NVIDIA GPUs, AMD GPUs, Apple Silicon, NVIDIA Jetson, Google Cloud TPUs, Tenstorrent NPUs, Rebellions NPUs, and Furiosa NPUs. Chassis monitoring provides node-level power consumption tracking (CPU+GPU+ANE), thermal pressure monitoring (Apple Silicon), and BMC sensor integration for inlet/outlet temperatures and fan speeds on server systems. The tool can run in three primary modes:

local mode
    An interactive TUI for monitoring local GPUs/NPUs (default when no command specified)

view mode
    An interactive TUI for monitoring remote nodes via API endpoints

api mode
    A Prometheus-compatible metrics endpoint for integration with monitoring systems

COMMANDS

local
    Run in local mode, monitoring local GPUs/NPUs with an interactive TUI. This is the default mode if no command is specified. No sudo required on macOS (uses native APIs).

view
    Run in remote view mode, monitoring remote nodes via API endpoints. Requires either --hosts or --hostfile option. Does not require sudo permissions.

api Run in API mode, exposing metrics in Prometheus format via HTTP endpoint. No sudo required on macOS (uses native APIs).

help
    Display help information about all-smi or a specific command.

OPTIONS

  Common Options

-h, --help
    Display help information

-V, --version
    Display version information

  Local Mode Options

-i, --interval SECONDS
    The interval in seconds at which to update the hardware information. Default: 1 second (Apple Silicon) or 2 seconds (others)

  View Mode Options (Remote Monitoring)

--hosts URL...
    (Required) A list of host addresses to connect to for remote monitoring. Multiple hosts can be specified. Format: http://hostname:port or https://hostname:port

--hostfile FILE
    (Required) A CSV file containing a list of host addresses to connect to for remote monitoring. The file should contain one URL per line. Either this or --hosts must be specified.

-i, --interval SECONDS
    The interval in seconds at which to update the hardware information. If not specified, uses adaptive interval based on node count:

    •   1-10 remote nodes: 3 seconds

    •   11-50 remote nodes: 4 seconds

    •   51-100 remote nodes: 5 seconds

    •   101+ remote nodes: 6 seconds

  API Mode Options

-p, --port PORT
    The port to listen on for the API server (default: 9090). Use 0 to disable TCP listener when using Unix socket.

-i, --interval SECONDS
    The interval in seconds at which to update the hardware information (default: 3)

--processes
    Include the process list in the API output

-s, --socket [PATH]
    Unix domain socket path for local IPC (Unix only). When specified without a path, uses platform default:

    •   Linux: /var/run/all-smi.sock (fallback to /tmp/all-smi.sock if no write permission)

    •   macOS: /tmp/all-smi.sock
    Socket permissions are set to 0600 (owner-only access) for security. Can be used together with --port for simultaneous TCP and Unix socket listeners.

INTERACTIVE CONTROLS (LOCAL/VIEW MODE)

Tab / Shift+Tab
    Navigate between different tabs (GPU, CPU, Memory, Chassis, Network, Disk)

Up/Down Arrow Keys, j/k
    Navigate through items in the current tab

Left/Right Arrow Keys, h/l
    Scroll horizontally when content exceeds screen width

Page Up/Page Down
    Scroll through items page by page

Home/End
    Jump to the first/last item

r   Refresh the display immediately

d   Sort by default (hostname+index)

f   Toggle GPU process filter (show only processes with GPU memory usage)

g   Sort by GPU memory usage

m   Sort by memory percentage

p   Sort by PID

u   Sort by utilization

c   Toggle per-core CPU display

h / 1
    Toggle help screen

q, Ctrl+C
    Quit the application

SUPPORTED PLATFORMS

NVIDIA GPUs
    Full support via nvidia-smi, including CUDA information, PCIe status, and performance states

AMD GPUs
    Support for Radeon and Instinct GPUs via ROCm/libamdgpu_top, including VRAM/GTT memory tracking and fdinfo-based process monitoring

Apple Silicon
    Native support for M1/M2/M3/M4 series with Metal API integration, ANE power monitoring, and thermal pressure tracking

NVIDIA Jetson
    Tegra-specific metrics with DLA (Deep Learning Accelerator) support

Google Cloud TPUs
    Support for TPU v2-v7/Ironwood architectures, HBM memory tracking, and integration with libtpu/JAX workflows

Tenstorrent NPUs
    Support for Grayskull and Wormhole architectures with multiple temperature sensors and clock domains

Rebellions NPUs
    Support for ATOM, ATOM+, and ATOM Max variants with PCIe Gen4 interface

Furiosa NPUs
    Support for RNGD architecture with 8-core NPUs and PE utilization tracking

x86 CPUs
    Intel and AMD CPU monitoring on Linux systems

API ENDPOINTS (API MODE)

/metrics
    Prometheus-compatible metrics endpoint with hardware statistics

/health
    Health check endpoint returning "OK"

EXAMPLES

Monitor local hardware in interactive TUI:
    all-smi
    or
    all-smi local

Start API server on default port 9090:
    all-smi api

Start API server on custom port with 5-second interval:
    all-smi api --port 8080 --interval 5

Start API server with Unix socket (default path):
    all-smi api --socket

Start API server with TCP and Unix socket simultaneously:
    all-smi api --port 9090 --socket /tmp/all-smi.sock

Start API server with Unix socket only (no TCP):
    all-smi api --port 0 --socket

Access metrics via Unix socket:
    curl --unix-socket /tmp/all-smi.sock http://localhost/metrics

Monitor local hardware with custom interval:
    all-smi local --interval 5

Monitor remote hosts (requires API endpoints):
    all-smi view --hosts http://node1:9090 http://node2:9090

Monitor hosts from file:
    all-smi view --hostfile cluster_hosts.csv

Monitor remote cluster with custom interval:
    all-smi view --hostfile hosts.csv --interval 10

FILES

hosts.csv
    Example hostfile format for remote monitoring. One URL per line:
    http://node001:9090
    http://node002:9090
    https://node003:9443

ENVIRONMENT

RUST_LOG
    Set logging level (e.g., debug, info, warn, error)

NOTES

•   On macOS, no sudo permissions are required (uses native APIs: IOReport, SMC, NSProcessInfo)

•   Remote monitoring requires the target hosts to be running all-smi in API mode

•   The tool automatically detects available hardware and loads appropriate drivers

•   Connection limits are optimized for high-scale deployments (128+ nodes)

EXIT STATUS

0   Successful execution

1   General error or invalid arguments

130 Interrupted by Ctrl+C (SIGINT)

143 Terminated by SIGTERM

BUGS
Report bugs at: https://github.com/lablup/all-smi/issues

AUTHOR
Written by Jeongkyu Shin <inureyes@gmail.com>

COPYRIGHT
Copyright (C) 2025 Jeongkyu Shin.
License: MIT OR Apache-2.0
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

SEE ALSO
nvidia-smi(1) Project homepage: https://github.com/lablup/all-smi