Open source · Apache-2.0 · one static binary

siltide finds every accelerator in the machine

Fifteen vendors: NVIDIA, AMD, Intel, Apple silicon, Huawei Ascend, AWS Neuron and nine more. It shows which process holds each device, how hot it runs, and what it was doing ten minutes ago.

siltide

01 Why

Why siltide

Six questions that come up when a job is slow or a device sits idle. Each one names the tab that answers it.

Overview

Which device is idle while a pod still holds it?

Fleet totals and per-device state land on one screen. Idle-allocated devices get flagged there too.

Workloads

Which workload is wasting spend?

Set your own price per hour, and siltide turns held devices into a spend and waste figure per workload.

Kubernetes · Nodes

Which pod, and which Slurm job, owns this device?

A process traces back through its container to the pod and the workload. Slurm jobs get the same treatment.

Links

Is this device isolated on the fabric?

PCIe width, NVLink state, and a topology matrix show who shares a switch with whom.

History

What happened 15 minutes ago?

Every metric can be scrubbed back through the window it kept. Events sit right on the timeline.

Health

Is this reading real, or a guess?

A health score comes with the reasons behind it. What siltide could not measure shows up as N/A, never as zero.

02 The interface

16 tabs

Tabs with no data are hidden. Links needs link data, Kubernetes needs a pod source.

OverviewFleet summary, top processes, alerts
DevicesTable plus a full detail pane
ProcessesSortable, searchable, pod-aware
MemoryUsage, bandwidth, ECC, remaps
PowerDraw, cap, energy, throttle
ThermalsCore and memory temperature
LinksPCIe, NVLink, topology matrix
HistoryThe time machine
EventsXids, throttles, process starts
NodesPer-node totals across a fleet
NetworkNICs and InfiniBand
KubernetesPods, describe, logs
WorkloadsCost, waste, efficiency
DashboardReliability table, wide charts
Health0-100 score, every deduction
HelpKeys, filters, commands

03 Keys

Keyboard first

Every action is rebindable in the config. The mouse works too: click a tab, a row, or a header.

KeyAction
10jump to a tab
tab shift+tabnext or previous tab
/search
:command bar, with Tab completion
h , .open history, scrub back or forward
s Ssort by column, reverse the sort
d ldescribe the pod, show its logs
ctrl+n ctrl+pnext or previous node
ppause the display
x Xmark a row, or every row in view
y Ycopy the marked ids, or the command for them
ctrl+eexport the table to CSV
?help

04 Hardware

15 vendors

NVIDIA and Apple silicon run on real hardware today. The rest are built against each vendor's own tool output, one fixture per parser. The full table, with sources, is in the README.

A ● marks a vendor confirmed on real hardware. The rest are built against the vendor’s own documented tool output, with a captured fixture behind every parser.

Every vendor, and what it is read with
VendorSource
NVIDIANVML, dlopen, no cgo
Apple siliconioreg, IOReport, SMC
AMDsysfs, DRM fdinfo
Intelsysfs, DRM fdinfo
Huawei Ascendnpu-smi
AWS Neuronneuron-ls, neuron-monitor
Cambriconcnmon
Enflameefsmi
Hygonhy-smi
Iluvatar CoreXixsmi
Kunlunxinxpu_smi
MetaXmx-smi
Moore Threadsmthreads-gmi
Birenbrsmi
VastAIPCI sysfs

05 Measured

What it costs

Measured on one machine, named below the table. Each row says how to repeat it. No comparison against other tools.

0.03sto the first rendered snapshot
19MBresident, with 17 devices in view
0.38msto redraw the Overview, 200 by 60
11µsper keystroke in the filter bar
All nine measurements, and how to repeat each one
Measurement Result How
First rendered snapshot, simulated fleet0.03 stime siltide --demo --once, 20 runs, median
First rendered snapshot, the machine below0.52 stime siltide --once, 20 runs, median; 0.43 s of it is probing 15 vendors
Memory at rest, the interface19 MBresident size sampled every 2 s for 24 s, median, 17 devices in view
Memory at rest, the headless collector25 MBsame sampling over 30 s, serving the API and /metrics
One keystroke in the filter11 µsgo test -bench Filter -count=5, mean; parses the query and matches every device and process in view
Redrawing the Overview0.38 msgo test -bench Render -count=5, mean, 200 by 60 cells
Redrawing the Dashboard0.51 msgo test -bench RenderDashboard -count=5, mean
One collection pass, 64 devices0.60 msgo test -bench Collect/64 -count=5, mean, excluding what the vendor tool costs
Writing one history point7.5 µsgo test -bench Record -count=5, mean

Measured on an Apple M5 with 10 cores and 24 GB, macOS 26.6.2, Go 1.26.5, siltide v0.0.37-main.1-4-g16fd798. The interface figures use the simulated fleet of 17 devices; the hardware figure is this machine and its single Apple GPU, where one vendor probe takes most of the startup. A Linux host with eight NVIDIA cards will not reproduce these numbers, and the startup figure in particular moves with how many vendors are present. Run make bench for the last four rows.

06 The name

The name

Silicon and tide: the rise and fall of load across a room full of silicon. There is no vendor in the name on purpose. No GPU, no CUDA, no NPU. Fifteen accelerator families are read the same way here, and the name should not pick one of them.

07 Install

Install

One binary. Nothing to run first, nothing to point it at.

curl -fsSLO https://raw.githubusercontent.com/mesutoezdil/siltide/main/packaging/install/install.sh
sh install.sh

Two steps rather than curl | sh, so you can read the script before you run it. It picks the build for this machine, verifies it against the published checksums, and installs into /usr/local/bin.

brew install mesutoezdil/tap/siltide
go install github.com/mesutoezdil/siltide@latest
nix run github:mesutoezdil/siltide -- --demo
docker run --rm -p 9800:9800 --gpus all --pid=host \
  -e NVIDIA_DRIVER_CAPABILITIES=utility \
  ghcr.io/mesutoezdil/siltide:latest

Then: siltide --demo to explore without hardware, or siltide to probe what is on the machine.

Contributing

Issues and pull requests are welcome. A missing vendor, a wrong number or a rough edge is worth reporting, whether or not you fix it yourself.

Star on GitHub →