The ecological cost of using a machine to think · ECOTELOS

“You cannot measure a model. A model is a file. It has no footprint until it runs.”

ECOTELOS: the ecological cost of using a machine to think

What one answer from a machine costs the world — and whether it had to cost that much.

WhatThree chapters, read straight through: what ecological means, what the instrument produces, and what we actually hold
StatusRunning · 443 of 465 models graded · 10 with nothing guessed · checked against Google's own published figure at 0.75×
Built onArtificial Analysis · OpenRouter · each model's own repository · NVIDIA datasheets · EcoLogits · ISO/IEC 21031 · EF 3.1
DepositedNot deposited. The estimator, the checks and every figure below re-run on each page load
Last updated2026-09-22 · TELOS-lite v1
scroll · plain language first
Part one

What we are measuring, and why

Before any number, four claims. Each one decides what the instrument is allowed to say later, so they come first rather than as an appendix.

§01 — What ecological means

Ecological is not a synonym for environmental.

Environmental thinking asks: what does this emit? It produces a footprint — one number, attached to an object, portable, comparable, marketable.

Ecological thinking asks a harder question: what does this depend on, what does it displace, and what depends on it? Ecology is the study of relations between living things and the conditions that sustain them. Its unit is not the object. Its unit is the flow: energy, water, materials and land, moving through a system that has a boundary and a limit.

Nothing is green in the abstract.the first rule, and the reason this page carries dates

A thing is only ever less or more costly than a specific alternative, in a specific place, at a specific time. “This model is sustainable” is not a claim that can be true or false. “This model used a quarter of the energy of that one, for the same task, on the same hardware, on the Dutch grid in September” can be.

Any score that does not carry its place, its time and its alternative is decoration. That is why every figure on this page is followed by the conditions that produced it, and why the label in §06 refuses to travel without them.

§02 — No exit from thermodynamics

A datacentre is a machine for turning electricity into answers and warm air.

Every computation dissipates heat. Not as a defect to be engineered away — as the physical definition of what computing is.

Efficiency changes the ratio. It never reaches zero, and it never runs backwards. So the honest question is never “is this clean?” It is always “how much, for what?”

This is also why the arithmetic in Part III is so short. There is no modelling trick in it. A card draws a fixed number of watts whenever it is on, and the only question the estimator asks is how long was it on for your one answer. Everything else — the carbon, the water — is that number multiplied by a property of the place it ran.

The relation runs both ways

Ecology is not one-directional harm accounting. A thing sits inside a web: it consumes, and it also changes the behaviour of everything around it. An AI system has a physical cost, and it also shapes what millions of people decide to do next — what they buy, repair, replace, throw away, believe.

For most technologies the second effect is larger than the first, and almost nobody measures it. A model that draws a tenth of a watt-hour while persuading someone to replace a working appliance has not been cheap. This part of the account has no established method, and we say so rather than quietly leaving it out.

§03 — Efficiency is not sufficiency

Cheaper per unit means more units. It has meant that since 1865.

Efficiency is impact per unit of output. Sufficiency is asking whether the output was needed.

The history of industrial efficiency is unambiguous: efficiency gains are consumed by volume growth, usually completely. Jevons observed it in coal and it has not stopped being true.

The admission this project has to make about itself An efficiency metric that does not confront its own rebound effect is a marketing instrument. We are building one anyway, because you cannot argue for less without a shared unit — but the metric has to say this about itself, in public, permanently. It is the floor of the account, not the ceiling.

Which is why the label in §06 carries a sufficiency line and not only a grade. A grade tells you what something cost. A sufficiency line tells you what you could have done instead, and only the second one changes a decision.

§04 — You cannot measure a model

A model is a file. It has no footprint until it runs.

What has a footprint is a use of a model, on particular hardware, in a particular building, on a particular grid, at a particular hour, to accomplish a particular task.

Every one of those words is a parameter, and dropping any of them produces a number that cannot be checked. This is why “which AI is greenest” has no answer, and why the question has to be rebuilt before it can be answered.

And the unit is the task, not the token

Tokens are a billing unit. They are what the vendor meters, so they are what everyone reports. But nobody wants tokens. People want a question answered, a document drafted, a bug found.

Measuring per token makes a verbose model look efficient and hides retries entirely. A model that answers correctly on the first attempt beats one that needs five — and per-token accounting ranks them the other way round.

