Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GPU Pulse

English | 简体中文

GPU Pulse icon

GPU Pulse is a compact native macOS menu-bar app for checking GPU memory and utilization across multiple servers. It talks directly to the servers over your existing SSH configuration—there is no hosted backend and no monitoring data is uploaded elsewhere.

Dashboard

GPU Pulse dashboard showing four generic servers

The screenshot uses generic SERVER 1–4 labels for privacy. At runtime, the app lists the explicit Host entries from ~/.ssh/config and lets you choose the servers to monitor. Dashboard labels use the part before the first dot, so zxcpu1.cse.example.edu appears as ZXCPU1.

GPU Process Details

GPU Pulse server detail showing privacy-safe example GPU processes

Click the small indigo three-line button beside MEM in a server card header. It opens the latest process snapshot for that server without starting another SSH connection.

  • GPU is the device index (#0 through #7). When one GPU has multiple processes, its index appears only on the first row and the rows share one tinted group.
  • USER is the remote operating-system user that owns the process. The slim indigo rail marks the current SSH login user.
  • PROCESS is the executable reported by the remote process table.
  • TIME is elapsed process runtime, not a start timestamp.
  • MEM is GPU memory used by that process. Its green/yellow/red text follows the parent GPU’s current utilization color; it does not rate the memory value itself.

PID is intentionally not displayed. The screenshot uses generic server, username, and process data.

What It Shows

  • Four servers are shown in a compact 2×2 grid.
  • Additional servers continue in the same two-column grid with vertical scrolling and a compact scrollbar. Four or fewer servers do not show a scrollbar.
  • Each row represents one GPU. Bar length is memory usage; green, yellow, and red represent GPU utilization.
  • MINE highlights GPUs running processes owned by your SSH login user.
  • Each server card has one indigo three-line detail button. It opens a compact nvitop-style table covering all GPUs on that server.
  • Multiple processes on the same GPU share a compact tinted group, with the GPU index shown only once and fixed-width TIME and MEM columns.
  • Process MEM values use the same green/yellow/red utilization color as their GPU bar.
  • The detail panel grows to show a typical eight-GPU server at once and scrolls only when the process list would exceed a safe screen height.
  • Left-click the menu-bar icon to open the monitor.
  • Right-click it to change the refresh interval, toggle Launch at Login, or quit GPU Pulse.
  • Only SSH hosts selected in Servers… are contacted.
  • On first launch, the Servers window opens automatically before any SSH host is contacted.
  • Polling runs only while the panel is open. Closing the panel pauses SSH queries.
  • Clicking the desktop or another app automatically closes the panel.

Install

  1. Download GPU-Pulse-macOS.zip from the latest release.
  2. Unzip it and move GPU Pulse.app into /Applications.
  3. Control-click the app and choose Open on the first launch if macOS asks you to confirm the locally signed build.
  4. On first launch, select the SSH hosts to monitor in the Servers window. You can reopen it later from the menu-bar icon’s right-click menu.

GPU Pulse reads explicit SSH aliases from your existing ~/.ssh/config; no separate app configuration file is needed. It requires macOS 13 or newer. Remote hosts must provide nvidia-smi and key-based SSH access.

Usage

  • Open/close: left-click the menu-bar chart icon.
  • Refresh now: click the circular arrow in the upper-right corner.
  • GPU process details: click the indigo three-line button beside MEM in a server card header.
  • Servers: right-click the menu-bar icon, choose Servers…, then select any number of hosts. The selection is stored only on this Mac.
  • Refresh frequency: choose 5, 10, 30, or 60 seconds. The default is 10 seconds.
  • Launch at login: enable it from the right-click menu. macOS may ask you to approve it in System Settings → General → Login Items.
  • Quit: choose Quit GPU Pulse from the right-click menu.

Right-click Menu

GPU Pulse menu-bar context menu

Right-click the GPU Pulse menu-bar icon to access its controls without opening the dashboard:

  • Servers… opens the SSH Host selection window.
  • Launch at Login starts GPU Pulse automatically after you sign in to macOS.
  • Refresh Interval selects a 5, 10, 30, or 60-second polling interval.
  • Quit GPU Pulse stops monitoring and closes the application.

SSH connections are multiplexed for up to 60 seconds to avoid repeating jump host and authentication handshakes. A reconnect may still occur after that idle window expires.

Build from Source

cd app
swift build -c release

The monitored hosts are selected from the explicit Host entries in your local ~/.ssh/config; wildcard entries are ignored and full host names are not embedded in the app.

Repository Layout

Path Description
app/ Current native SwiftUI macOS application
web/ Previous Streamlit web version
assets/ App icon and privacy-safe README screenshots

Previous Web Version

The original Streamlit monitor remains available in web/:

cd web
pip install pandas streamlit
streamlit run monitor.py

It is retained for reference and is no longer the primary version.

About

Monitor GPU usage across servers and quickly find available GPUs — like nvidia-smi in your macOS menu bar.

Resources

Stars

15 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages