AMD GPU monitor for Linux and Windows with a terminal UI.
- 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
Pre-built binaries are available on the Releases page.
Download amdtop-linux-amd64, make it executable:
chmod +x amdtop-linux-amd64
./amdtop-linux-amd64No extra dependencies — reads GPU data from sysfs (amdgpu kernel driver).
Download amdtop-windows-amd64.exe and run it. Requires AMD GPU driver with ADLX.dll (included with driver, located in C:\Windows\System32\).
git clone https://github.com/zyoung11/amdtop.git
cd amdtopLinux:
go build -ldflags="-s -w" .Windows (requires MinGW-w64 for cgo):
go build -ldflags="-s -w" .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
./amdtopControls: Tab to cycle chart data, q to quit.
Starts the TUI and a HTTP API on the specified port.
./amdtop -s -p 16969The 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.
Starts the HTTP API without the TUI, suitable for running as a system service.
./amdtop -s -n -p 16969The 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.
Connects to a remote server and displays its GPU data.
./amdtop -c -i 192.168.100.1 -p 16969IP and port are saved after first use; subsequent runs may omit -i and/or -p.
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
}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.
Four chart types (util, temp, power, vram) each have their own colour.
All default to #e65100 (AMD orange).
power_cap_w— manual power cap override in watts (default0). Set to0to 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).
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_interval_ms— data collection interval in local / server mode (default1000). Minimum100.client_poll_interval_ms— HTTP polling interval in client mode (default1000). Minimum100.
"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.
MIT
