Classifies GPU workloads as inference or training from telemetry alone via MCP tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Install β’ Quickstart β’ CLI reference β’ Comparison β’ FAQ
Classify a GPU workload as TRAINING, INFERENCE, or IDLE from telemetry alone. No code changes to the workload, no self-reported job labels.

Every GPU scheduler in common use today, including run:ai, Slurm, and Kubernetes GPU operators, asks you to declare whether a job is training or inference at submission time. None of them check. WorkloadTruth reads GPU telemetry (utilization, memory pattern, power draw) and answers the question independently, so a mislabeled or misbehaving job doesn't go unnoticed.
[!NOTE] The npm package is a launcher, not a standalone install.
npx workloadtruth-cliexecs the realworkloadtruthbinary from PATH, so the PyPI package (pip install workloadtruth-cli) must already be installed first.
--json on every command switches to machine-readable output for scripts and agents.
WorkloadTruth currently ships a rule-based classifier only: a set of documented, inspectable thresholds over four features extracted from a telemetry window (average and variance of GPU utilization, memory-growth slope, average and variance of power draw). Every threshold lives as a named constant in src/workloadtruth/classifier/rules.py with a comment explaining its intuition. Nothing is a black box.
--experimental (an ML-based classifier) is present as a flag but fails loudly with an explanation rather than shipping a fake result. arXiv:2606.19262's trained model and dataset were never published, and this project has no NVIDIA GPU in its build environment to collect real training data. An ML classifier ships here only once it's trained on a real, disclosed dataset and independently shown to beat the rule-based baseline, not before.
workloadtruth benchmark measures the classifier's accuracy against documented synthetic GPU telemetry traces (see synthetic_backend.py for the exact profile parameters), both clean and under a deliberate evasion transform that mimics an operator disguising a training job as inference (capping utilization swings, flattening memory growth, injecting artificial idle gaps).
This is run on synthetic data, not live NVIDIA hardware, so it is not directly comparable to arXiv:2606.19262's real-hardware numbers. Both are reported below, side by side, never blended into one figure.
| arXiv:2606.19262 (real hardware, NVML) | WorkloadTruth (synthetic traces, 300 trials/cell) | |
|---|---|---|
| Clean accuracy | 98.2% | 100.0% |
| Evasion accuracy | 43-87% | 66.7% overall |
The overall evasion number hides the real finding. Broken out by workload type, WorkloadTruth's rule-based classifier is currently completely fooled on evasive training workloads (0% accuracy), while staying accurate on evasive inference and idle traces (100% each). Capping GPU utilization alone is enough to make a training job read as inference to this classifier today.
| Profile | Clean accuracy | Evasion accuracy |
|---|---|---|
| Training | 100.0% | 0.0% |
| Inference | 100.0% | 100.0% |
| Idle | 100.0% | 100.0% |
This is the concrete, disclosed gap the benchmark suite exists to surface and track, not a footnote. A rule-based classifier that only looks at utilization variance is trivially evadable. Closing this gap, through multi-signal fusion or a real trained classifier once data exists, is the roadmap, not a solved problem. Reproduce it yourself:

| Command | Purpose |
|---|---|
classify | One-shot classification. --backend synthetic|nvml, --profile (synthetic only), --gpu-index, --samples, --interval, --experimental (not yet available), --json. |
watch | Continuous classification; appends a hash-chained entry to a local audit log on every window. --window (samples per window), --iterations (0 = run forever), --log-file, --json. |
benchmark | Runs the evasion-robustness benchmark (see above). --trials, --window, --json. |
verify-log | Re-derives every audit-log entry's hash and confirms the chain hasn't been tampered with. --log-file, --json. |
mcp | Starts an MCP server (stdio) exposing classify_workload, run_benchmark, verify_audit_log as agent-callable tools. --backend. Requires pip install "workloadtruth-cli[mcp]" on Python 3.10+ (see below). |
Every command supports --json. Full flag reference: workloadtruth <command> --help.
WorkloadTruth ships a Model Context Protocol server so an AI agent (Claude, Cursor, or any MCP-compatible client) can classify GPU workloads, run the evasion-robustness benchmark, and verify the audit log directly, without a human invoking the CLI by hand.
Install the extra:
[!NOTE] The
mcpextra requires Python 3.10+, stricter than WorkloadTruth's own 3.9 floor.pip install "workloadtruth-cli[mcp]"will fail to resolve on Python 3.9. Every other feature (classify,watch,benchmark,verify-log) works on Python 3.9.
Add it to your MCP client's config (for Claude Desktop, claude_desktop_config.json). The server is started via the workloadtruth mcp subcommand, not a separate console script:
The server exposes three tools over stdio:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/workloadtruth)<a href="https://allmcps.com/mcp/workloadtruth"><img src="https://allmcps.com/api/badge/workloadtruth?style=directory" alt="Workloadtruth on AllMCPs" /></a>