Stated plainly, because it is the largest gap Everything measured on this page is per hypothetical request: 1000 tokens in, 300 out. Nobody's actual request. There is no session, no retry count, no record of whether the task succeeded. Part II names this as the second axis of the roadmap; it is not built.
Part two

The instrument

What comes out of the machine, what it is called, and why it is allowed to be a single number after all.

§05 — In, and out

It is an account, not a score.

A score is a verdict. An account is a record you can audit, disagree with, and re-run with different assumptions.

The output of evaluating one use of AI is a task receipt: what was asked, what it cost, and whether it worked. The collection of receipts, and the method behind them, is the TELOS account.

What goes in

The session
Every request that was part of the task: tokens in, tokens out, which model actually served it, how many retries, and how the context grew turn by turn. Request ten costs far more than request one, because the whole history is re-read.
The place
Which hardware, how many requests shared it, the facility's overhead and water figures, the grid region, and the hour.
The outcome
Did the task complete, and to what standard. The field nobody measures, and the reason per-token accounting misleads.

What comes out

A vector, never a bare number. Every line carries its boundary and its uncertainty.

  1. Energywatt-hours for the whole task, not one request
  2. Carbongrams CO₂e, both conventions — location and market
  3. Watermillilitres, both conventions — on-site cooling and off-site generation — weighted by local scarcity
  4. Capability deliveredwhat the task actually needed, not the model's benchmark score
  5. The ratiocapability ÷ impact. The headline
  6. The sufficiency linewhat the smallest model that would have finished this would have cost
  7. The gapswhat could not be known, listed rather than hidden
§06 — The label

The same reading, in three sizes.

The account is what you open. The label is what travels — into a model card, a report, a procurement table. It may never travel stripped.

The components come before the single figure, the coverage is stated on the face, and the conditions ride along. A label without its hardware, batch, grid and date is a badge, and a badge is the thing §01 rules out.

τQwen: Qwen3.5-9Bcounted
424
points of capability per watt-hour
energy0.0264 Wh B
carbon0.0071 g / 0.0024 market
water0.138 mL on + off-site
capability11.2 AA index
EF 3.10.321 nPt ≈ 14.0 ms of a person's year
EF 3.1 · 9 of 16 impact categories · 72% of the weight
Could it have been smaller? OpenAI: gpt-oss-20b scores 9.0 and would have spent 0.0111 Wh. Whether it would have answered this question is yours to judge.
NVIDIA H100 SXM5 80GB · batch 32 · 1000→300 tok · bf16 · PUE 1.1
grid 268 g/kWh · water 1.8+3.433 L/kWh · 2026-09-22
a · inline

At the end of an answer, where a citation would sit. The only form allowed to carry no numbers, because it is one press from all of them.

…so the reading for that basin is the one to trust, and the winter picture is a gap, not a measurement.τ
b · one line

For a table row. The ratio leads, because that is the question. The grade is the small strip, because it only reads watt-hours.

τ424 pts/Wh · 0.0264 Wh · counted τ242 pts/Wh · 0.048–0.88 Wh · inferred τ— pts/Wh · — Wh · measured

An inferred label shows a span, never a point. The third is drawn empty on purpose: nothing in the registry is metered, so there is no measured reading to show, and the form waits rather than borrowing an estimate.

c · the card

The portable object, on the left. Everything the one-liner compresses, plus the sufficiency line and the conditions. The only form that survives being screenshotted out of context — which is the test a label has to pass.

§07 — One number, and its weights

The rule is not “never combine”. It is “no aggregate hides its weights”.

To reduce energy, carbon and water to one figure you must decide how much a litre of water is worth in grams of CO₂. There is no scientific answer to that — it is a judgement.

Once that judgement is baked into a single number, nobody can see it or argue with it. So the single number is permitted on one condition: the weighting is named, published, and swappable by the reader.

The method we adopt

Environmental Footprint 3.1 — the European Commission's own method, used in PEF and OEF. Sixteen impact categories and official factors that combine them into one score in points. Adopting a format rather than inventing one. Alongside it, AWARE for water, which converts cubic metres into scarcity-weighted equivalents so that a litre in a dry basin counts for more than a litre in a wet one; and ReCiPe 2016 or CE Delft's environmental prices as alternatives a reader can select.

Computed, as of TELOS-lite 1.1

