Minimal curses dashboard for monitoring AMD GPUs via amd-smi
Project description
picomon
picomon is a tiny terminal dashboard for monitoring AMD GPUs via amd-smi. It polls basic metrics (gfx activity, memory usage, and power) and renders them as sparklines inside a curses UI so you can keep an eye on accelerators without launching a full GUI stack.
Homepage: https://omarkamali.github.io/picomon/
Why?
I like nvtop but the asserts kept crashing it on some AMD devices. picomon is a lightweight alternative that just polls metrics and renders them as sparklines, trading off ironclad accuracy checks for more reliability.
It hasn't been tested on all AMD GPUs. If it fails to run on your GPU, please open a new issue using this template.
Requirements
- Python 3.9 or newer
- The
amd-smiCLI available on your PATH (if your GPU is properly setup then you already have this) - An ANSI-compatible terminal for the curses UI
Installation
pip install picomon
Usage
After installation, run the CLI:
$ picomon
┌──────────────────────────────────────────┐ ┌──────────────────────────────────────────┐
│ GPU 0 GFX 42% UMC 21% │ │ GPU 1 GFX 78% UMC 66% │
│ PWR 135/250W (54%) VRAM 10.0/16.0GB 62% │ │ PWR 210/250W (84%) VRAM 14.5/16.0GB 90% │
│ │ │ │
│ GFX ▁▂▂▃▄▄▅▆▆▇█▇▆▅▄▃▂▁ │ │ GFX ▂▃▄▅▆▇██▇▆▅▄▂▂▃▅▆ │
│ PWR ▁▁▂▂▃▄▄▅▆▇██▇▆▅▄▂▁ │ │ PWR ▂▂▃▄▅▆▇██▇▆▅▄▃▂▂▃ │
│ VRM ▁▁▂▂▃▄▄▅▆▇███▇▆▅▄▂ │ │ VRM ▂▃▄▅▆▆▇███▇▆▅▄▃▂▂▃ │
└──────────────────────────────────────────┘ └──────────────────────────────────────────┘
Key bindings:
qto quit
Common flags:
--update-interval(seconds between refreshes, default 3)--history-minutes(rolling window to retain, default 30)--static-timeout/--metric-timeout(seconds to wait foramd-smiresponses)
These correspond to the PicomonConfig dataclass, so you can also import and reuse
picomon as a library:
from picomon import PicomonConfig, run_monitor
config = PicomonConfig(update_interval=1.5)
run_monitor(["--update-interval", str(config.update_interval)])
Development
- Run tests with
pytest(see the CI workflow for reference) - Use
scripts/publish.pyto cut a GitHub release once tags are in place
License
MIT © Omar Kamali
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file picomon-0.1.1.tar.gz.
File metadata
- Download URL: picomon-0.1.1.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4804b72181d92aa3b16f37918305d1d9ba7d72d9d3803fc04362c3712cc16c05
|
|
| MD5 |
1e5b8f5e293a773fefa11a3a86e52525
|
|
| BLAKE2b-256 |
afbcc7af9bc9bd55d1274c1e36cf4151cae7659b7f05bd602b1b53bb3e320015
|
Provenance
The following attestation bundles were made for picomon-0.1.1.tar.gz:
Publisher:
publish.yml on omarkamali/picomon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
picomon-0.1.1.tar.gz -
Subject digest:
4804b72181d92aa3b16f37918305d1d9ba7d72d9d3803fc04362c3712cc16c05 - Sigstore transparency entry: 747188919
- Sigstore integration time:
-
Permalink:
omarkamali/picomon@3cbbb345c99d783f2d05bf6bb39eb3898fec7682 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/omarkamali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3cbbb345c99d783f2d05bf6bb39eb3898fec7682 -
Trigger Event:
release
-
Statement type:
File details
Details for the file picomon-0.1.1-py3-none-any.whl.
File metadata
- Download URL: picomon-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d160ba10800fe4dd08b8b2e0e8a7404acaef0f5da246b8ed8619b146a4db3618
|
|
| MD5 |
50308e0f99b29a03e4af331fef58e9f9
|
|
| BLAKE2b-256 |
b5fc4fd645d9ecc09665fd131824ebd90be463d4f87134cf29b739fa5ce6725e
|
Provenance
The following attestation bundles were made for picomon-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on omarkamali/picomon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
picomon-0.1.1-py3-none-any.whl -
Subject digest:
d160ba10800fe4dd08b8b2e0e8a7404acaef0f5da246b8ed8619b146a4db3618 - Sigstore transparency entry: 747188920
- Sigstore integration time:
-
Permalink:
omarkamali/picomon@3cbbb345c99d783f2d05bf6bb39eb3898fec7682 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/omarkamali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3cbbb345c99d783f2d05bf6bb39eb3898fec7682 -
Trigger Event:
release
-
Statement type: