npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

gpu-observatory

v2.1.0

Published

Self-hosted, push-based dashboard showing which user and process is using every NVIDIA GPU across your hosts, plus CPU, memory, disk and Slurm.

Readme

GPU Observatory

在一个紧凑的面板里,查看多台主机的显卡由哪个用户、哪个进程占用。

English · 给 Agent 的部署文档 · 安全说明 · MIT 许可

这是一个自托管、主动上报的 NVIDIA GPU 监控面板,同时支持 CPU、系统内存以及可选的 Slurm 队列。各台主机向中心服务器推送数据,登录后统一查看。

GPU 总览与进程明细,全部为虚构数据

所有效果图均来自独立的虚拟面板。主机名、用户、任务和指标全部为合成数据,不包含真实部署信息。

用户与设备管理

管理员可以创建用户账号,并查看仅含所属用户、设备名称和 GPU 型号的设备清单。每个用户拥有独立的“我的设备”页面,只查看和管理自己的设备;可以添加、重命名和移除设备。点击“添加设备”后复制安装命令,在自己的 Linux GPU 服务器上运行,即可自动安装依赖、注册到当前中心并通过隔离的 PM2 启动上报端,无需 sudo。安装链接 15 分钟有效,只能注册一次。

用户和设备管理,全部为虚构数据

用户管理与升级文档包含账号权限、一键安装、撤销凭据、失败恢复和旧版本迁移。原账号自动成为管理员,原设备继续归它所有。

