<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: gwittebolle</title>
    <description>The latest articles on DEV Community by gwittebolle (@gwittebolle).</description>
    <link>https://dev.to/gwittebolle</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3865521%2F63242e06-1787-4382-9260-4efcd87e1079.jpg</url>
      <title>DEV Community: gwittebolle</title>
      <link>https://dev.to/gwittebolle</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gwittebolle"/>
    <language>en</language>
    <item>
      <title>How much CO2 does a Claude Code session actually emit?</title>
      <dc:creator>gwittebolle</dc:creator>
      <pubDate>Mon, 20 Jul 2026 07:17:52 +0000</pubDate>
      <link>https://dev.to/gwittebolle/how-much-co2-does-a-claude-code-session-actually-emit-1gna</link>
      <guid>https://dev.to/gwittebolle/how-much-co2-does-a-claude-code-session-actually-emit-1gna</guid>
      <description>&lt;p&gt;I spend most of my working day inside Claude Code. At some point I started&lt;br&gt;
wondering what that adds up to, physically. I just wanted a number next to&lt;br&gt;
the session cost, something to glance at rather than feel bad about.&lt;/p&gt;

&lt;p&gt;There is no official answer. Anthropic, like every frontier lab, does not&lt;br&gt;
publish per-inference energy data. So I built the estimate myself, put it in&lt;br&gt;
my status line, and open-sourced the whole thing as&lt;br&gt;
&lt;a href="https://github.com/gwittebolle/claude-carbon" rel="noopener noreferrer"&gt;claude-carbon&lt;/a&gt;. This post is&lt;br&gt;
the methodology: where the numbers come from, what I had to estimate, and&lt;br&gt;
where the estimate is weakest.&lt;/p&gt;

&lt;p&gt;My own six months, measured by the tool: 893 sessions, roughly 970 kg CO2e.&lt;br&gt;
About one economy seat on a one-way transatlantic flight. The median session&lt;br&gt;
is ~200 g, the distribution has a long tail, and my worst single session was&lt;br&gt;
68 kg. I would not have guessed any of those numbers within a factor of five.&lt;/p&gt;
&lt;h2&gt;
  
  
  The only measured data point
&lt;/h2&gt;

&lt;p&gt;Everything starts from one paper: Jegham et al. 2025, "How Hungry is AI?"&lt;br&gt;
(&lt;a href="https://arxiv.org/abs/2505.09598" rel="noopener noreferrer"&gt;arxiv.org/abs/2505.09598&lt;/a&gt;). It measures&lt;br&gt;
per-query inference energy for a range of models on AWS. For Claude 3.7&lt;br&gt;
Sonnet it reports three configurations (PUE included):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Input tokens&lt;/th&gt;
&lt;th&gt;Output tokens&lt;/th&gt;
&lt;th&gt;Energy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;300&lt;/td&gt;
&lt;td&gt;0.950 Wh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;2.989 Wh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;1,500&lt;/td&gt;
&lt;td&gt;5.671 Wh&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three points, two unknowns. Fit an ordinary least-squares regression through&lt;br&gt;
the origin, with one coefficient for input tokens and one for output tokens,&lt;br&gt;
and you get ~1.35e-4 Wh per input token and ~2.88e-3 Wh per output token.&lt;br&gt;
The fit matches the two high-token configurations within 1%, which is the&lt;br&gt;
regime real coding sessions live in.&lt;/p&gt;

&lt;p&gt;Convert with the grid: Jegham et al. use the AWS region carbon intensity,&lt;br&gt;
0.287 kgCO2e/kWh, location-based. That yields the two numbers everything&lt;br&gt;
else hangs on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;39 gCO2e per million input tokens&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;826 gCO2e per million output tokens&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 21:1 ratio falls out of the fit rather than being assumed, though three&lt;br&gt;
measured points give it real uncertainty. The direction, however, is solid.&lt;br&gt;
FLOPs per token are similar in prefill and decode; what differs is hardware&lt;br&gt;
utilization. Prefill processes&lt;br&gt;
the whole prompt in parallel and saturates compute; each decode step&lt;br&gt;
re-reads the weights and KV cache to produce a single token, so it is&lt;br&gt;
memory-bandwidth-bound and burns more energy per token. The exact multiple&lt;br&gt;
depends on batch size and serving stack.&lt;/p&gt;

&lt;p&gt;Could this be wrong? I cross-checked against&lt;br&gt;
&lt;a href="https://ecologits.ai" rel="noopener noreferrer"&gt;EcoLogits&lt;/a&gt;, which estimates impact by a completely&lt;br&gt;
independent route (parameter counts plus a lifecycle model, no AWS&lt;br&gt;
telemetry). Their Sonnet band is ~565-1385 gCO2e per million output tokens.&lt;br&gt;
826 sits inside it. Two unrelated methods landing in the same range is the&lt;br&gt;
strongest corroboration available today.&lt;/p&gt;
&lt;h2&gt;
  
  
  Three model families are extrapolated, and here is how fragile that is
&lt;/h2&gt;

&lt;p&gt;Only Sonnet has measured energy data. Everything else is inference from&lt;br&gt;
weak signals, so let me rank the numbers by how much I trust them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sonnet: measured.&lt;/strong&gt; Three points and a fit. The solid ground.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opus: extrapolated, band 1.7x-5x Sonnet.&lt;/strong&gt; The two available signals,
EcoLogits' parameter assumptions and Anthropic's price ratio, both land
around 1.7-2x, and that is where the tool sits (2x). The band stretches
to 5x because neither signal is a measurement, so the likely error is
upward.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Haiku: the most uncomfortable one.&lt;/strong&gt; Jegham actually measured Haiku 3.5
&lt;em&gt;higher&lt;/em&gt; than Sonnet, which is usually read as a serving artifact
(latency-optimized serving, small batches). EcoLogits' modern Haiku reads
far lower. The tool uses 0.5x Sonnet. If you instead take the measurement
at face value, Haiku lands near Sonnet and most of the "route small tasks
to small models" gain evaporates. I chose the reading the physics
supports, but you should know the other one exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fable: the least reliable number in the tool.&lt;/strong&gt; No measurement, no
parameter estimate, only the list-price ratio (2x Opus), and price is a
poor proxy for energy: providers price on what the market bears, and
electricity is a small slice of it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why publish point values at all when the bands are this wide? Because a&lt;br&gt;
status line needs one number. The mitigation is structural: the tool stores&lt;br&gt;
raw token counts and derives the grams from them, so the day better data&lt;br&gt;
lands, one script re-prices the entire history.&lt;/p&gt;

&lt;p&gt;These are order-of-magnitude estimates and the repo labels them as such. If&lt;br&gt;
you want a tool that pretends to three significant digits, this is not it.&lt;/p&gt;
&lt;h2&gt;
  
  
  The cache is the hard part
&lt;/h2&gt;

&lt;p&gt;Nobody tells you this before you parse your own transcripts:&lt;br&gt;
&lt;strong&gt;87% of my tokens are cache reads.&lt;/strong&gt; Claude Code re-sends the conversation&lt;br&gt;
prefix on every turn, and prompt caching means those tokens skip prefill&lt;br&gt;
compute. So the factor you assign to a cached token dominates the headline&lt;br&gt;
number more than any per-model factor does.&lt;/p&gt;

&lt;p&gt;The tempting shortcut is Anthropic's billing ratio: cache reads cost 0.1x&lt;br&gt;
input. But a price is not an energy measurement (OpenAI prices the identical&lt;br&gt;
mechanism at 0.5x). The honest answer is that no study measures this ratio&lt;br&gt;
directly, so I derived an engineering estimate from adjacent measurements:&lt;br&gt;
prefill accounts for under ~3.4% of total inference energy in generation&lt;br&gt;
workloads, and decode energy per token grows with KV-cache size because&lt;br&gt;
every generated token re-reads the entire cache from HBM. Cached tokens&lt;br&gt;
skip prefill but still pay that decode-phase residual forever.&lt;/p&gt;

