WattOps
For teams that run GPU servers and clusters

Stop paying for GPUs that do nothing.

WattOps shows, live, what every GPU, job and team draws and costs, finds the GPUs that are on but idle and what they cost you, and writes the energy and carbon reports your finance, sustainability and grant offices ask for. Measured from the hardware, not guessed.

Book a demo
  • Slurm, Kubernetes, NVIDIA, AMD
  • Running in minutes, no Grafana stack
  • Your code never leaves your servers
  • 4–6 week pilot on your own cluster

Just you and a GPU? pipx install landauer-gap gives you joules: one command, a real measurement, free for good.

Idle GPUs are costing you—Simulated fleet

What brings you here?

Three things it pays for

Idle GPUs · free for 1 GPU

See every idle GPU, and what it burns

Every GPU that is switched on or held by a job but doing nothing, live: how many, for how long, and the power and money it burns at your own price per kWh.

“6 GPUs idle now · 1,020 idle GPU-hours this month” How Live works →
Cost per job · paid plans

Charge every job, lab and team its share

Energy, cost and CO₂ for each Slurm job, Kubernetes pod and user, so shared clusters can show back or charge back what each group used.

“chem-lab: 1,240 GPU-hours · 496 kWh” See an example →
Reports · paid plans

Reports the auditors accept

PDF energy and carbon reports per project, with the method, the inputs and a report ID anyone can reproduce: for CSRD, Scope 2, the EU AI Act and grant offices.

“Q3 energy report · ID 7F2A-…” What is in a report →
Case study · HorneSci

HorneSci measured where its HST runtime saves energy

HorneSci builds HST for sparse and incremental computation. With joules compare on six machines, it found where HST beats an optimized baseline, and where it does not.

38.8%less GPU energy and 29.5% less time on an NVIDIA H200, with half the data changing
46%less energy per job on Apple M1 Max
+21%GPU energy on an H100 at 1% changed, while finishing 1.3% sooner: a stopwatch would have missed it
Read the case study →
1 GPU free · then paid per GPU · every GPU on Fleet

Your whole fleet, second by second

Run joules connect on each GPU server, Slurm node or notebook, and the Live page shows what the fleet draws right now, what it costs by the hour, and which GPUs burn power doing nothing. A stock ticker, for electricity.

Each machine reports every 5 seconds. Heartbeats never count against your API calls.

  • Power and cost right nowthe whole fleet and every machine, every 5 seconds, priced at your own rate
  • Idle GPUs, in dollarswhich GPUs are on but doing nothing, and what that costs by the hour
  • Every running jobSlurm jobs, Kubernetes pods, containers and users, each with its share of the power
  • Honest gapsa machine that sleeps or goes offline shows as a gap, never as a made-up line
Cost per job

Fair energy and cost for every job, user and lab

On a shared cluster, everyone pays for the power and nobody knows who used it. joules agent runs on each node and splits each GPU’s and CPU’s measured energy between the jobs on it: Slurm jobs, Kubernetes pods, containers or users.

Group it by account, project or user, see it on the Tracking page, export it, and send each group its share every month. No Prometheus or Grafana stack to run.

Universities and public research: half price on every paid plan.

Cluster · SeptemberExample
AccountGPU-hoursEnergyCostCO₂
chem-lab1,240496 kWh$59.5263 kg
nlp-group860352 kWh$42.2445 kg
bio-imaging410151 kWh$18.1219 kg
held but idle1,020173 kWh$20.7622 kg

Illustrative numbers, measured the way joules agent does on each node · electricity at $0.12 per kWh · 127 g CO₂ per kWh

Built for the people who pay for the power

Research computing

Universities and HPC centres

Charge each lab its measured share of the cluster’s power, find the idle GPUs, and hand the sustainability office and grant applications a report, without running your own Prometheus and Grafana stack.

Half price for universities and public research
GPU clouds and AI hosts

Operators of shared GPU fleets

See the whole fleet live, find the GPUs that are on but idle and what they cost, and give each project its measured energy, cost and carbon.

Fleet: a plan for your fleet, starting with a pilot on your own cluster
ML and platform teams

