agent-footprint
A live view of the environmental footprint of your AI coding agents: electricity, water, carbon and mineral/metal depletion, across the full life cycle (running the servers plus a time-share of manufacturing them). It reads the logs your agents already write, compares the numbers to everyday things (phone charges, glasses of water, km driven) and shows day, week, month and year overviews. The impact model is EcoLogits.
Install
Python 3.10+. Until it is on PyPI, install from a checkout of this repository:
uv tool install --editable ".[zstd]"
Once published:
uvx agent-footprint serve # try it without installing
uv tool install agent-footprint # or: pipx install agent-footprint
Optionally, open the view automatically whenever you start a coding agent (run from an installed
copy, not uvx):
agent-footprint setup # asks per agent; --yes for all, --status to check, --remove to undo
Usage
agent-footprint serve # browser dashboard at http://localhost:8765
agent-footprint watch # terminal view: today, all agents, live
agent-footprint watch --week # also --month, --year; e.g. --month 2026-09
agent-footprint watch latest # follow the newest session (or pass a session id)
agent-footprint watch --once # print a snapshot and exit
agent-footprint open # open the terminal view in a split next to this one
agent-footprint info # versions, agents and log folders found, history size
agent-footprint config # create the config file and print its path
agent-footprint update # upgrade agent-footprint and EcoLogits
watch keys: ←/→ step through Year, Month, Week, Today and active sessions · ↓/↑ previous/next
period · y m w d jump to a period · 1–9 Today or an active session · f follow newest · q quit.
Supported agents
✅ works · 🧪 implemented, not yet tried on a real install · ❌ not supported
| Agent | Reads usage | Opens view on session start (setup) |
|---|---|---|
| Claude Code (CLI, VS Code, JetBrains) | ✅ | ✅ |
| Codex CLI (and its IDE extensions) | 🧪 | 🧪 |
| Gemini CLI | 🧪 | 🧪 |
| OpenCode | 🧪 | 🧪 |
| Mistral Vibe | ✅ | ❌ |
| GitHub Copilot, VS Code chat¹ | ✅ | ❌ |
| Copilot CLI, Cursor, Windsurf, Cline / Roo Code, Continue, Aider | ❌ | ❌ |
¹ Copilot logs one prompt size per request, so its input tokens are estimated.
Past sessions are read too, and usage is kept in a local history after agents delete their logs. Only token counts, timestamps, model names and session/project ids are stored; no prompts or responses (session titles are opt-in).
Supported systems
| System | Works | Notes |
|---|---|---|
| Linux | ✅ | |
| WSL | ✅ | Also reads agents installed on the Windows side; run setup in Windows for their hooks |
| Windows | ✅ | PowerShell, cmd, Windows Terminal, VS Code |
| macOS | 🧪 | No Mac tested yet; iTerm2/Terminal ask once for Automation permission |
agent-footprint open (and the setup hook) picks the right way to show the view:
| Terminal | Opens | Tried |
|---|---|---|
| Terminator | split pane | ✅ |
| tmux, zellij, kitty², WezTerm, iTerm2, Windows Terminal | split pane | 🧪 |
| GNOME Terminal, Konsole, macOS Terminal | new tab or window | 🧪 |
| IDE terminals and anything else | browser dashboard | ✅ |
² needs allow_remote_control yes in kitty.conf.
How the numbers are computed
Each response's model and token counts go into EcoLogits' LLM inference methodology. Because coding agents re-send large cached contexts, input tokens are also counted, at a small weight relative to output tokens (configurable; set to 0 for pure EcoLogits figures). Treat the results as order-of-magnitude estimates, not measurements.
More in docs/details.md: log locations, history, the methodology and its assumptions, how figures are kept current, and configuration.
Development
uv sync --extra zstd
uv run python -m pytest
To add an agent, subclass FileSource in src/agent_footprint/sources/base.py (see the existing
sources) and register it in sources/__init__.py.
License
MIT; see LICENSE. EcoLogits is MPL-2.0 and is installed as a dependency, not bundled.
Metadata
Release files for agent-footprint 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| agent_footprint-0.1.0.tar.gz | 149.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agent_footprint-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 242.1 kB
Release files / agent_footprint-0.1.0.tar.gz
| Download URL | agent_footprint-0.1.0.tar.gz |
|---|---|
| Size | 149.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
222a93ea79f76f8f060843abfa52ec86a7ca86520ec04bc62f5211ec1bce8d48
|
|
BLAKE2b-256 checksum How to use checksums |
370bc4194298c135f795378c4d9003fd86556cea9a515c806cf27a26e06b503e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / agent_footprint-0.1.0-py3-none-any.whl
| Download URL | agent_footprint-0.1.0-py3-none-any.whl |
|---|---|
| Size | 93.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
25138c09286f389e9f34e6fac7f4b427255e02e2bdfa6f4c9d231bfb786f8f7f
|
|
BLAKE2b-256 checksum How to use checksums |
f905610dfc7c0ff5a4286fcd5b36b3f76351016e2bbfe560fe499bc3e4ebf04b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|