Every session record and every label now carries the EF 3.1 single score, worked out with the Commission's published normalisation and weighting factors (JRC, EF 3.1). Each impact is first divided by what one average person on Earth causes in that category in a year, then weighted and added. So the score reads as a share of one person's yearly footprint: one point is a whole person-year, one micro-point (µPt) a millionth of it.

That is what the label means by “a person's footprint”. It is not a person's total impact, only the categories we can fill, and the label turns the share back into time: the podcast session behind café topic 319 (613 Wh, sealed as [t:2120e44b26a4eef8]) scores 10.5 µPt, which is about twelve minutes of what an average person causes in climate, water, fossil and mineral use. One request to Qwen: Qwen3.5-9B on this page's reference setup is 0.321 nPt, about 14.0 milliseconds.

Three honest limits, stated on the label itself We fill 9 of 16 categories, 72% of the weight. Climate change, water use, fossil resource use and mineral resource use. The other twelve (particulate matter, acidification, land use, toxicity and the rest) are empty, and the label says so on its face rather than implying a full footprint. Two of the four are approximate: fossil use counts all the primary energy behind the electricity, which overstates it, and water uses the world-average scarcity factor until the Dutch one is loaded.

The weighting barely changes the ranking today. Every impact below descends from the same joules, so the components move together and swapping EF for ReCiPe would reorder almost nothing. The weights begin to matter when real per-facility water and real hourly grid data replace the constants in §15. Build the mechanism now; do not oversell what it currently does.

EF weights impacts, not value. It gives a clean denominator and has no opinion about the numerator — correctly. The ratio still needs a capability measure on top, and choosing that remains a judgement we publish rather than derive.

Precision is not the constraint

Any unified score will never be exact. Largely beside the point: the spread between models on this axis is a factor of 7 — Qwen: Qwen3.6 35B A3B against Anthropic: Claude Opus 5.5. A weighting method arguable at ±30% still separates them cleanly. Order of magnitude is the useful resolution, and it is robust to every weighting choice on the table.

What precision is required for: comparing two similar models. That we refuse to do, loudly, wherever the inputs were inferred rather than counted.

§08 — Two axes, not one

The roadmap has one dimension. The instrument needs two.

The three tiers all answer the same question: how well do you know the energy.

the roadmap as written
TierWhere the numbers come fromAvailable
TELOS-litepublic data only — size counted, derived from the expert configuration, or inferred from pricenow, all 465 models
TELOS-plusyour hardware, your batch, your grid, your facility's real PUE and WUE, real token countsnow, for anything you run yourself
TELOS-fulla meter on the wire, per requestnow, on your own machine. Never from outside a closed API

That is precision of the denominator. It is not the whole instrument. A TELOS-full with a physical meter still cannot say what one task cost, or whether it worked.

what the plan actually needs
AxisWhat it fixesState
Precision of impact — lite / plus / fullhow much of the number is guessedbuilt, and on this page
Unit of measurement — hypothetical request / real session / completed taskwhat the number is pernot built
A TELOS-lite that counts a real session is worth more than a TELOS-full that scores an imaginary prompt.where the next work goes
Part three

The data, and the calculation

What we actually hold, and exactly what is done with it. Every figure below was computed when you loaded this page. Where something is an assumption rather than a measurement, it says so on the line.

§09 — What we hold

465 models. Eleven where nothing is guessed.

Merged from three sources: Artificial Analysis for capability, OpenRouter for the model list and prices, and each model's own repository for size and architecture.

465
models in the registry
465
publish a price
144
carry a capability score
60
publish their size
10
have all four, nothing guessed
0
are metered

Every model publishes what it charges. Fewer than a quarter publish what they are. 10 of 465 carry a counted size, a full architecture, an independent capability score and a price at once — and every one of them is from Qwen, Mistral or IBM. Not one from Anthropic, OpenAI or Google.

That ratio is not a gap in our work. It is the finding.§09
§10 — Where a size comes from

Four routes to one number, and the page always says which was used.

The physics downstream is identical in all of them. What changes is only how well the size is known — which is exactly what the route word on the label records.

