{"id":315331,"name":"AI Wattch","description":"Chrome browser extension to measure ChatGPT carbon emissions during conversations.","url":"https://github.com/AIWattch/AI-Wattch","last_synced_at":"2026-04-22T02:30:17.677Z","repository":{"id":272505841,"uuid":"916763281","full_name":"AIWattch/AI-Wattch","owner":"AIWattch","description":"AI Wattch is an open-source browser extension that tracks the energy use and carbon emissions of prompts on AI chatbots like ChatGPT and Claude. Powered by Antarctica’s One Token Model (OTM), it detects the model used, estimates real inference impact, and provides daily summaries and prompt-level tips to enable more carbon-aware AI usage.","archived":false,"fork":false,"pushed_at":"2026-04-05T01:58:26.000Z","size":542,"stargazers_count":15,"open_issues_count":10,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-13T02:02:02.963Z","etag":null,"topics":["carbon-emissions","carbon-footprint","chatgpt","claude","energy-consumption","energy-efficiency","greenai","llm-inference","otm-methodology"],"latest_commit_sha":null,"homepage":"https://www.antarctica.io/ai-wattch","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AIWattch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-14T18:05:02.000Z","updated_at":"2026-03-29T07:37:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"d4941232-8c29-4880-985f-c2f3359dd4b8","html_url":"https://github.com/AIWattch/AI-Wattch","commit_stats":null,"previous_names":["aiwattch/browser-extension"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/AIWattch/AI-Wattch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIWattch%2FAI-Wattch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIWattch%2FAI-Wattch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIWattch%2FAI-Wattch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIWattch%2FAI-Wattch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AIWattch","download_url":"https://codeload.github.com/AIWattch/AI-Wattch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIWattch%2FAI-Wattch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32073496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T01:35:38.224Z","status":"online","status_checked_at":"2026-04-21T02:00:06.111Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"AIWattch","name":"AIWattch","uuid":"194869638","kind":"organization","description":"Browser plugin to measure LLM carbon emissions during inference","email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/194869638?v=4","repositories_count":1,"last_synced_at":"2025-01-14T21:39:09.001Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/AIWattch","funding_links":[],"total_stars":0,"followers":0,"following":0,"created_at":"2025-01-14T21:39:09.024Z","updated_at":"2025-01-14T21:39:09.024Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AIWattch","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AIWattch/repositories"},"packages":[],"commits":{"id":11615199,"full_name":"AIWattch/AI-Wattch","default_branch":"master","total_commits":12,"total_committers":4,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":3.0,"dds":0.41666666666666663,"past_year_total_commits":12,"past_year_total_committers":4,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":3.0,"past_year_dds":0.41666666666666663,"last_synced_at":"2026-04-19T11:39:41.113Z","last_synced_commit":"e2b770b503e829d285a4a99ae413c2e72b3dc9dd","created_at":"2026-01-25T01:00:28.562Z","updated_at":"2026-04-19T11:39:40.138Z","committers":[{"name":"roshan00123","email":"roshan.dp26@gmail.com","login":"roshan00123","count":7},{"name":"outdoorclone","email":"pascalpjoly@gmail.com","login":"pascaljoly","count":2},{"name":"Antarctica","email":"ganesh.mohanty.1999@gmail.com","login":"ganeshmohanty","count":2},{"name":"Ganesh Mohanty","email":"ganesh@antarcticaglobal.com","login":null,"count":1}],"past_year_committers":[{"name":"roshan00123","email":"roshan.dp26@gmail.com","login":"roshan00123","count":7},{"name":"outdoorclone","email":"pascalpjoly@gmail.com","login":"pascaljoly","count":2},{"name":"Antarctica","email":"ganesh.mohanty.1999@gmail.com","login":"ganeshmohanty","count":2},{"name":"Ganesh Mohanty","email":"ganesh@antarcticaglobal.com","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIWattch%2FAI-Wattch/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-21T00:00:07.949Z","repositories_count":6215190,"commits_count":899391678,"contributors_count":34905540,"owners_count":1143736,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"AIWattch/AI-Wattch","html_url":"https://github.com/AIWattch/AI-Wattch","last_synced_at":"2026-04-16T01:06:37.078Z","status":null,"issues_count":0,"pull_requests_count":1,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":487.0,"issues_closed_count":0,"pull_requests_closed_count":1,"pull_request_authors_count":1,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":0.0,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":487.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"created_at":"2026-01-22T10:00:10.340Z","updated_at":"2026-04-16T01:06:37.078Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIWattch%2FAI-Wattch","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/AIWattch%2FAI-Wattch/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{},"pull_request_author_associations_count":{"NONE":1},"issue_authors":{},"pull_request_authors":{"roshan3109":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-19T00:00:13.985Z","repositories_count":14315615,"issues_count":34519360,"pull_requests_count":112963229,"authors_count":11238165,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"NONE":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"roshan3109":1},"maintainers":[],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":2,"ForkEvent":1,"IssuesEvent":4,"IssueCommentEvent":1,"PushEvent":3,"PullRequestReviewEvent":2,"CreateEvent":2},"last_year":{"PullRequestEvent":2,"ForkEvent":1,"IssuesEvent":4,"IssueCommentEvent":1,"PushEvent":3,"PullRequestReviewEvent":2,"CreateEvent":2}},"keywords":["carbon-emissions","carbon-footprint","chatgpt","claude","energy-consumption","energy-efficiency","greenai","llm-inference","otm-methodology"],"dependencies":[],"score":4.605170185988091,"created_at":"2025-04-29T00:06:19.588Z","updated_at":"2026-04-22T02:30:17.687Z","avatar_url":"https://github.com/AIWattch.png","language":"TypeScript","category":"Consumption","sub_category":"Computation and Communication","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# AI Wattch - Track Your AI Footprint\n\nDiscover how your AI usage impacts the planet. Measure, compare, and optimize your AI footprint in real time.\n\n### Available on:\n\n1. [**Chrome Web Store**](https://chromewebstore.google.com/detail/ai-wattch-track-your-ai-f/dicpbfeifndejijbnhenndlnbnglkgcl)\n2. [**Firefox Store**](https://addons.mozilla.org/en-US/firefox/addon/aiwattch/?utm_source=addons.mozilla.org\u0026utm_medium=referral\u0026utm_content=search)\n\n## Project Summary\n\n[AI Wattch](https://antarctica.io/ai-wattch) is an open-source browser extension powered by[Antarctica’s One Token Model (OTM)](https://antarctica.io/research/one-token-model) that estimates the energy use and carbon footprint of end-user interactions with LLM-powered chat interfaces such as ChatGPT, Claude and Gemini. It combines token-based and time-based estimation, regional infrastructure mapping, and model-specific parameters to deliver transparent, science-backed emissions reporting per session.\n\n## Why AI Wattch\n\n- **Transparency:** Makes invisible energy costs visible - per session, per token, per model.\n- **Efficiency:** Helps people prompt more efficiently and choose more efficient models.\n- **Privacy:** Prioritizes privacy; no chat text leaves the browser.\n- **Scalability:** Built for extensibility: multi-model, multi-region, multi-browser roadmap.\n\n## How it works (high level)\n\n1. The extension parses the page DOM for supported chat UIs (ChatGPT, Claude and Gemini).\n2. It captures lightweight telemetry (timestamps, token counts, model selection) - never full chat text.\n3. Two estimation approaches run (token-based \u0026 time-based). Both can be combined into a hybrid estimate.\n4. Regional factors (PUE, grid carbon intensity) and model-specific hardware stats (TDP, quantization) convert energy → emissions.\n5. The UI surfaces real-time metrics, session summaries, model comparisons, and prompt-efficiency tips.\n\n## Supported Models \u0026 Platforms\n\nInitially supported (V1.5 / V2.0 planned mapping):\n\n- **ChatGPT model family** (manual selection for ChatGPT Pro/Plus; automatic detection for free-tier where possible)\n- **Claude family** (automatic detection via DOM parsing)\n- **Gemini** (manual selection for Gemini Pro/Plus; automatic detection where possible)\n- **Planned:** other LLMs (modular architecture supports adding new detectors)\n\n## Browsers\n\n- **Chrome (MV3)** - current release\n- **Firefox** - current release\n\n## Methodologies (overview)\n\nAI Wattch runs two complementary estimators and a hybrid orchestration:\n\n### I. Token-based estimator (DOM-derived token proxy)\n\n- Counts characters/tokens from DOM, converts to tokens (default 4 chars/token, configurable 3–5).\n- Uses token energy factors (input/output) and infrastructure multipliers (PUE, grid intensity) to compute energy and emissions.\n\n### II. Time-based estimator (timestamp-derived compute duration)\n\n- Uses timestamps T1 (request), T2 (first token), T3 (last token) to derive computation time.\n- Maps computation time to GPU power, utilization, server baseline, and PUE → energy → emissions.\n\n### III. Hybrid \u0026 model-aware approach (Antarctica enhancements)\n\n- Uses model-specific metadata (total/active params, quantization, estimated active GPUs, GPU TDP \u0026 memory, token generation rate) to refine active GPU count and per-token energy.\n- Dynamically applies regional PUE and carbon intensity based on IP region or manual selection.\n- Handles edge cases (summarization, streaming vs. batch, cached responses fallback logic).\n\n---\n\n## Install / Build / Run (developer)\n\n### Prerequisites\n\n- Node.js (LTS recommended)\n- npm or yarn\n- Chrome (for load-unpacked development)\n\n### Clone \u0026 Install\n\n```bash\ngit clone https://github.com/AIWattch/AI-Wattch.git\ncd ai-wattch-ext\nnpm install\n```\n\n### Development Build (watch)\n\n```bash\nnpm run dev\n```\n\nLoad `dist/` via `chrome://extensions` → Developer mode → Load unpacked → select `browser-extension/dist`.\n\n### Production Build\n\n```bash\nnpm run build:extension\n```\n\nArtifact appears in `dist/`. Use packaged release workflow for Chrome Web Store.\n\n### Release\n\n1. Create a release branch `release/vX.Y.Z`\n2. Update `CHANGELOG.md` and `package.json` version\n3. `npm run build:extension` → create zip → upload to GitHub Release and Chrome Web Store.\n\n---\n\n## Development Workflow \u0026 Recommended Practices\n\n- **Language:** TypeScript (strict mode)\n- **Linting:** ESLint + Prettier (pre-commit hook)\n- **Commit style:** Conventional commits (feat/fix/chore/docs)\n- **Branching:** feature branches, one feature per PR\n- **PR checklist (required):** build passes, tests pass, docs updated, minimal surface area\n\n## Testing\n\n**Unit tests:** Vitest\n**Run tests:**\n\n```bash\nnpm test\n```\n\n### Tests cover:\n\n- Token counting \u0026 character → token mapping\n- Timestamp-based computation logic\n- Basic model-detection flows (mock DOM)\n- Regional lookup fallbacks\n\n### Integration \u0026 Scenario Tests (recommended):\n\nEnd-to-end simulation with recorded DOM payloads (place in `tests/fixtures/`)\n\n## Contributing \u0026 Governance\n\nWe welcome contributions. Please follow these steps:\n\n1. Fork the repo.\n2. Create branch `feature/\u003cshort-description\u003e`.\n3. Commit with a clear message; open a PR.\n4. Add tests and update docs.\n5. One feature per PR; link relevant issue.\n\n**Pre-PR:** For major architectural or methodology changes, open an issue to discuss design and data assumptions (methodology is research-sensitive). Maintain transparency in how variables are chosen and cite sources in PR descriptions.\n\n### Docs to Add/Maintain\n\n- [**CONTRIBUTING.md**](./CONTRIBUTING.md) (detailed)\n- [**CODE_OF_CONDUCT.md**](./CODE_OF_CONDUCT.md)\n- [**SECURITY.md**](./SECURITY.md) (vulnerability reporting)\n\n## Privacy \u0026 Security\n\n- AI Wattch does not send chat contents off-device.\n- The extension collects minimal telemetry (token counts, timestamps, model id) used only for computation.\n- IP-based region detection is optional - users can manually set the region (privacy-first).\n- For any detected security/privacy issue: follow [**SECURITY.md**](./SECURITY.md) and do not open a public issue; contact maintainers.\n\n## Short Glossary \u0026 Variable Origin\n\n- **EcoLogits:** baseline token energy literature.\n- **Artificial Analysis:** latency \u0026 generation rate estimates.\n- **ArXiv:** academic sources used for deriving token → latency relations and GPU utilization assumptions.\n- **Quantization Q:** bytes per parameter mapping (INT4=0.5, INT8=1, FP16=2, FP32=4). Overhead factor ~1.2 applied.\n\n## Detection \u0026 Model Identification (implementation notes)\n\n- **Claude:** DOM parsing available - use robust selectors and feature flags; test extensively against different Claude UIs.\n- **ChatGPT:** detection possible via DOM; provide a manual model dropdown and clear UX to set model if detection fails.\n- **Gemini:** detection possible via DOM\n- **Fallbacks:** assume global average PUE \u0026 carbon intensity if location/model cannot be resolved.\n\n## Example Test Cases (to include under tests/fixtures)\n\n- **Short QA exchange (50 tokens output):** verify token and time estimators align within tolerance.\n- **Long summarization (15,000-word doc):** ensure chunking recommendation triggers and energy spike is reported.\n- **Rapid retries (3 prompts within 3 minutes):** ensure repetitive/iterative category detection and nudge.\n\n## License \u0026 Credits\n\n- **License:** MIT (see [**LICENSE**](./LICENSE) file).\n- Built by **Antarctica** \u0026 **IT Climate Ed** with contributions from the open-source community. See [**AUTHORS.md**](./AUTHORS.md).\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/315331","html_url":"https://ost.ecosyste.ms/projects/315331"}