功能

  • 历史分析:SQLite 保存历史汇总,查看每日利用率、显存趋势、GPU 用量与进程用户占卡排行;支持日期和设备筛选。存储与统计口径
  • GPU 利用率、显存、温度、功耗;展开查看用户名、PID、进程名与占用显存。
  • CPU 独立标签页:总利用率、各核心热力图、负载、进程占用和用户。
  • 内存独立标签页:RAM、可用内存、缓存、Swap、带用户名的进程 RSS 排名。RSS 包含共享页,不能直接相加作为用户独占内存。
  • 硬盘独立标签页:本地物理文件系统的总量、已用/可用空间、占用率、挂载点、设备和只读状态;并后台扫描可读的共享数据根目录(/mnt/ssd、/mnt/data_*、/mnt/nas/*),按顶层目录 owner 提供尽力而为的按用户用量统计。网络、临时及无权限目录不计入或标记为部分结果。
  • 可选 Slurm 面板:账号可见的排队/运行任务、分区、原因、优先级、等待和运行时长;并新增按用户汇总的参数表,展示全集群的 FairShare 因子、标准化份额、已用/有效用量(带衰减)以及运行中 GPU / CPU 小时(由当前运行作业的 TRES 分钟数换算),数据只读取自 sshare。前端每秒推算时长,过期数据停止推算。
  • 中文/英文切换、紧凑布局、搜索、空闲筛选、点击展开、移动端适配、PWA 安装。
  • GPU/CPU/内存/硬盘每 5 秒上报;Slurm 至少间隔 60 秒查询。中心服务器不会通过 SSH 轮询主机。
  • 密码登录、每台主机独立令牌、HTTPS、接口限流;PM2 用户态部署,无需 sudo。

与其他方案的对比

GPU Observatory 介于单机终端工具和完整的监控体系之间,面向共享 GPU 服务器或 Slurm 集群的实验室和小团队,重点回答"哪张卡空着、其余的卡被谁占着"。

| | GPU Observatory | nvitop / gpustat | gpustat-web | DCGM Exporter + Prometheus + Grafana | | --- | --- | --- | --- | --- | | 多主机统一查看 | ✅ | ❌ 每个终端看一台 | ✅ | ✅ | | 采集方式 | 主机通过出站 HTTPS 主动上报 | 仅本机 | 中心通过 SSH 轮询主机 | Prometheus 拉取(每台主机需开放入站端口) | | GPU 进程对应用户名 | ✅ 含 PID、进程名、显存 | ✅ | ✅ | ❌ 默认没有 | | 历史数据 | ✅ SQLite:30 天分钟汇总、365 天每日汇总、用户排行 | ❌ 仅实时 | ❌ 仅实时 | ✅ 灵活,取决于保留策略 | | CPU / 内存 / 硬盘 | ✅ 各核心、进程 RSS、按用户硬盘用量 | 部分(nvitop 显示主机 CPU/内存) | ❌ | ✅ 需 node_exporter | | Slurm | ✅ 内置且只读:队列、排队原因、FairShare、GPU 小时 | ❌ | ❌ | 需另装 exporter 和面板 | | GPU 主机需要 root / sudo | ❌ 用户态 PM2 | ❌ | ❌(但需要 SSH 权限) | 通常以系统服务安装 | | 账号体系 | ✅ 按用户管理设备,有管理员角色 | — | ❌ | ✅ Grafana 用户 | | 添加主机 | 一次性安装链接(15 分钟有效,仅能使用一次) | pip install | 修改 SSH 主机列表 | 部署 exporter 并修改抓取配置 | | 移动端 | ✅ 响应式界面,可安装为 PWA | ❌ | 简单网页 | Grafana 网页 | | 告警 | ❌ | ❌ | ❌ | ✅ Alertmanager | | 平台 | Linux + NVIDIA 上报端 | NVIDIA | NVIDIA | NVIDIA |

只想快速查看一台机器,用 nvitop 或 gpustat;需要告警、大规模集群或长期自定义查询,用 Prometheus/Grafana。需要跨几台主机看清每张卡被谁占用、没法安装 root 服务,或者想把 Slurm 和 GPU 用量放在同一个页面上,用 GPU Observatory。

必须有一台中心服务器

可以是 VPS、家用服务器、Mac 或长期在线的工作站,不需要 GPU。它负责运行网站并接收所有主机的 HTTPS 上报,因此需要持续开机联网。中心运行 Node.js 22.16+;GPU 上报端目前支持 Linux NVIDIA 主机,需要 Python 3.10+、可用驱动/NVML,以及管理进程的 Node/PM2。

没有域名:使用 Cloudflare Quick Tunnel 起步。 无需注册 Cloudflare 账号或购买域名,会获得随机的 *.trycloudflare.com HTTPS 地址。但隧道每次重启后地址都会变化,需要更新中心配置及所有上报端地址。它面向开发测试,没有可用性保证,有 200 并发请求限制,不支持 SSE;本项目使用轮询。官方说明

长期使用:推荐自己的域名和具名隧道。 地址固定,上报端、书签和已安装的桌面应用都更方便;需要 Cloudflare 账号与已配置的域名,也可使用已有的 HTTPS 反向代理。

先试试虚拟面板

不需要 GPU、账号或 Python 依赖,只要 Node.js 22.16+:

npx gpu-observatory demo

在克隆的仓库里运行 npm run demo 效果相同。

打开 http://127.0.0.1:8790。演示服务仅监听本机,只使用虚构数据,不读取真实机器指标或生产配置,不能作为正式部署使用。

快速开始

在中心服务器上安装(Node.js 22.16+,不需要 sudo,也不需要 GPU):

npm install -g gpu-observatory
gpu-observatory setup --quick-tunnel      # 或 --origin https://monitor.example.com,或 --tunnel-config 文件

setup 会生成私有配置、安装隔离的用户态 PM2 并启动中心;使用 --quick-tunnel 时会自动获取随机 HTTPS 地址并写入配置。命令会提示首次登录凭据所在的文件,凭据本身不会打印出来。登录后在 我的设备 → 添加设备 复制一次性安装命令,到每台 Linux GPU 服务器上运行即可。

日常管理:gpu-observatory status | logs | restart | stop | url。升级:npm install -g gpu-observatory@latest && gpu-observatory restart,~/.local/share/gpu-observatory-hub 中的数据和配置会保留。运行 gpu-observatory --help 查看全部命令。

让 Agent 帮你部署

把下面的话交给 Agent,并私下提供中心服务器及 GPU 主机的 SSH 信息:

按照 AGENTS.md 和 docs/DEPLOYMENT_FOR_AGENTS.md 部署 GPU Observatory。使用一台中心服务器,先接入一台 GPU 主机验证,再接入其余已授权主机。如果我没有域名,使用 Cloudflare Quick Tunnel,并说明地址变化后的处理方式。密码、令牌和主机清单放在仓库外。使用隔离的用户态 PM2,不使用 sudo。验证鉴权、数据新鲜度和进程恢复;接入 Slurm 前检查集群政策。

完整部署文档包含初始化、两种隧道方案、单独注册主机、上报端安装、PM2、Linux 开机恢复、macOS 登录后启动、Slurm、故障排查、更新和回滚。集群上的持久进程及开机设置需要符合所在站点政策。

Quick Tunnel 换址后,gpu-observatory set-origin --origin <新地址> 会保留凭据并更新中心配置和本地注册文件;还需要将各自的配置安全分发至对应上报端并重启。它不会自动修改远端主机。换址步骤

更多效果图

虚构历史数据与排行榜

一次性安装链接的虚构示例

CPU 虚构面板

内存虚构面板

Slurm 虚构面板

用户参数表直接读取调度器的关联(association)数据,仅作只读遥测,不会提交、占位或取消任何作业。

使用边界

本项目面向小型主机集群,保存实时快照及 SQLite 历史汇总,默认保留 30 天分钟汇总和 365 天每日汇总。它不是分布式监控或企业级身份平台。不同用户分别登录,只能查看自己的设备及分配给自己的 Slurm 来源;管理员负责管理账号,中心重启后需要重新登录。进程可见性取决于操作系统权限;未知数据不会伪装成零。

Slurm 只显示采集账号被允许查看的任务,空队列不代表集群空闲。部署时无需提交 GPU 测试任务。PWA 安装取决于浏览器、操作系统和 HTTPS 条件;离线时只展示占位页,不缓存私有指标。

开发与测试步骤见 English README 和 CONTRIBUTING.md。使用 gpustat、psutil 及 NVIDIA NVML 绑定;项目采用 MIT 许可,依赖保留各自许可。