Skip to content

Welcome to GitHub's Green Software Directory!

License

Notifications You must be signed in to change notification settings

github/GreenSoftwareDirectory

Repository files navigation

GitHubGSD


GitHub's Green Software Directory is a simple and easy-to-use resource that all developers can use to adopt green software tools. This list aims to help any developer find green software projects available on GitHub.

What is “Green Software”?

Green software meets all of our modern needs while being carbon aware and efficient. Only three activities reduce the carbon emissions of software: energy efficiency, carbon awareness, and hardware efficiency.

As technology industry energy use grows, we believe we have a responsibility to help support sustainable practices and reduce the environmental impact of software we build.

climate-indicators Image source: Open access climate visuals on GitHub from Ed Hawkins.

Our Directory

We reviewed all repositories on GitHub that self-identified being green software tools as their primary purpose. We compiled these into a directory of resources built by our community, for our community.

We were particularly inspired by the Green Software Foundation's awesome-green-software list, a valuable resource that has been developed by the Green Software Foundation community over the past few years, and the Open Sustainable Technology directory.

This list is managed by GitHub Sustainability with the Social Impact Team.

Categories:

Do you know of an incredible green software repository that we missed? Let us know! This list is meant to continually grow and develop, so we welcome any suggestions from our community on how we can improve it. Create a pull request with a brief explanation to add a new project.

Measurement