Teams that train and serve models

Know what each training run and each model really costs to run, get an alert when a change makes it use more, and report the energy to your customers and your sustainability team.

Free to start, then priced by the GPUs you run
Reports

Energy and carbon reports that hold up to an audit

Finance, sustainability and grant offices, and more and more regulators, ask how much energy your computing used. Paid plans turn the measurements into a PDF per project or per month, with the method written out. For example, providers of general-purpose AI models must keep technical documentation that includes the model’s known or estimated energy consumption (AI Act, Article 53 and Annex XI). Where the energy is not known, Annex XI allows it to be estimated from the computational resources used. That is exactly what WattOps computes, with the method written out.

The reports are PDFs with the inputs, the derivation, the assumptions and a report ID. Anyone can check the ID by running the same inputs again. The same figures support Scope 2 carbon reporting (CSRD, GHG Protocol) and customer sustainability questionnaires.

WattOps is a calculation tool, not legal advice. Check your obligations with your own counsel.

  • Training compute6 × parameters × tokens, from your run’s numbers
  • Energyaccelerators, servers and facility (PUE), measured or estimated
  • Carbon and costyour grid’s intensity and your price per kWh
  • Audit traila report ID that the same inputs always reproduce

Running on your cluster this afternoon

1 · Install

One agent per node

Install joules and start joules agent on each GPU server or Slurm node, by hand, with your config tool, or as a Kubernetes DaemonSet. It reads the power meters about once a second, next to your jobs, not inside them.

sudo joules agent --track fleet
2 · See

Live fleet and cost per job

Within seconds the Live page shows every machine’s power and cost, the idle GPUs, and the jobs running now. Finished jobs land on Tracking with their energy, cost and CO₂.

#/live · #/track
3 · Act

Reports, alerts and savings

Turn idle GPUs off or reschedule them, send each lab its share, get an alert when a job uses far more than usual, and download the monthly report as a PDF.

Slack · Discord · webhook · PDF
Low Earth orbit · about 400 km up

Power is the limit, on the ground and in orbit.

AI compute is limited more and more by the power it can get, and some teams are now designing data centres in orbit to sit in the sun. Scroll to zoom in, all the way down.

In orbit

A data centre that runs on sunlight.

Racks inside pressurised modules, solar wings for the power and radiators to shed the heat into space. Every watt has to be collected, and every watt has to be got rid of.

A rack · about 2 m tall

Rows of GPU servers.

Inside, it is the same as on the ground: racks of servers, their GPUs busy, or, too often, switched on and waiting for work.

A GPU · a few centimetres of silicon

One GPU, hundreds of watts.

A data-centre GPU can draw several hundred watts under load and still tens of watts while it does nothing. joules reads both from the GPU's own energy counter.

Transistors · tens of nanometres apart

Tens of billions of switches.

Every switch costs a little energy each time it flips, and a GPU that is on but idle keeps paying to stay ready.

Silicon · atoms 0.235 nm apart

Where every joule ends up.

Each silicon atom is bonded to four neighbours. All the energy a GPU draws ends up here as heat. WattOps measures it from the hardware, not a spec sheet.

See your idle GPUs
Security and privacy

Your numbers, not your code

joules sends energy readings and the names of the jobs that used them. It never sends your code, prompts, command arguments or files, and nothing at all unless you ask it to.

Read the Privacy Policy and the Data Processing Agreement, or ask us anything.

  • Keys kept as fingerprintsan API key is shown once; we store only its SHA-256 fingerprint
  • Locked-down databasereachable only through server functions that check every caller; row-level security on every table
  • Encrypted in transitHTTPS everywhere; data stored in the United States (us-east-1)
  • Privacy law, in writingPIPEDA, BC PIPA and GDPR; a published DPA and sub-processor list

Plans

Start free

Live for 1 GPU, Tracking, the calculator, joules and the leaderboards. Free for good, no card needed.

More GPUs, or a whole fleet

Once you sign in, Billing shows every plan and the price for your own GPUs. For more than 256 GPUs, we set it up with you, starting with a 4–6 week pilot on your own cluster.