&lt;p&gt;I use &lt;strong&gt;0.08x&lt;/strong&gt; with a documented defensible range of 0.05-0.15. It is a&lt;br&gt;
single configurable constant, and it is the biggest lever in the whole&lt;br&gt;
model. Setting it to 0 is a legitimate lower bound, but it declares a reused&lt;br&gt;
100K-token system prompt carbon-free, which a memory bus somewhere would&lt;br&gt;
dispute.&lt;/p&gt;
&lt;h2&gt;
  
  
  Counting tokens is its own bug hunt
&lt;/h2&gt;

&lt;p&gt;Token counts come from Claude Code's local JSONL transcripts. If you naively&lt;br&gt;
sum &lt;code&gt;message.usage&lt;/code&gt; over the lines, you over-count by roughly 3x. Resumed&lt;br&gt;
and compacted sessions replay earlier messages into the same file, and&lt;br&gt;
streaming rewrites the same message id with a growing output count. On my&lt;br&gt;
data, 55% of assistant lines are replays. Deduplicate by&lt;br&gt;
&lt;code&gt;(message.id, requestId)&lt;/code&gt;, keep the last occurrence, then sum.&lt;/p&gt;

&lt;p&gt;One more trap: Claude Code purges transcripts after about 30 days. The tool&lt;br&gt;
captures each session into SQLite when it ends, raw token breakdown&lt;br&gt;
included, so when a factor is revised the entire&lt;br&gt;
history can be re-priced with one script. Emission factors will keep&lt;br&gt;
changing as measurements improve; raw tokens are forever.&lt;/p&gt;
&lt;h2&gt;
  
  
  Numbers you can't silently break
&lt;/h2&gt;

&lt;p&gt;Every factor and price in the repo is covered by golden vectors: 12&lt;br&gt;
canonical sessions with hand-derived expected outputs, replayed against&lt;br&gt;
&lt;code&gt;data/factors.json&lt;/code&gt; in CI on every push. If someone (usually me) tweaks a&lt;br&gt;
factor without updating the vectors and the written derivation in&lt;br&gt;
METHODOLOGY.md, the build fails.&lt;/p&gt;

&lt;p&gt;I added this after catching myself unable to reproduce my own earlier&lt;br&gt;
numbers. Fact-checking the arithmetic ten times had not caught it, because&lt;br&gt;
the arithmetic was fine; the derivation had drifted. If your project ships&lt;br&gt;
numbers, put the derivation itself under test.&lt;/p&gt;
&lt;h2&gt;
  
  
  What it looks like day to day
&lt;/h2&gt;

&lt;p&gt;The status line shows grams next to dollars, live:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;claude-carbon ⌥ main | 🟢 Opus 4.7 ▓▓▓░░░░░░░ 35% | $&lt;/span&gt;1.72 · 101g CO₂ | Use 21% ↻13:00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The change in my behavior is model routing (my usage certainly did not go&lt;br&gt;
down): the family factors put small models several times below the big ones. I&lt;br&gt;
won't quote a precise ratio, because the inter-family ratios are the&lt;br&gt;
weakest numbers in the model (they are the extrapolations described above).&lt;br&gt;
The direction is robust though, and a visible number at&lt;br&gt;
decision time makes "does this task need the big model?" a real question,&lt;br&gt;
the same way the cost display already does.&lt;/p&gt;
&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;p&gt;Inference only: no training amortization, no hardware manufacturing, no&lt;br&gt;
water. The carbon intensity is a static grid average for a single region.&lt;br&gt;
The cache-read factor is an engineering derivation with a documented&lt;br&gt;
range. The right way to read any&lt;br&gt;
session figure is "hundreds of grams, not tens of milligrams and not tens of&lt;br&gt;
kilograms."&lt;/p&gt;

