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.
  • 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). + opens the process list.

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, and the bottom line sums it up.
  • f, or a double click: only its 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 a job of yours (SIGTERM), k kills it (SIGKILL): each after a y, and only if it is still the job 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
f, double click only the picked job's GPUs, or all
t, k, then y stop (SIGTERM) or kill (SIGKILL) the picked job
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.2

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.2
File Size Uploaded
nvmon-0.3.2.tar.gz 40.1 kB Details

Built distribution (wheel)

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

Total release size: 81.2 kB

Release files / nvmon-0.3.2.tar.gz

Download URL nvmon-0.3.2.tar.gz
Size 40.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2e509ee9426a6d64cf052fb04ff0eefa493923044cffe303a9bba4acfb534ca8
BLAKE2b-256 checksum
How to use checksums
4791c79d70934f10508c1f6f55f88a503cf8327a65c19a5d03e47d1810c66f9e
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.2-py3-none-any.whl

Download URL nvmon-0.3.2-py3-none-any.whl
Size 41.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
79bc33845a9562923fda76be8db494c57a49d15cbec87c287974a66a7c65e3fe
BLAKE2b-256 checksum
How to use checksums
c680ffd0ea89395a040dba2c4b2bc507d299ec04c5fd2d3756531db11a537beb
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

0.3.3

2 release files

This release

0.3.2 This release

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