Help measure and interpret the impact of emissions and the environmental impact of software use.

  • Scaphandre: Scaphandre [skafɑ̃dʁ] is a metrology agent dedicated to electric power and energy consumption metrics. Use it to measure the power consumption of your tech services and get this data in a convenient form, sending it through any monitoring or data analysis toolchain.
  • Kepler: Kepler (Kubernetes-based Efficient Power Level Exporter) uses eBPF to probe performance counters and other system stats, uses ML models to estimate workload energy consumption based on these stats, and then exports them as Prometheus metrics. Use it to learn about energy consumption of Kubernetes components such as Pods and Nodes.
  • Codecarbon: A Python package that estimates your hardware electricity power consumption (GPU + CPU + RAM) and then applies to it the carbon intensity of the region where the computing is done.
  • Cloud-carbon-footprint: A tool to estimate energy use (kilowatt-hours) and carbon emissions (metric tons CO2e) from public cloud usage.
  • Carbon-aware-sdk: A toolset to help you measure the carbon emissions of your software, in turn helping you measure and reduce your software's carbon emissions, and choose when and where you run your software to make it greener.
  • CO2.js: An open-source JavaScript library that enables you to estimate the carbon emissions produced by transferring bytes of data on the internet, get different forms of grid intensity data such as annual average and marginal data by country, and make automated queries against Green Web Foundation’s Green Domain’s dataset.
  • Carbontracker: Track and predict the energy consumption and carbon footprint of training deep learning models.
  • Experiment-impact-tracker: A simple drop-in method to track energy usage, carbon emissions, and compute utilization of your system.
  • Eco2AI: The Eco2AI is a Python library for CO2 emission tracking. It monitors energy consumption of CPU & GPU devices and estimates equivalent carbon emissions taking into account the regional emission coefficient. The Eco2AI is applicable to all Python scripts and all you need is to add the couple of strings to your code. All emissions data and information about your devices are recorded in a local file.
  • Greenframe-cli: Estimate carbon footprint of a user scenario on a web application.
  • Impact: ML has an impact on the climate, but not all models are born equal. Calculate machine learning emissions and add the results to your paper with this generated latex template.
  • Zeus: Zeus is a library for (1) measuring the energy consumption of Deep Learning workloads and (2) optimizing their energy consumption.
  • Powerapi: PowerAPI is a middleware toolkit for building software-defined power meters. Software-defined power meters are configurable software libraries that can estimate the power consumption of software in real-time. PowerAPI supports the acquisition of raw metrics from a wide diversity of sensors (eg., physical meters, processor interfaces, hardware counters, OS counters) and the delivery of power consumptions via different channels (including file system, network, web, graphical). As a middleware toolkit, PowerAPI offers the capability of assembling power meters «à la carte» to accommodate user requirements.
  • Green-cost-explorer: See how much of your cloud bill is spent on fossil fuels, so you can do the right thing and switch. We're in a climate crisis, remember? This will show you your climate-related spend analysis for AWS.
  • Green-metrics-tool: Measures the energy and CO2 consumption of software through a software life cycle analysis (SLCA).
  • Carbonalyser: The add-on "Carbonalyser" allows you to visualize the electricity consumption and greenhouse gases (GHG) emissions that your Internet browsing leads to.
  • GreenIT-Analysis: GreenIT-Analysis est une extension pour navigateur qui vous permet de quantifier les impacts environnementaux d'un parcours utilisateur complet, même derrière un firewall et / ou une authentification applicative. L'outil vérifie également l'utilisation de bonnes pratiques visant à diminuer ces impacts.
  • Tracarbon: Tracarbon tracks your device's energy consumption and calculates your carbon emissions using your location.
  • Carbonifer: Command Line Tool to control carbon emission of your cloud infrastructure. Reading Terraform files, carbonifer plan will estimate future Carbon Emissions of infrastructure and help make the right choices to reduce Carbon footprint.
  • PyJoules: A Python library to capture the energy consumption of code snippets.
  • Powerjoular: PowerJoular is a command line software to monitor, in real time, the power consumption of software and hardware components.
  • Eco-ci-energy-estimation: A project aimed at estimating energy consumption in continuous integration (CI) environments.
  • Perun: Perun is a Python package that calculates the energy consumption of Python scripts by sampling usage statistics from your Intel, Nvidia or AMD hardware components. It can handle MPI applications, gather data from hundreds of nodes, and accumulate it efficiently. perun can be used as a command-line tool or as a function decorator in Python scripts.
  • Cloud-scanner: Get Boavizta impact data for your aws cloud account usage.
  • E-footprint: The current perimeter is the carbon footprint associated with the fabrication and usage of servers, storage, network (usage only) and end-user devices necessary for the existence of a digital service. Other environmental impacts (water, rare earth metals, etc.) will be added soon through an integration with the Boavizta API, and the lifecycle phases of device transportation and end of life are currently considered negligible.
  • Carbon-tools: A set of CO2 footprint tools to measure the impact of the code we ship.
  • Ecoinfra: Ecoinfra is a powerful tool that helps you predict, asses, and reduce the environmental impact of your cloud infrastructure. By integrating your existing or new IaC project you can harness predictive sustainability into your cloud operations.
  • PSElectricityMaps: This PowerShell module is intended for retrieving emissions data from CO2 Signal for a supplied Azure Region during resource deployments. This is a lightweight solution making use of non-commercial functionality available with a free account at ElectricityMaps. This means the module is only able to get near-realtime emissions data and no prodictive values. This means this module is not a real solution for reduced carbon deployments and -software. It does however provide some nice realtime values so you can simulate the beheaviour of deployments and software based on emissions data without the cost of a paid account for such data. For example in lab- or proof of concept environments.
  • PSWattTime: This PowerShell module is intended for retrieving emissions data from WattTime for a supplied Azure Region during resource deployments.
  • Carbon-appinsights: Azure Function for logging PSElectricityMaps results for Azure regions to Application Insights.
  • Energy-consumption-measuring-toolkit: While running applications on-premises or in the cloud, the main consumers of power on a server will be the CPU, the GPU, the memory, and the Tech Stack. Estimating how much each consumes will give an estimate of how much power your server, or your application on a server, consumes.
  • Green-kernel: This project creates an addition to the Linux Kernel which enables developers and end-users to see and quantify the energy cost of their running software on a process level.
  • FrameworkBenchmarks: This project provides representative performance measures across a wide field of web application frameworks. With much help from the community, coverage is quite broad and we are happy to broaden it further with contributions.
  • Energy-Languages: The complete set of tools for energy consumption analysis of programming languages, using Computer Language Benchmark Game.
  • Coppers: Measure energy consumption of unit tests, Rust.
  • Cloud-jewels: Estimate energy consumption using GCP Billing Data.
  • Green-algorithms-tool: The Green Algorithms project aims at promoting more environmentally sustainable computational science. It regroups calculators that researchers can use to estimate the carbon footprint of their projects, tips on how to be more environmentally friendly, training material, past talks etc.
  • Carbonara: This is a custom element to compute web navigation carbon footprint.
  • Cpu-energy-meter: A tool for measuring energy consumption of Intel CPUs.
  • IF: GSF Impact Framework for environmental impacts of software.
  • Experiment Runner: The Experiment Runner provides a framework for automatically executing measurement-based experiments on any platform with dedicated plugins for energy related metrics collection.
  • Android Runner: The Android Runner provides a framework for automatically executing measurement-based experiments on native and web applications running on Android devices with dedicated plugins for energy related metrics collection.
  • Robot Runner: The Robot Runner provides a framework for automatically executing measurement-based experiments on robotics software with dedicated plugins for energy related metrics collection.
  • Cardamon Cardamon is able to measure front-end websites and associated back-end server processes for end to end measurements compatible with ISO 21031 SCI specification.
  • EcoLogits: Estimate and track energy consumption and environmental impacts of generative AI models via APIs.
  • BoaviztAPI: Multi-criteria environmental impacts of IT resources taking into account hardware manufacturing and usage as a self-hostable API.
  • ecobenchmark-applicationweb-backend: Benchmarking different webapp scenario to compare energy consumption on several programming languages and dev practices.
  • Aether: Aether is a calculation engine that uses metrics of infrastructure and calculates emissions in real-time based on factors.
  • Cloud Assess: The next generation cloud carbon calculator: an open source tool to automatically assess your environmental footprint as a cloud service provider.

Carbon Efficiency

Start making changes to your software and architecture to use less energy and emit less carbon.

  • Kube-green: A simple k8s add-on that automatically shuts down some of your resources when you don't need them.
  • Kernel_tuner: Create optimized GPU applications in any mainstream GPU programming language (CUDA, HIP, OpenCL, OpenACC).
  • Ec0lint: Ec0lint is a static code analysis tool that provides users with hints on how to reduce the carbon footprint of their websites during the development process. Applying code changes suggested by ec0lint results in lower carbon emissions per visit, quicker loading and higher space efficiency. The tool is open-source and community-driven.
  • ecoCode: EcoCode is a collective project aiming to reduce environmental footprint of software at the code level. The goal of the project is to provide a list of static code analyzers to highlight code structures that may have a negative ecological impact: energy and resources over-consumption, "fatware", shortening terminals' lifespan, etc.
  • Geopm: The Global Extensible Open Power Manager (GEOPM) provides a framework to explore power and energy optimizations on platforms with heterogeneous mixes of computing hardware.
  • Ecocode-mobile: Mobile apps running on top of battery-limited, android-powered devices are more than others concerned by the reduction of their environmental footprint. Hence, we created ecoCode android, the version of ecoCode project fully dedicated to the Android platform. It provides static code analyzers to highlight code structures that may have a negative ecological impact: energy over-consumption, "fatware", shortening devices' lifespan, etc.
  • EcoSonar: Raising the awareness of delivery teams to environmental issues: enabling development teams to consider the environmental impact of digital technology during development and to promote knowledge of best eco-design and accessibility practices.
  • EcoCode-ios: Mobile apps running on top of battery-limited devices are more than others concerned by the reduction of their environmental footprint. Hence, we created ecoCode iOS, the version of ecoCode project fully dedicated to the iOS platform. It provides static code analyzers to highlight code structures that may have a negative ecological impact: energy over-consumption, "fatware", shortening devices' lifespan, etc.

Carbon Awareness

Learn behavior changes that will enable less carbon emissions.

  • Region-carbon-info: This repository contains sustainability characteristics of Google Cloud regions in a machine readable format. Read more on the Google Cloud website.
  • Carbon-aware-keda-operator: This repo provides a Kubernetes operator that aims to reduce carbon emissions by helping KEDA scale Kubernetes workloads based on carbon intensity.
  • Grid-intensity-go: A tool written in Go, designed to be integrated into Kubernetes, Nomad, and other schedulers, to help you factor carbon intensity into decisions about where and when to run jobs.
  • Vessim: Vessim is a versatile co-simulation testbed for carbon-aware applications and systems which connects domain-specific simulators for renewable power generation and energy storage with real software and hardware.
  • Carbon-Aware-Computing: The goal of this project is to provide developers with hassle free, easy to use, ready to run tools for carbon aware computing. All libraries and data are open source and open data with unrestricted usage. Within private, open source and commercial software. This project will deliver a set of libraries, services and data. There are mostly extensions to other projects and all credits belong to them. To forecast the best execution time the Carbon Aware SDK from the Green Software Foundation is used. The Forecast and actual data is from Energy-Charts provided by Fraunhofer ISE. For UK the data is provided by UK National Grid ESO.
  • Carbon-minimiser: The National Grid have created a Carbon Intensity API for Great Britain. This allows you to access to predictions for carbon intensity across England, Scotland, and Wales. The Carbon Minimiser sits on top of this, and allows you to estimate the optimal time to perform actions to reduce their impact on the planet, by choosing times when your area has a lower carbon intensity.
  • Hangfire.Community.CarbonAwareExecution: A Hangfire extension to schedule tasks with carbon awareness in mind. The best point in time is calculated based on emission forecasts to get a window with a minimal grid carbon intensity.

Special Tools

  • Nvidia-co2: Show gCO2eq emissions information with nvidia-smi, at the top right corner. For example: 79.2gCO2eq/h or 23.76mm^2/h sea ice.
  • Sustainability-scanner: Sustainability scanner is an open source tool that helps you create a more sustainable infrastructure on AWS. It takes in your Cloudformation template as input, evaluates it against a set of sustainability best practices and generates a report with a sustainability score and suggested improvements to apply to your template.
  • Leaf: LEAF is a simulator for analytical modeling of energy consumption in cloud, fog, or edge computing environments. It enables the modeling of simple tasks running on a single node as well as complex application graphs in distributed, heterogeneous, and resource-constrained infrastructures. LEAF is based on SimPy for discrete-event simulation and NetworkX for modeling infrastructure or application graphs.
  • Lite-youtube-embed: Provide videos with a supercharged focus on visual performance. This custom element renders just like the real thing but approximately 224× faster.
  • Ipmitool: An open-source tool for controlling IPMI-enabled systems that gets the power consumption of a bare metal machine.
  • Ethereum-nft-activity: How much energy does it take to power popular Ethereum-backed CryptoArt platforms? And what emissions are associated with this energy use?
  • Carbon.txt: A proposed convention for making it possible demonstrate that your infrastucture uses green power.

Contributing to GitHub's Green Software Directory

We are looking for projects on GitHub that are actively being used/developed and can be used by others.

  • Create a fork of this project.
  • Create a new branch
  • Add your project to a relevant category in the following format: [Project Name](Project URL) - A sentence that describes your project.
  • Create a pull request and wait for it to be reviewed and merged.
  • Further details on how create pull requests can be found in the official GitHub documentation.