&lt;p&gt;If you use Claude Code, the install is one line and everything stays local&lt;br&gt;
(SQLite, no telemetry, no account):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx claude-carbon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo and full methodology, sources included:&lt;br&gt;
&lt;a href="https://github.com/gwittebolle/claude-carbon" rel="noopener noreferrer"&gt;github.com/gwittebolle/claude-carbon&lt;/a&gt;.&lt;br&gt;
If you find a flaw in the derivation, open an issue. The golden vectors make&lt;br&gt;
corrections cheap, and being corrected with sources is the point of&lt;br&gt;
publishing the method.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>sustainability</category>
      <category>climate</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Measured 1 Tonne of CO2 from My AI Coding Sessions</title>
      <dc:creator>gwittebolle</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:04:47 +0000</pubDate>
      <link>https://dev.to/gwittebolle/how-i-measured-1-tonne-of-co2-from-my-ai-coding-sessions-3b3d</link>
      <guid>https://dev.to/gwittebolle/how-i-measured-1-tonne-of-co2-from-my-ai-coding-sessions-3b3d</guid>
      <description>&lt;p&gt;I work as a carbon consultant for large companies. I also code every day with Claude Code. At some point, these two parts of my life started to feel contradictory, and I needed a number.&lt;/p&gt;

&lt;p&gt;So I built claude-carbon - a bash + SQLite tool that hooks into Claude Code's session lifecycle and estimates CO2 emissions per session, live in the status line.&lt;/p&gt;

&lt;p&gt;Here's what 4 months of data looks like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfgy3qviux0sng0s4ea0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfgy3qviux0sng0s4ea0.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The numbers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;367 sessions analyzed&lt;/li&gt;
&lt;li&gt;215 kg CO2e measured over 4 months&lt;/li&gt;
&lt;li&gt;Projection: 0.9 to 1.5 tonnes/year (roughly a one-way Paris-New York flight)&lt;/li&gt;
&lt;li&gt;For context: the average French person emits around 9 tonnes/year total&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These numbers cover inference only - the energy consumed when the model processes my prompts and generates responses. Training, hardware manufacturing, cooling, and datacenter construction are not included. The real lifecycle footprint is higher.&lt;/p&gt;

&lt;p&gt;Inference alone adds about 10% to my individual carbon budget. Just from coding sessions.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;The tool hooks into Claude Code's Stop event. When a session ends, Claude Code writes a JSONL transcript to ~/.claude/projects/. The hook reads that file, counts tokens by model, applies emission factors, and persists the result to a local SQLite database.&lt;/p&gt;

&lt;p&gt;The core formula:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;session_co2_g&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;input_factor&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;output_tokens&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;output_factor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The status line shows the running total live:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🟢 Sonnet 4.6 ░░░░ 12% | $1.80 | 38g CO₂ | my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zero npm, zero Python, zero cloud. Just jq and sqlite3, both pre-installed on macOS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Emission factors
&lt;/h3&gt;

&lt;p&gt;The methodology comes from Jegham et al. 2025 (arxiv 2505.09598), a peer-reviewed study measuring inference energy on AWS infrastructure.&lt;/p&gt;

&lt;p&gt;Factors (gCO2e/Mtok):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opus: input 500, output 3000 (extrapolated 3x Sonnet)&lt;/li&gt;
&lt;li&gt;Sonnet: input 190, output 1140 (measured)&lt;/li&gt;
&lt;li&gt;Haiku: input 95, output 570 (extrapolated 0.5x Sonnet)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Infrastructure: AWS PUE 1.14, grid average 0.287 kgCO2e/kWh.&lt;/p&gt;

&lt;p&gt;Output tokens cost ~6x more than input tokens. During prefill, the model processes all input tokens in parallel. During decoding, each output token requires a full sequential forward pass. That asymmetry is why long verbose responses are expensive.&lt;/p&gt;

&lt;h3&gt;
  
  
  What this is not
&lt;/h3&gt;

&lt;p&gt;These numbers are estimates, not measurements. Several things make them imprecise:&lt;/p&gt;

&lt;p&gt;Anthropic publishes no per-model energy data. Sonnet factors come from the Jegham paper's direct measurements. Opus and Haiku are extrapolated by scaling (3x and 0.5x Sonnet). Actual values depend on hardware configuration and batching strategies we don't have access to.&lt;/p&gt;