Book a demo

Universities and public research pay half: ask us for the code.

Free for everyone

Free tools, on the house

The paid plans are for fleets. These are for anyone who trains or runs a model, free for good: a calculator, the joules command, an open leaderboard and an energy check for pull requests.

Calculator

Know the bill before you start

Enter the model size, the amount of data and your hardware, and see the electricity, cost and CO₂ of a training run before you pay for it.

6 × params × tokens → kWh → g CO₂
joules

Measure any command

Put joules in front of anything you run, like time, and get its real energy, cost and CO₂ from the hardware’s power meters.

joules -- python3 -c "sum(range(10**8))"
Checks

Catch energy creep in review

A GitHub Action measures your benchmark on every pull request and says when a change makes it use more energy than before.

joules ci --budget 10 -- python3 -c "sum(range(10**7))"

One command. A real measurement.

Put joules in front of anything you run, like time. It reads the power meters of the GPU and CPU while the command runs and prints the energy, the cost and the CO₂. This is real output from a MacBook Air.

  • Measuredfrom the hardware’s power meters, not a spec sheet
  • Every machineMac, Linux and GPU servers measured; on Windows the GPU is measured and the CPU estimated
  • Openthe joules tool is open source; every formula is shown
real output · MacBook Air, every core busy
$ joules -- sh -c 'for i in $(seq $(getconf _NPROCESSORS_ONLN)); do python3 -c "x=0
for i in range(100000000): x+=i" & done; wait'
joules · 15.45 s · exit 0
  Apple SoC (CPU + GPU + ANE)   71.5 J   4.6 W avg
  total  71.5 J = 19.9 mWh
  cost <0.0001 · CO₂ 0.00735 g at 370 g/kWh

Your GPU, read from the driver, not from the task manager

On NVIDIA cards every measurement also reads the clock, the temperature, the power limit and the driver’s own throttle reasons, and says in words what they mean. This is real output from a free Google Colab T4: busy the whole time, and still held to 58% of its clock by the power cap. “100% utilisation” never told you that.

  • Throttled, and whypower cap, heat, hardware slowdown: the share of each run below full clock
  • Compute- or memory-boundfrom the busy and memory-controller percentages, labelled as the coarse reading it is
  • On your Tracking pagea throttled badge on every run, a throttling chart, and the full card when you click a run
real output · Google Colab, free T4, 30 s of matrix multiplies
$ joules -- python -c "import torch, time
x = torch.randn(8192, 8192, device='cuda'); t = time.time()
while time.time() - t < 30: x = x @ x"
joules · 32.51 s · exit 0
  GPU 0 Tesla T4   2.13 kJ   65 W avg   nvml counter
    927 MHz (58% of max) · 93% busy · memory 61%
    68 °C max · limit 70 W · compute-bound
    throttled 93% of the time (power cap)
  total  2.13 kJ = 591 mWh
  cost <0.0001 at 0.1/kWh · CO₂ 0.219 g at 370 g/kWh

An open leaderboard of measured GPU efficiency

Spec sheets give peak TFLOP/s and a power rating. Neither says how much work a card does for each joule once it heats up and runs into its power limit. One command runs the same one-minute test on any NVIDIA or AMD GPU, the free T4s on Kaggle and Colab included, and adds it to the board. Local models get the same treatment: joules per token, machine against machine on the same model.

Every row is a real measurement from the device's own meter, never a sample, and the board grows as people add their machines. Anyone can look; no account needed. No GPU to hand? The Kaggle notebook ↗ runs the test on a Kaggle T4.

GPUfp32fp16

Loading the live board…

See the full board

What’s new

Case study

HorneSci measured HST with joules

On an NVIDIA H200 with half the data changing, HST used 38.8% less GPU energy and 29.5% less time than an optimized baseline. Read the case study.

Measured

A 1T model on 8 H200s against the API

The same GPUs cost $76.93 per million tokens with 1 user and $1.61 with 256: 30× the API when quiet, 37% under it when busy. Read the write-up.

joules 0.7.6

