Skip to content

zyoung11/amdtop

Repository files navigation

amdtop

AMD GPU monitor for Linux and Windows with a terminal UI.

中文文档

Example

Features

  • Real-time GPU metrics: utilization, temperature, power draw, VRAM usage
  • Smooth spring-animated gauges and bar charts
  • History chart switchable between utilization, temperature, power, and VRAM
  • Automatically adapts to small terminals (compact mode with gauge/chart toggle)
  • Server / Client mode for remote monitoring via HTTP API
  • Fully customizable colours via config file

Download

Pre-built binaries are available on the Releases page.

Linux

Download amdtop-linux-amd64, make it executable:

chmod +x amdtop-linux-amd64
./amdtop-linux-amd64

No extra dependencies — reads GPU data from sysfs (amdgpu kernel driver).

Windows

Download amdtop-windows-amd64.exe and run it. Requires AMD GPU driver with ADLX.dll (included with driver, located in C:\Windows\System32\).

Build from source

git clone https://github.com/zyoung11/amdtop.git
cd amdtop

Linux:

go build -ldflags="-s -w" .

Windows (requires MinGW-w64 for cgo):

go build -ldflags="-s -w" .

Usage

amdtop                         local TUI mode
amdtop -s -p <port>            server mode (TUI + HTTP API on port)
amdtop -s -n -p <port>         headless server mode (no TUI, for services)
amdtop -c -i <ip> -p <port>    client mode (connect to remote server)
amdtop -h, --help              show help

Local mode

./amdtop

Controls: Tab to cycle chart data, q to quit.

Server mode

Starts the TUI and a HTTP API on the specified port.

./amdtop -s -p 16969

The port is saved to the config file after first use; subsequent runs may omit -p.

API endpoint: GET /api/v1/metrics returns a JSON object with all GPU metrics.

Headless server mode

Starts the HTTP API without the TUI, suitable for running as a system service.

./amdtop -s -n -p 16969

The server polls GPU data in the background and serves it via the HTTP API. Use with service managers like nssm on Windows or systemd on Linux.

Client mode

Connects to a remote server and displays its GPU data.

./amdtop -c -i 192.168.100.1 -p 16969

IP and port are saved after first use; subsequent runs may omit -i and/or -p.

Configuration

The config file is located at ~/.config/amdtop/config.json. It is automatically created with defaults on first run.

{
  "title_color": "#e65100",
  "gauges": {
    "gpu":   "default",
    "temp":  "default",
    "power": "default",
    "vram":  "default"
  },
  "charts": {
    "util":  "#e65100",
    "temp":  "#e65100",
    "power": "#e65100",
    "vram":  "#e65100"
  },
  "default_chart": "util",
  "server_color": "#4aa84a",
  "client_color": "#58a6ff",
  "poll_interval_ms": 1000,
  "client_poll_interval_ms": 1000,
  "power_cap_w": 0
}

Gauge colours

Set a gauge to "default" to use automatic green/yellow/red switching based on value. Use a hex colour (e.g. "#e65100") to pin it to a fixed colour.

Chart colours

Four chart types (util, temp, power, vram) each have their own colour. All default to #e65100 (AMD orange).

Power cap

  • power_cap_w — manual power cap override in watts (default 0). Set to 0 to auto-detect from the GPU driver. When set, this value is used for power gauge percentage calculation and chart scaling instead of the driver-reported cap. Useful when the GPU driver doesn't report a power cap (e.g. some APUs).

Embedded config

When running as a system service (e.g. nssm on Windows as LocalSystem), the config file ~/.config/amdtop/config.json may not be reachable. In that case, the program falls back to the config.json embedded in the binary at build time.

To customise the service config, edit config.json in the project root and rebuild:

go build -ldflags="-s -w" .

The embedded config is then used automatically when the home directory config is unavailable.

Poll intervals

  • poll_interval_ms — data collection interval in local / server mode (default 1000). Minimum 100.
  • client_poll_interval_ms — HTTP polling interval in client mode (default 1000). Minimum 100.

Server / Client connection

"server": {
  "port": 16969
},
"client": {
  "ip": "192.168.100.1",
  "port": 16969
}
  • server.port — port the server listens on. Set automatically when using -s -p <port>, or edit manually.
  • client.ip — remote server IP address. Set automatically when using -c -i <ip>, or edit manually.
  • client.port — remote server port. Set automatically when using -c -p <port>, or edit manually.

License

MIT

About

AMD GPU monitor for Linux and Windows with a terminal UI

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors