惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
I
InfoQ
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
WordPress大学
WordPress大学
B
Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
博客园 - 聂微东
Jina AI
Jina AI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I built a carbon linter for Terraform PRs — here's the fu...
Grafikui · 2026-05-04 · via DEV Community

Most cloud sustainability tools are built for sustainability officers.

They pull three-month-old billing data, run it through a proprietary model, and produce a PDF that engineers never see.

By the time you know your us-east-1 cluster emits twice as much as us-west-2 would have, it's been running for a quarter. The architecture is locked in. The carbon is already burnt.

The only moment you can actually change what gets deployed is the pull request.

So I built a tool that lives there.


What GreenOps CLI does

It's a GitHub Action that reads a terraform show -json plan output and posts a carbon and cost diff directly on the PR, across AWS, Azure, and GCP, before anyone clicks merge.

Here's what it posted on a real PR this week:


🌱 GreenOps Infrastructure Impact

Metric                    Monthly Total
Scope 2 — Operational     21.23 kg CO₂e
Scope 3 — Embodied         4.17 kg CO₂e
Total Lifecycle           25.40 kg CO₂e
Water Consumption          22.5 L
Infrastructure Cost       $280.32/month

Potential savings: −20.75 kg CO₂e/month (97.7%)
💡 3 recommendations found

Resource               Type         Region     Action
aws_instance.web       m5.xlarge    us-east-1  → eu-north-1
aws_instance.api       m5.large     us-east-1  → eu-north-1
aws_db_instance.main   db.m5.large  us-east-1  → eu-north-1

Enter fullscreen mode Exit fullscreen mode

That 97.7% saving exists because eu-north-1 (Stockholm) runs on near-zero carbon electricity at 8.8g CO₂e/kWh. us-east-1 sits at 384.5g CO₂e/kWh. The same infrastructure. Forty-four times the emissions. GreenOps surfaces that before you ship it.


The math is open

Every number comes from a static factors.json ledger you can read in ten minutes. The formula:

W_cpu    = W_idle + (W_max − W_idle) × utilisation
W_memory = memory_gb × 0.392 W/GB     ← CCF v3 standard
W_total  = W_cpu + W_memory
energy_kwh = W_total × PUE × 730h / 1000
co2e_g     = energy_kwh × grid_intensity_gco2e_per_kwh

Enter fullscreen mode Exit fullscreen mode

For m5.large in us-east-1 at 50% utilisation this produces 5,308g CO₂e/month. That value is asserted in engine.test.ts. You can verify it yourself from factors.json in under five minutes.

PUE differs by provider: AWS 1.13, Azure 1.125, GCP 1.10. Memory power draw is constant, DRAM draws near-constant power regardless of CPU utilisation, which is why memory-optimised instances carry disproportionately higher emissions than their vCPU count suggests.

The full methodology is at getgreenops.com/methodology. MIT-licensed. If you disagree with an assumption, open a PR.


It also posts inline suggestions

With post-suggestions: true, GreenOps posts a committable suggestion directly on the instance_type line in the PR diff.

The developer sees the suggestion in the Files changed tab. One click on "Commit suggestion" and the instance type is updated in place. No separate PR. No separate ticket. The carbon reduction is captured at the same moment the infrastructure decision is made.


GreenOps carbon analysis comment on a GitHub PR showing Scope 2 CO2e, Scope 3 embodied carbon, water consumption, cost, and three region-shift recommendations with 97.7% potential savings

GreenOps dashboard showing lifecycle CO2e trend chart, emissions prevented metric, and recent PR runs table with per-repository carbon data

It tracks history on the dashboard

Every run posts to getgreenops.com via an optional API key. The dashboard shows:

  • Total lifecycle CO₂e saved across all PRs
  • Trend chart over the last 90 days
  • Per-repository leaderboard
  • Per-run resource breakdown — every instance, every recommendation, every skipped resource with the reason why

Two lines of YAML

- name: GreenOps Carbon Analysis
  uses: omrdev1/greenops-cli@v0.7.0
  with:
    plan-file: plan.json
    github-token: ${{ secrets.GITHUB_TOKEN }}
    post-suggestions: true
    api-key: ${{ secrets.GREENOPS_API_KEY }}   # optional — enables dashboard

Enter fullscreen mode Exit fullscreen mode

Requires only pull-requests: write. No cloud credentials. No outbound network calls from the CLI. Works in air-gapped and SOC 2 environments where SaaS carbon tools cannot be deployed.


You can also enforce carbon budgets

Add .greenops.yml to your repo root:

version: 1
budgets:
  max_lifecycle_co2e_kg: 10
  max_pr_cost_increase_usd: 500
fail_on_violation: true

Enter fullscreen mode Exit fullscreen mode

fail_on_violation: true exits with code 1. The merge is blocked. The PR comment shows which constraint was breached and by how much.


Why this matters for CSRD

The EU Corporate Sustainability Reporting Directive requires large companies to report Scope 2 and Scope 3 emissions from 2024 onwards, with SMEs following from 2026.

Cloud infrastructure is one of the largest and fastest-growing sources of corporate Scope 2 emissions. Most companies have no mechanism to trace which team, which PR, which infrastructure decision drove which emission.

GreenOps creates that audit trail — per PR, per repository, per engineer — at the point where the decision was made. The methodology is CCF v3 aligned. Every formula is documented. Every number is testable.


Current coverage

  • ✅ AWS — 40 instance types across 14 regions
  • ✅ Azure — 16 instance types across 8 regions
  • ✅ GCP — 15 instance types across 7 regions
  • ✅ Scope 2 operational + Scope 3 embodied + water consumption
  • ✅ ARM instance upgrade recommendations (Graviton, Ampere Altra, T2A)
  • ✅ Region shift recommendations based on grid carbon intensity
  • ⚠️ Lambda/serverless — flagged as unsupported, not silently ignored

Try it in 5 minutes

Fork github.com/omrdev1/greenops-e2e-demo — it has the workflow, a Terraform config with intentionally high-carbon instances, and runs without an AWS account. Open a PR and GreenOps runs automatically.

Or add it to any existing Terraform repo:

- name: GreenOps Carbon Analysis
  uses: omrdev1/greenops-cli@v0.7.0
  with:
    plan-file: plan.json
    github-token: ${{ secrets.GITHUB_TOKEN }}

Enter fullscreen mode Exit fullscreen mode

No API key needed for the PR comment. The dashboard is optional.


github.com/omrdev1/greenops-cli
getgreenops.com
getgreenops.com/methodology

Built by Omar — Co-founder, Grafikui. Open source, MIT-licensed.