✓
Counted — 60 models. Read from the model's own repository. Nothing to argue with.
✓
Derived — 46 models. A sparse model touches only a few of its experts per token, so the active size is total × (experts per token ÷ experts) × 1.57. The multiplier is measured, not assumed: checked against the 20 models whose own name states their active size. Median error 5.0%, 16 of 20 within 25%, worst 41.2%. That sits inside the ±40% the estimator already carries against physical meters.
?
Inferred — 337 models. Nothing published, so size is inferred from price, fitted across the 100 models whose size we do know. The correlation is r = 0.41 — weak, deliberately reported. Every inferred figure carries a band from 0.22× to 4.01× and a question mark on its grade. An order of magnitude. Never a ranking.
—
Refused — 22 models. No size, and no usable price to infer one from. They get no grade. A recorded absence is data; a plausible guess formatted like a measurement is worse than an empty field.
Does inferring from price work at all? One closed model has published a figure about itself. Google states 0.10 Wh for a median Gemini prompt at the accelerator-only boundary — the same boundary this estimator uses. Knowing only the price, this page puts Google: Gemini 3.8 Flash at 0.075 Wh: 0.75× the figure Google published. One point of corroboration. Not a validation.
§11 — The calculation, worked

Twenty inputs collapse into one thing: seconds of machine time.

Qwen: Qwen3.5-9B, one of the rows where nothing is inferred. Nothing below is hidden, and nothing is fitted.

active parameters 9.65 B counted, from the model's own repository architecture 32 layers · 4 KV heads · head dim 256 hardware NVIDIA H100 SXM5 80GB — 700 W board × 0.85 drawn = 595 W request 1000 in · 300 out · batch 32 · bf16 · MFU 0.4 · MBU 0.7 · PUE 1.1 1. reading the prompt is compute-bound 2 × 9.65e9 params × 1000 tokens × 32 in the batch ÷ (peak FLOP/s × 0.4 achieved) = 1.5617 s 2. writing the answer is bandwidth-bound 300 steps, each re-reading 19.3 GB of weights plus 131,072 bytes of cache per token held, for each of 32 ÷ (memory bandwidth × 0.7 achieved) = 3.0867 s total card time, serving all 32 together = 4.6483 s 3. seconds become joules 595 W × 4.6483 s = 2,766 J × 1.1 facility overhead = 3,042 J ÷ 32 requests sharing it = 95.07 J 4. one joule figure becomes every output energy 95.07 J ÷ 3600 = 0.0264 Wh carbon × 268 g/kWh location = 0.0071 g CO₂e × 90 g/kWh market = 0.0024 g CO₂e water × (1.8 + 3.433) L/kWh = 0.138 mL ratio 11.2 index ÷ 0.0264 Wh = 424 points per Wh

There is no clever formula in it. Time × watts, then unit conversion. The difficulty is never the arithmetic — it is knowing the size, which §10 is about, and knowing the place, which §15 admits we mostly do not.

§12 — The grade, and its anchor

The scale is not ours. It is anchored on a figure someone else published and stands behind.

Google states 0.10 watt-hours for the median Gemini text prompt, measured at the same boundary this estimator uses. That sits on the C/D line.

C or better means: no worse than Google's median prompt.the whole of the grade, in one sentence
A
up to 0.02 Wh per request
42 models
B
up to 0.05 Wh per request
110 models
C
up to 0.10 Wh per request · Google's median prompt
159 models
D
up to 0.25 Wh per request
115 models
E
up to 0.60 Wh per request
13 models
F
up to 1.50 Wh per request
4 models
G
above 1.50 Wh per request
0 models

A grade with a ? after it means the model's size was inferred rather than counted, so the letter is an order of magnitude and the label shows a span instead of a point.

What the letter is not It reads watt-hours and nothing else. It does not know whether the model was clever with them, and it does not know where it ran. A letter alone would tell you to use a worse model — correct only when the worse model still does the job. That is why the label leads with the ratio and keeps the letter small.
§13 — What the ratio shows

Capability for what it cost, across 98 models.

This is the number Part II asks for, and the result is the opposite of the industry's assumption.

