abovedave/ai-eco-impact

MacOS menubar app which tracks AI usage through estimated carbon emissions and water & electricity usage.

Swift

2

5 commits

updated Sep 22, 2026

See the code

See what people are saying

SourceMessageScoreDate

AI Eco Impact MacOS Menubar (r/ClaudeAI)

I found this great little MacOS menubar app that estimates the eco impact of your Claude sessions. Sobering! https://github.com/abovedave/ai-eco-impact

0

Oct 4, 2026

README

Release

AI Usage Menu Bar

thumbnail

macOS menu bar app. Estimates energy, water, and carbon footprint of your coding-agent CLI usage (Claude Code, Codex, Gemini CLI) using local data only.

Inspired by this MIT Tech Review piece.

How it works

  • ccusage reads each tool's local logs and reports daily token usage.
  • EcoLogits methodology turns tokens into Wh / mL / gCO2e, based on model size, real latency stats, datacenter PUE/WUE, and grid carbon intensity.
  • Coefficients are precomputed at build time (scripts/build-coefficients.mjs → Resources/coefficients.json), not calculated live.
  • Only output tokens are counted (decode dominates inference energy).
  • Kimi and Grok aren't supported by EcoLogits, so their usage shows in the app but contributes $0 to environmental totals.

Caveat: order-of-magnitude estimate, not a measurement. Unknown/new models get mapped to the closest known model in the same family.

Install

  1. Download AIUsageMenuBar.zip from the latest release.
  2. Unzip it and drag AIUsageMenuBar.app to /Applications.
  3. Open it. It's signed with a Developer ID and notarized, so it should launch normally with no Gatekeeper warning.
  4. It has no Dock icon or window — look for it in the menu bar. From then on it checks for updates automatically via Sparkle.

Build & run

brew install xcodegen                 # one-time
node scripts/build-coefficients.mjs   # regenerate coefficients.json
xcodegen generate                     # regenerate .xcodeproj from project.yml
open AIUsageMenuBar.xcodeproj         # ⌘R to build & run

Generated Xcode 26+ project via XcodeGen — project.yml is the source of truth so re-run xcodegen generate after editing.

Runs ccusage's compiled binary directly (vendored in Vendor/ccusage/). Node is only needed for dev scripts, not for the built app.

Releasing

git tag vX.X.X && git push --tags   # triggers .github/workflows/release.yml

That workflow builds, signs, notarizes, publishes a GitHub Release, and updates the Sparkle appcast (docs/appcast.xml) for auto-updates. Auto-updates only work once the repo is public (Sparkle needs public release URLs).

One-time setup for releases (Apple Developer account required) — set these GitHub secrets:

SecretSource
DEVELOPER_ID_P12_BASE64Developer ID cert, exported as .p12, base64-encoded
DEVELOPER_ID_P12_PASSWORDThat export's password
TEAM_IDe.g., Z4ZXD95E9B
NOTARY_APPLE_IDApple ID email for notarization
NOTARY_PASSWORDApp-specific password (appleid.apple.com)
SPARKLE_PRIVATE_KEYFrom Sparkle's generate_keys -x (public half already in project.yml)

Local sanity check (no notarizing/zipping):

xcodegen generate
xcodebuild -project AIUsageMenuBar.xcodeproj -scheme AIUsageMenuBar -configuration Release build

abovedave/ai-eco-impact

MacOS menubar app which tracks AI usage through estimated carbon emissions and water & electricity usage.

Swift

2

5 commits

updated Sep 22, 2026

See the code

See what people are saying

SourceMessageScoreDate

AI Eco Impact MacOS Menubar (r/ClaudeAI)

I found this great little MacOS menubar app that estimates the eco impact of your Claude sessions. Sobering! https://github.com/abovedave/ai-eco-impact

0

Oct 4, 2026

README

Release

AI Usage Menu Bar

thumbnail

macOS menu bar app. Estimates energy, water, and carbon footprint of your coding-agent CLI usage (Claude Code, Codex, Gemini CLI) using local data only.

Inspired by this MIT Tech Review piece.

How it works

  • ccusage reads each tool's local logs and reports daily token usage.
  • EcoLogits methodology turns tokens into Wh / mL / gCO2e, based on model size, real latency stats, datacenter PUE/WUE, and grid carbon intensity.
  • Coefficients are precomputed at build time (scripts/build-coefficients.mjs → Resources/coefficients.json), not calculated live.
  • Only output tokens are counted (decode dominates inference energy).
  • Kimi and Grok aren't supported by EcoLogits, so their usage shows in the app but contributes $0 to environmental totals.

Caveat: order-of-magnitude estimate, not a measurement. Unknown/new models get mapped to the closest known model in the same family.

Install

  1. Download AIUsageMenuBar.zip from the latest release.
  2. Unzip it and drag AIUsageMenuBar.app to /Applications.
  3. Open it. It's signed with a Developer ID and notarized, so it should launch normally with no Gatekeeper warning.
  4. It has no Dock icon or window — look for it in the menu bar. From then on it checks for updates automatically via Sparkle.

Build & run

brew install xcodegen                 # one-time
node scripts/build-coefficients.mjs   # regenerate coefficients.json
xcodegen generate                     # regenerate .xcodeproj from project.yml
open AIUsageMenuBar.xcodeproj         # ⌘R to build & run

Generated Xcode 26+ project via XcodeGen — project.yml is the source of truth so re-run xcodegen generate after editing.

Runs ccusage's compiled binary directly (vendored in Vendor/ccusage/). Node is only needed for dev scripts, not for the built app.

Releasing

git tag vX.X.X && git push --tags   # triggers .github/workflows/release.yml

That workflow builds, signs, notarizes, publishes a GitHub Release, and updates the Sparkle appcast (docs/appcast.xml) for auto-updates. Auto-updates only work once the repo is public (Sparkle needs public release URLs).

One-time setup for releases (Apple Developer account required) — set these GitHub secrets:

SecretSource
DEVELOPER_ID_P12_BASE64Developer ID cert, exported as .p12, base64-encoded
DEVELOPER_ID_P12_PASSWORDThat export's password
TEAM_IDe.g., Z4ZXD95E9B
NOTARY_APPLE_IDApple ID email for notarization
NOTARY_PASSWORDApp-specific password (appleid.apple.com)
SPARKLE_PRIVATE_KEYFrom Sparkle's generate_keys -x (public half already in project.yml)

Local sanity check (no notarizing/zipping):

xcodegen generate
xcodebuild -project AIUsageMenuBar.xcodeproj -scheme AIUsageMenuBar -configuration Release build

Languages

Swift

76.1%

JavaScript

21.3%

Shell

2.6%