Skip to main content

nvmon

A fancy NVIDIA GPU monitor for the terminal. One Python file, no dependencies.

nvmon showing four busy H100 GPUs one under the other, the other four hidden

Install

uv tool install nvmon    # or: pipx install nvmon

No uv? Install it, or use pip install nvmon inside whichever environment you use.

Server without internet: copy nvmon.py over and run it with Python 3.6+.

Start

nvmon              # Esc, q or Ctrl+C to quit
nvmon -i 1         # refresh every second (default: 0.5)
nvmon -g 0,2,4-7   # only these GPUs
ssh -t HOST nvmon  # over ssh: -t gives it a terminal

Reading a box

  • Top edge: number and name, power against its limit, temperature, fan (if any), clock. Warnings only when something is off: SLOWED: power cap | too hot | hw brake, PCIe DEGRADED: x16 -> x8.
  • Graph: utilization over time, newest on the right. Point at it for the value at that moment.
  • GPU: how much of the time a kernel ran. cores / tensor (H100 and newer): how busy that kept the chip, and how much was Tensor Core math. One small kernel running nonstop reads GPU 100 % with cores at 30 %.
  • MEM: memory in use. CPU -> GPU, GPU -> CPU: PCIe traffic against the link's top speed.
  • Bottom edge: the processes, with run time and memory, by account and conda environment (yours unlabelled); +3 for those that did not fit.

The bottom line has the GPU numbers (click one, or press its key, to hide or show it), the keys, and a newer release when there is one.

Views: v

v goes through four views, V back. What does not fit scrolls (wheel, PgUp/PgDn).

Graphs: one under the other; two columns only when they would not fit, as here with eight GPUs in 31 lines.

nvmon with eight graphs in two columns

Processes in the graph's place: account, run time, memory, command. The wheel scrolls them; Shift+wheel or ← → sideways.

nvmon with each GPU's processes in place of its graph

Numbers only and GPU and MEM only: narrow, always one column, for a window beside another.

Numbers only, scrolled down GPU and MEM only
nvmon with the numbers alone nvmon with GPU and MEM alone

Processes and jobs: p

A job is a process, or a launcher (torchrun, deepspeed…) with its workers.

  • Pick one: click a process, or press Tab (Tab and the arrows move on). Its GPUs stand out, the list opens with it picked, and the bottom line sums it up.
  • Pick a GPU's jobs: click anywhere else in its box. The same again lets go, and closes the list it opened.
  • f, or a double click: only the picked jobs' GPUs; again for all.
  • p: every job in a list. Click a heading to sort, again to reverse (or s, r). ← → scroll the picked job's command. Esc, or a click on an empty spot, lets go.
  • t stops the picked jobs of yours (SIGTERM), k kills them (SIGKILL): after a y, and only those still the jobs you picked.

The list, busiest first, one job picked; and that job with f:

nvmon with the process list open and a torchrun job picked

nvmon showing only the two GPUs of the picked job

Themes: c

c goes through the themes, C back:

  • nvmon, the default
  • Hiroshige, Hokusai, O'Keeffe, Van Gogh, Bénédictus, Cassatt, Greek, Tam, Homer, Demuth: palettes of works at the Met, from MetBrewer
  • Rosé Pine, from the editor theme
  • black and white, and black on white

nvmon's themes, one box in each

All keys

Key Does
v / V next / previous view
c / C next / previous theme
p process list, open or close
click, Tab, ↑ ↓ pick a job
click a GPU pick its jobs
f, double click only the picked jobs' GPUs, or all
t, k, then y stop (SIGTERM) or kill (SIGKILL) the picked jobs
click a heading, s, r sort the list, by the next heading, the other way
wheel, ← → scroll; sideways the commands
PgUp, PgDn scroll the GPUs
0-9, click a number hide or show a GPU
Esc a step back, then quit
q, Ctrl+C quit

Hold Shift to select text.

It remembers

The view, theme, list order and hidden GPUs, for each computer you connect from, in ~/.config/nvmon/settings.json (%APPDATA%\nvmon on Windows). Delete it to start afresh.

Terminals

  • Line characters drawn two cells wide (Xshell, PuTTY and the like, set up for Korean, Chinese or Japanese): nvmon notices and draws in ASCII. No 24-bit color reported: 256 colors.
  • Boxes still broken: use a font with one-cell line characters (D2Coding, Cascadia Mono, JetBrains Mono, DejaVu Sans Mono) and UTF-8.
  • Windows: use Windows Terminal. There is no mouse, and no t / k.
  • nvmon asks PyPI once at start for a newer release; NVMON_NO_UPDATE_CHECK=1 turns that off.

License

MIT

Metadata

Release files for nvmon 0.3.3

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

Source distribution (sdist)

Source distribution for nvmon 0.3.3
File Size Uploaded
nvmon-0.3.3.tar.gz 42.7 kB Details

Built distribution (wheel)

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

Total release size: 86.4 kB

Release files / nvmon-0.3.3.tar.gz

Download URL nvmon-0.3.3.tar.gz
Size 42.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b327519deb7952a02ee982e2acdb4d8dba20422e27b6624ca6f373791178415a
BLAKE2b-256 checksum
How to use checksums
49023caf1ef3fc8f81edf9d7a8aab4180d63ffc07dc080569f2e2869156f62c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 30, 2026.

Transparency log

Release files / nvmon-0.3.3-py3-none-any.whl

Download URL nvmon-0.3.3-py3-none-any.whl
Size 43.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f72eb3bc11b2c09dfd66d135f5ba4021e40d296fff34892413cde032217c3ec
BLAKE2b-256 checksum
How to use checksums
115baae104f98e7258dde9ec6bd2d9479fda7035f963333ca74bbf5493f68ddb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.5

2 release files

0.3.4

2 release files

This release

0.3.3 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

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