$ ./server-spy

server-spy

"If you can't beat them, join them."
Measure how much of the resources your experiment actually gets,
and who is stealing it from you.

crates.io version GitHub release CI status MIT license
What it monitors

find out which of your experiments got slowed down and why

server-spy classifies your experiment processes with a simple name or regex filter, then records everything that happens around them

▁▃▆

Live congestion

CPU overload, RAM exhaustion, disk I/O bottlenecks, scheduler waiting times.

▰▱▰

Resource utilization

How CPU and memory are split between your workers and everything else.

Experiment runs

One row per distinct parameter combination you are running: wall time, CPU time, wait, peak RSS, PSI stall penalty.

Who is slowing you down

Which users on the machine consumed resources during your run and the exact processes behind it.

Detach & reattach

The daemon keeps recording in the background. Close the TUI, come back later, attach again.

Save & load

Snapshots in plain CSV.

Install

A single self-contained Linux binary. No runtime dependencies. Installable on user-level — no sudo required.

Quick install
$ curl -fsSL https://raw.githubusercontent.com/lennart-rth/server-spy/master/install.sh | sh
PlatformCommandDetails
Debian / Ubuntucurl -fsSL https://lennart-rth.github.io/server-spy/install-apt.sh | sudo shapt repository
Nix / NixOSnix run github:lennart-rth/server-spy
Fedora / RHELrpm -Uvh server-spy-<ver>-1.x86_64.rpmdownload from GitHub releases
crates.iocargo install server-spy
static binaryserver-spy-<ver>-x86_64-unknown-linux-musl.tar.gzdownload from GitHub releases
Quick start
  1. Select your experiment processes - press f, to filter for your experiment runs using regex or simple matching.
  2. Monitor - Watch who and what is slowing down your experiments.
    We classify all your different runs based on their parameters and show for each of them how much they are affected by resource congestions.
  3. Detach - Detach the TUI. server-spy continues to collect the data in the background. You can connect again any time.
fupdate the worker filter (with live preview)
s / lsave / load snapshots to disk
qterminate - stop the background daemon and exit
ddetach - exit, the daemon keeps recording
rrestart recording
tstealth mode - rename the processes so ps/top show something innocuous for others