A leaderboard for GPUs

joules bench gpu --share runs the same one-minute test on any GPU, a Kaggle T4 included, and puts its work per joule on the public board.

Questions people ask

How accurate are the numbers?

joules reads the power meters built into the hardware: NVIDIA and AMD GPU sensors, Intel and AMD CPU energy counters (RAPL) and Apple silicon’s own power reporting. The calculator is within 0.4% of the published energy of GPT-3, BLOOM and Llama 3 70B. What is and is not included is written out on the Method page under “Accuracy and limits”.

Will it slow my jobs down?

No work runs inside your jobs. The agent reads the power counters about once a second, next to your workload, and the command wrapper only watches the command it starts.

What data leaves my machine?

Only what you ask for: energy, power, cost and carbon, the machine’s name, and the names and users of the jobs that used the power. Never code, prompts, command arguments, inline scripts or files.

Which hardware and schedulers does it support?

NVIDIA, AMD and Intel GPUs, Intel and AMD CPUs, and Apple silicon Macs. On Windows the GPU is measured and the CPU estimated. The agent knows Slurm jobs, Kubernetes pods, containers and users, and serves Prometheus metrics too.

Can I try it before paying?

Yes. The Free plan has the calculator, joules and the leaderboard for good. Once you sign in, Billing shows the paid plans and the price for your own GPUs; they are monthly and can be cancelled any time. For more than 256 GPUs, Fleet starts with a 4–6 week pilot on your own cluster.

Who is behind WattOps?

PHENEX TECHNOLOGIES INC., a British Columbia corporation in Vancouver, Canada. WattOps was called Landauer Gap until October 2026; the Landauer gap, how far computing sits above the least energy physics allows, is still the science inside it. The method comes from the D3 research series, published with a DOI, and every formula is shown on the Method page.

Start measuring in two minutes

  1. Create a free accountemail, GitHub or Google
  2. Install joulescurl -LsSf https://wattops.dev/install.sh | sh
  3. Measure anythingjoules --track my-project -- python train.py

Running a fleet? Book a demo and we will set up a pilot with you.

Free account. By continuing you agree to the Terms and Privacy policy.

WattOps
/workspace/calculator
1Start from a published run or your own accelerator
2Describe the workload: model size and tokens
3Read the gap, then the cheapest fixes
Tap ? beside any field for help · ⌘K for every command

Config

every field is live
Published runs
Hardware
W
TFLOPS
Training run
B
B
%
Serving
B
M
%
Location
g/kWh
$/kWh
Facility and physics
% W
×
×
K
Landauer gap
—
energy per operation ÷ physical minimum

An estimate from the inputs above, not a measurement. To measure a real run, use joules. How it is worked out →

Gap scope

LIVE—
joules per operation · log scale

Derivation

recomputed on every keystroke

Close the gap

same work, one change at a time · ranked by CO₂ saved
ChangeEnergyCO₂CostSaved

Energy breakdown

facility total
PartEnergyShareCO₂

D3 lens

Landauer → E = mc² → rs
Physical minimum for this work—
Mass equivalent of the energy—m = E / c²
Schwarzschild radius of that mass—
Δr_s per bit = 2 G k_B T ln 2 / c⁴

Reproduce

Sign in

Save runs, track your hardware and use the API.

Your new API key

Copy it now and keep it secret, like a password. It is shown only once; we store only a fingerprint of it.

To use it with the joules CLI, run this once in your terminal. It saves the key on your computer, so every terminal can use it.

This comes with paid GPUs

GPU-hour price

Save this run

Contact us

We read every message and reply by email.

Keyboard shortcuts

They work anywhere on the site while you are signed in, except while you are typing in a field.

⌘ K or Ctrl K
Search and run any command
?
Show these shortcuts
T
Calculator: training
I
Calculator: inference
S
Save the calculator run
↑ ↓ Enter
Move through and run commands in the search
Esc
Close a window like this one

Policies

WattOps is run by PHENEX TECHNOLOGIES INC., Vancouver, British Columbia, Canada.

Run report

›
↑↓ move↵ runesc close