the leanest on the axis, and the models people name
ModelIndexWhGradePoints per WhSize known
Qwen: Qwen3.6 35B A3B18.20.0064 A 2,855 derived
DeepSeek: DeepSeek V4 Flash 042334.30.0155 A? 2,216 inferred
inclusionAI: Ling 3.0 Flash VL24.60.0137 A? 1,802 inferred
Xiaomi: MiMo-V2.6-Flash37.90.0225 B 1,685 derived
OpenAI: GPT-6 Luna38.10.0326 B? 1,170 inferred
DeepSeek: DeepSeek V4.1 Flash39.50.0351 B? 1,124 inferred
Qwen: Qwen3 Coder Next9.20.0084 A 1,092 derived
Upstage: Solar Mini 424.10.0223 B? 1,082 inferred
Anthropic: Claude Fable 5.153.40.2207 D? 242 #68 inferred
Anthropic: Claude Opus 550.80.1654 D? 307 #55 inferred
Anthropic: Claude Sonnet 4.630.10.1338 D? 225 #71 inferred
OpenAI: GPT-5.6 Sol47.00.1131 D? 416 #43 inferred
SpaceXAI: Grok 4.644.30.0915 C? 484 #32 inferred
Google: Gemini 3.7 Flash39.10.0752 C? 520 #26 inferred
Xiaomi: MiMo-V2.6-Pro46.30.0522 C 887 #13 derived
Qwen: Qwen3.5-9B11.20.0264 B 424 #41 counted
IBM: Granite 4.2 8B11.10.0252 B 440 #37 counted

Qwen: Qwen3.6 35B A3B delivers 7× more capability per watt-hour than Anthropic: Claude Opus 5.5, the cleverest model we can place on this axis at all. It is less clever — 18.2 against 57.6 — but it draws a fraction of the energy to be that clever.

Which turns “which model is best” into “which model is sufficient” — and that is where essentially all of the available saving lives. Not in making frontier models greener. In not calling them when something smaller would have done.

And then the part that undoes the rest If a perfectly efficient model is called a hundred times more often, the account is worse. Nothing in a per-request metric can see that. §03 is not a caveat on this table; it is part of the finding.
§14 — Local is private, not clean

A batch shares one read of the weights. You do not.

The same weights, on a shared server and on your own card. Nothing changes but who you share the machine with.

Qwen: Qwen3.5-9B

NVIDIA H100 SXM5 80GB, batch 32
0.0264 Wh · B
NVIDIA RTX 5090 32GB (the local AGNT ECO worker), one user
0.6474 Wh · F

24.5× more energy per request for the same answer.

IBM: Granite 4.2 8B

NVIDIA H100 SXM5 80GB, batch 32
0.0252 Wh · B
NVIDIA RTX 5090 32GB (the local AGNT ECO worker), one user
0.5913 Wh · E

23.4× more energy per request for the same answer.

Anyone building a “run it locally, it's greener” story should meet these numbers first. Local is private. It is not clean.

A defect in this very figure The water term has no local flag. water() multiplies kilowatt-hours by whatever cooling figure it is handed, so a run on your own machine is charged cooling-tower water it never used. Measured overstatement: 34%. The energy figures above are unaffected. Listed here rather than discovered later.
§15 — What we do not count

The boundary, and the things that are wrong inside it.

A figure is meaningless until its boundary is stated. Ours is the accelerator, plus a facility overhead factor. Everything below is outside it.

host CPU/DRAM/NICinterconnectidle and over-provisioningembodied hardware carboncooling beyond the PUE multiplierattention FLOPs beyond the KV read

The place is where this is weakest

Four of the six environmental parameters are assumptions with no source behind them, and none of them varies by model — they are global constants. So environmental impact here is energy × four constants, which means the impact ranking and the energy ranking are the same ranking. The environmental layer currently adds no information of its own.

what the numbers about the place really are
InputValueWhat it really is
grid carbon, location268 g/kWhNL average, operator-set
grid carbon, market90 g/kWhillustrative, so labelled in the code
water, off-site3.433 L/kWhreal — EcoLogits / Boavizta NL mix
water, on-site1.8 L/kWhplaceholder, so labelled in the code
facility overhead1.1assumption
embodied hardware share0.30industry midpoint

Known defects, listed rather than discovered

  1. Water has no local flagA non-datacentre run is charged cooling-tower water it never used. 34% overstated for a local model on a consumer card.
  2. The place does not vary by modelFour constants applied to everyone, as the table above says.
  3. Everything is per hypothetical request1000 in, 300 out. No session, no retries, no record of whether the task succeeded. The largest gap, and §08's second axis.
  4. The registry holds two datesMost rows were pulled on 2 September; models released since were added by hand, and each carries its own retrieval date rather than being smoothed into the rest.
  5. Nothing is meteredZero of 465 models carry a measured energy figure. TELOS-full exists as a design, not as a row.

None of this is a reason to distrust the order of magnitude. It is the reason not to quote two similar models against each other.