01 /Attribute every step
NVML reads GPU-board energy. An idle baseline separates gross and net joules. Default metering serializes calls to avoid overlapping energy windows.
Which agent step burns the most energy?
GPU energy per agent step, measured on your GPUs. Agent Joules wraps each agent of a Microsoft Agent Framework workflow in a metered chat client that records tokens, latency and cost for every model call, and on a GPU you control, joules and watts through NVML.
Hackathon prototype · MIT licensed · Every measured number in the text of this page comes from a committed results file.
NVML reads GPU-board energy. An idle baseline separates gross and net joules. Default metering serializes calls to avoid overlapping energy windows.
NVIDIA Nemotron models power all four tiers. Models differ across tiers; results are not an efficiency ranking.
Missing values are never zero. Energy covers the GPU board only.
One workflow, three tasks, three repeats per tier. Run totals from the committed results files; energy is GPU-board energy only, judge calls excluded.
GPU NVIDIA GeForce RTX 3080 Ti Laptop GPU
nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1 (BF16, NIM 1.8.5)
GPU NVIDIA H100 80GB HBM3 (Nebius AI Cloud, preset 1gpu-16vcpu-200gb)
nvidia/nemotron-3-nano (FP8)
hosted build.nvidia.com
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning
hosted Nebius Token Factory
nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B
Models differ across tiers: local nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1 (BF16), cloudgpu nvidia/nemotron-3-nano (FP8), nvidia nvidia/nemotron-3-nano-omni-30b-a3b-reasoning, nebius nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B. The quality judge is nvidia/nemotron-3-nano-omni-30b-a3b-reasoning on the nvidia tier.
To see the page without installing anything, open the hosted replay, which plays the committed cloudgpu and local runs in the browser with no key and no server. Replay without a GPU or key:
dotnet run --project src/AgentJoules.Cli -- dashboard --replay results/20261026T124721Z-cloudgpu.json --speed 4 --exit-after 60
nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1 served by an NVIDIA NIM container on the laptop GPU.nvidia/nemotron-3-nano served by an NVIDIA NIM container on a Nebius AI Cloud VM with one NVIDIA H100 80GB.nvidia/nemotron-3-nano-omni-30b-a3b-reasoning on the hosted build.nvidia.com endpoint.nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B on the Nebius Token Factory endpoint.The nebius tier calls Nebius Token Factory, which served nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B for the whole workflow: a hosted comparison tier with no GPU to own or rent, measured for tokens, latency and cost from a laptop with a key alone.
The cloudgpu tier ran on one Nebius AI Cloud GPU VM (preset 1gpu-16vcpu-200gb, region eu-north1) where the NIM container and the NVML meter share one H100; rental 1.509 GPU-hours (estimated) at USD 4.63 per hour (the console price), about USD 7 for the whole rental window (estimated; docs/cloudgpu-run.md), VM deleted after the run.
dotnet test runs the unit tests.dotnet run --project src/AgentJoules.Cli -- validate results/ checks the committed results files against the schema and prints Validated <n> files.cloudgpu and local runs in the browser, no key) or docs/report/index.html, the committed report page.dotnet run --project src/AgentJoules.Cli -- dashboard --replay results/20261026T124721Z-cloudgpu.json --speed 4 --exit-after 60measured, estimated, model-judged, N/A, not-reported. A missing value is never written as zero.
The README results block is generated from the committed results files by report --update-readme.
Energy is GPU-board energy. Judge calls are excluded from workflow totals. Models differ across tiers and are not ranked.