&lt;p&gt;Prompt cache hits are overestimated. Cache reads consume less energy than fresh compute. The tool counts them at full rate, so numbers skew high.&lt;/p&gt;

&lt;p&gt;Static grid average. The carbon intensity factor is a US grid average. It varies by region, datacenter, and time of day. Anthropic's actual energy mix is unknown.&lt;/p&gt;

&lt;p&gt;Inference only. Training costs, hardware manufacturing, and cooling water are not included. The true lifecycle number is higher.&lt;/p&gt;

&lt;p&gt;Treat these as order-of-magnitude estimates. They're good enough to identify patterns and test reduction levers. They're not suitable for regulatory reporting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;Install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/gwittebolle/claude-carbon.git ~/code/claude-carbon
bash ~/code/claude-carbon/scripts/setup.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Setup creates the SQLite database, backfills all existing ~/.claude transcripts, and prints your total. Then you add two entries to ~/.claude/settings.json: one for the status line, one for the Stop hook.&lt;/p&gt;

&lt;p&gt;The backfill script parses historical JSONL transcripts by walking ~/.claude/projects/. Each transcript contains the full token counts per message, including model name. That's how I got 4 months of data retroactively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reducing your footprint
&lt;/h3&gt;

&lt;p&gt;Measuring revealed which levers actually matter.&lt;/p&gt;

&lt;p&gt;Right model for the task is the highest-impact lever. Opus costs 3x more per token than Sonnet. Using Haiku for subagents (file exploration, grep, code review) instead of Sonnet cuts those tasks by 80%.&lt;/p&gt;

&lt;p&gt;RTK (Rust Token Killer) filters verbose CLI output before it hits the context window. Progress bars, passing test logs, verbose build output - all stripped. 60-90% token reduction on CLI commands, no quality loss.&lt;/p&gt;

&lt;p&gt;Cap thinking tokens. Extended thinking can use up to 32k hidden tokens per message. Capping at 10k cuts thinking token usage by ~70% on routine tasks.&lt;/p&gt;

&lt;p&gt;Compact earlier. Default autocompact triggers at 95% context usage. Setting it to 50% keeps sessions leaner.&lt;/p&gt;

&lt;p&gt;Combined, these reduce total emissions by 50-70%. My projection goes from ~1.2 tonnes/year down to 0.4-0.6 tonnes if I apply all of them consistently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I built this instead of just estimating
&lt;/h3&gt;

&lt;p&gt;Two reasons.&lt;/p&gt;

&lt;p&gt;First, the number in your head is always wrong. Before measuring, I assumed my usage was around 50-100 kg/year. It was double that. The discrepancy came from a few long architecture sessions I'd forgotten about, and from not accounting for how expensive Opus is.&lt;/p&gt;

&lt;p&gt;Second, I work in carbon. I help large organizations build their emissions inventories. The methodology challenge here - uncertain emission factors, no primary data from the provider, static grid averages - is exactly what we deal with at scale. Working through it on a small personal dataset was useful practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I'd like from Anthropic
&lt;/h3&gt;

&lt;p&gt;One thing would make this significantly better: actual per-model energy data from Anthropic. Right now the Opus and Haiku factors are extrapolations. A single published figure - even a range - would let developers build more accurate tools.&lt;/p&gt;

&lt;p&gt;Amazon, Google, and Microsoft publish at least some data center energy metrics. Anthropic publishes none. That's a gap worth closing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Further reading
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Jegham et al. - How Hungry is AI? (&lt;a href="http://arxiv.org/abs/2505.09598" rel="noopener noreferrer"&gt;arxiv.org/abs/2505.09598&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;IEA - Energy and AI 2025 (&lt;a href="http://iea.org/reports/energy-and-ai/" rel="noopener noreferrer"&gt;iea.org/reports/energy-and-ai/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;UCL/UNESCO - 90% AI energy reduction study&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tool is open source, MIT licensed.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://github.com/gwittebolle/claude-carbon" rel="noopener noreferrer"&gt;github.com/gwittebolle/claude-carbon&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>sustainability</category>
      <category>claude</category>
    </item>
  </channel>
</rss>
