v0.2.0 ยท Node 18+ ยท prebuilt binaries

Lightweight Node.js monitoring powered by Rust

Collect process metrics โ€” CPU, memory, threads, uptime โ€” with very low overhead. A native core built with napi-rs, exposed through a clean TypeScript API.

npm install rust-node-monitor
snapshot.ts
import { snapshot } from "rust-node-monitor";

console.log(snapshot());
// {
//   pid: 12345,
//   cpuPercent: 12.5,
//   memoryRss: 84520960,
//   memoryVirtual: 312000000,
//   threads: 8,
//   uptimeSeconds: 3600,
//   timestamp: 1710000000
// }

Why rust-node-monitor

โšก

Low overhead

The hot path is native Rust. snapshot() reads only the current process โ€” no full system scan.

๐Ÿฆ€

Rust core

Built with napi-rs. Memory via sysinfo, thread count via /proc and Mach APIs.

๐Ÿ“ฆ

Prebuilt binaries

No compiler at install time. macOS, Linux and Windows binaries bundled in a single package.

๐Ÿงฉ

TS-first API

Generated .d.ts, clean camelCase fields, and dual CommonJS + ESM output.

๐Ÿ“ˆ

Continuous Monitor

The Monitor class samples periodically for reliable, delta-based CPU usage.

๐Ÿ”Œ

Framework ready

Drop-in middleware for Express, a Fastify plugin, and a NestJS interceptor.

Usage

import { snapshot, hello } from "rust-node-monitor";

console.log(hello()); // "Hello from Rust"

const metrics = snapshot();
console.log(metrics.pid);
console.log(metrics.memoryRss);
console.log(metrics.cpuPercent);
import { Monitor } from "rust-node-monitor";

const monitor = new Monitor({ intervalMs: 1000 });
monitor.start();

setInterval(() => {
  console.log(monitor.stats());
}, 1000);
import { Monitor, prometheus } from "rust-node-monitor";

const monitor = new Monitor().start();

app.get("/metrics", (req, res) => {
  res.type("text/plain").send(prometheus(monitor.stats()));
});

Framework integrations

Express

import { monitorMiddleware }
  from "rust-node-monitor/express";

app.use(monitorMiddleware());

Fastify

import { monitorPlugin }
  from "rust-node-monitor/fastify";

fastify.register(monitorPlugin);

NestJS

import { RustNodeMonitorInterceptor }
  from "rust-node-monitor/nestjs";

app.useGlobalInterceptors(
  new RustNodeMonitorInterceptor());

Supported platforms

macOS arm64 macOS x64 Linux x64 (glibc) Linux arm64 (glibc) Windows x64

Roadmap