Development carbon
An estimate of the energy and carbon emitted in developing and validating virgil: AI coding assistants, continuous integration and cluster jobs. It is refreshed by hand with python3 scripts/dev_carbon.py, so it lags the repository.
Estimated development carbon for benjaminpope/virgil from 2026-03-03 to 2026-10-29: 337 kg CO₂e (range 303–472 kg), from 669 kWh (range 568–1,036 kWh). Data analysis runs are listed separately below and are not in this total.
In everyday terms
The total of 337 kg CO₂e set against the three nearest items, on a log scale, in the ALPLA CO₂ Comparison Tool: the table the carbon tool uses for its everyday equivalents. The per-item figures are ALPLA's own, read from the calculator on 2026-10-01 (ALPLA is a plastic packaging maker), and have not been checked independently. The range follows the low and high totals.
| Item | kg CO₂e each | Equivalent to | Range |
|---|---|---|---|
| Manufactured smartphone | 80 | 4.2 | 3.8–5.9 |
| Economy flight Zurich–London | 232 | 1.5 | 1.3–2 |
| Year of driving an average car | 4,600 | 0.073 | 0.066–0.1 |
By source
| Source | Items | kWh | kWh range | kg CO₂e | kg range |
|---|---|---|---|---|---|
| OzSTAR/NT Slurm jobs | 2928 | 280 | 279–315 | 207 | 207–233 |
| Claude Code | 682 | 308 | 247–550 | 102 | 81.5–181 |
| GitHub Actions CI | 9889 | 34.4 | 21.6–34.4 | 12.7 | 7.97–12.7 |
| Gemini (Antigravity) | 4021 | 26.1 | 13.4–40.8 | 8.63 | 4.43–13.5 |
| Copilot cloud agent and review | 261 | 12.2 | 3.41–47 | 4.05 | 1.14–15.5 |
| VS Code Copilot Chat | 253 | 9.35 | 3.82–48.9 | 3.09 | 1.26–16.1 |
By call and token type
| Source | Type | Items | kWh | kg CO₂e | kg range |
|---|---|---|---|---|---|
| OzSTAR/NT Slurm jobs | GPU job | 2295 | 269 | 199 | 199–225 |
| Claude Code | model calls | 682 | 308 | 102 | 81.5–181 |
| GitHub Actions CI | CI | 9889 | 34.4 | 12.7 | 7.97–12.7 |
| Gemini (Antigravity) | model calls | 4021 | 26.1 | 8.63 | 4.43–13.5 |
| OzSTAR/NT Slurm jobs | CPU job | 633 | 10.8 | 7.97 | 7.97–7.97 |
| Copilot cloud agent and review | code review | 202 | 11 | 3.63 | 0.99–14 |
| VS Code Copilot Chat | local chat | 88 | 6.23 | 2.06 | 1.26–10.6 |
| VS Code Copilot Chat | local chat (imputed tokens) | 165 | 3.12 | 1.03 | 0–5.49 |
| Copilot cloud agent and review | cloud agent | 59 | 1.27 | 0.424 | 0.147–1.57 |
Claude Code by token type (mid estimate):
| Token type | Tokens | kg CO₂e |
|---|---|---|
| input | 281,901 | 0.0169 |
| cache write | 190,600,043 | 13.1 |
| cache read | 8,834,821,982 | 53.3 |
| output | 22,601,235 | 35.2 |
By model or workflow:
| Source | Model or workflow | Items | kg CO₂e | kg range |
|---|---|---|---|---|
| Claude Code | Claude Opus | 291 | 79.8 | 63.6–145 |
| Claude Code | Claude Sonnet | 376 | 21.6 | 17.9–36.5 |
| GitHub Actions CI | automated tests | 1733 | 12.3 | 7.7–12.3 |
| Gemini (Antigravity) | gemini-4-argon | 1942 | 7.46 | 3.38–10.3 |
| Gemini (Antigravity) | gemini-3.8-flash-tiered | 2079 | 1.16 | 1.05–3.19 |
| VS Code Copilot Chat | gpt-5.3-codex | 172 | 1.07 | 0.0272–5.77 |
| VS Code Copilot Chat | gpt-5.6-terra | 23 | 1.02 | 0.509–5.94 |
| VS Code Copilot Chat | claude-sonnet-5 | 19 | 0.393 | 0.393–1.52 |
| VS Code Copilot Chat | gpt-5.5-2026-04-23 | 13 | 0.285 | 0.142–1.09 |
| VS Code Copilot Chat | gpt-5.6-sol | 5 | 0.124 | 0.062–1.12 |
| GitHub Actions CI | lint | 1666 | 0.122 | 0.0764–0.122 |
| GitHub Actions CI | claude review | 2926 | 0.108 | 0.0676–0.108 |
| GitHub Actions CI | Documentation (Zensical) | 1256 | 0.0904 | 0.0567–0.0904 |
| GitHub Actions CI | Documentation | 705 | 0.0834 | 0.0523–0.0834 |
| VS Code Copilot Chat | gpt-5.5 | 2 | 0.0708 | 0.0354–0.179 |
| Claude Code | Claude Haiku | 15 | 0.0689 | 0.0621–0.0963 |
| VS Code Copilot Chat | claude-opus-5 | 3 | 0.0516 | 0.0516–0.121 |
| VS Code Copilot Chat | gpt-5.6-luna | 7 | 0.0378 | 0.0192–0.269 |
| GitHub Actions CI | ozstar-sync | 910 | 0.024 | 0.015–0.024 |
| VS Code Copilot Chat | mai-code-1.1-flash | 5 | 0.0196 | 0.0196–0.0617 |
| VS Code Copilot Chat | claude-haiku-4.5 | 3 | 0.0113 | 0.00215–0.0512 |
| VS Code Copilot Chat | copilot/auto | 1 | 0.00897 | 0–0.0179 |
| GitHub Actions CI | Dependency Graph | 44 | 0.00846 | 0.00531–0.00846 |
| GitHub Actions CI | review response label | 548 | 0.00562 | 0.00353–0.00562 |
| GitHub Actions CI | debug macos | 4 | <0.001 | <0.001–<0.001 |
| GitHub Actions CI | copilot-setup-steps | 19 | <0.001 | <0.001–<0.001 |
| GitHub Actions CI | upgrade uv.lock | 9 | <0.001 | <0.001–<0.001 |
| GitHub Actions CI | pages-build-deployment | 7 | <0.001 | <0.001–<0.001 |
| GitHub Actions CI | publish to PyPI | 2 | <0.001 | <0.001–<0.001 |
| GitHub Actions CI | size comment | 1 | <0.001 | <0.001–<0.001 |
| GitHub Actions CI | .github/workflows/review-response-label.yml | 56 | 0 | 0–0 |
| GitHub Actions CI | full CI on label | 3 | 0 | 0–0 |
By feature (top 15 of 485)
Each item is attributed to a pull request through its branch, the commit a job pinned, the PR a Copilot run served, or the PR a Gemini review names, and labelled with the PR title. Gemini work with no PR in this repository (audits, reviews of other repositories) is labelled by its project.
| Feature | Items | kg CO₂e | kg range |
|---|---|---|---|
| Validation: imaging contests | 2293 | 199 | 198–225 |
| main / unattributed | 558 | 44 | 33.8–90.4 |
| #364 Fix contributors nesting; drop duplicate docs list from README and index | 96 | 16 | 13.3–27 |
| Gemini: virgil audits and other work | 2021 | 6.41 | 2.95–9.22 |
| #201 virgil docs minor changes | 29 | 4.1 | 3.2–7.7 |
| #401 Docs examples: fix failing pages and stale outputs from the GPU gate | 82 | 3.65 | 3.58–3.87 |
| #435 Temper the short-arc sign gate and the cut's errors by f (Gl 229 gate) | 109 | 2.71 | 2.68–2.78 |
| #399 Release 0.4.0: version, uv.lock and restructured changelog | 204 | 1.58 | 1.17–2.07 |
| #76 Imaging Stage 3: Problem, fit, regularisers, L-curves and diagnose | 25 | 1.43 | 1.07–2.84 |
| Gemini: virgil-validation audits and other work | 716 | 1.4 | 0.75–2.14 |
| Validation: simulation-based calibration | 198 | 1.35 | 1.35–1.35 |
| #110 Imaging Stage 5d: a Gauss–Newton NUTS mass matrix, and the sampling tutorial; plan PMOIRED parity | 10 | 1.34 | 1.07–2.41 |
| #91 Imaging Stage 5c: error-bar scale, sampling basics, and imaging tutorials 2–4 | 13 | 1.28 | 0.977–2.47 |
| #292 Orbit search design (§14 revision) | 65 | 1.2 | 0.994–1.99 |
| #369 Add DiskPipeline (provisional): rings and GP disk models | 150 | 1.03 | 0.847–1.58 |
Copilot cross-check
Run time times an assumed token rate, against billing (AI Credits or premium requests) attributed to this repository. The headline uses billing where a month has it.
| Month | Kind | Runs | Minutes | kg (run time) | kg (billing) | Billing basis |
|---|---|---|---|---|---|---|
| 2026-03 | cloud agent | 12 | 57.6 | 0.0446–0.373 | – | – |
| 2026-03 | code review | 7 | 16.5 | 0.0128–0.107 | 0.0419–0.165 | 9.2 premium requests; local VS Code requests share |
| 2026-09 | cloud agent | 41 | 167 | 0.129–1.08 | 0.069–1.09 | 2,129 AI Credits; agent PR share |
| 2026-09 | code review | 24 | 95.7 | 0.0741–0.619 | 0.158–2.49 | 4,871 AI Credits; local VS Code credits share |
| 2026-10 | cloud agent | 8 | 54.1 | 0.0419–0.35 | 0.00385–0.0606 | 119 AI Credits; agent PR share |
| 2026-10 | code review | 178 | 672 | 0.52–4.35 | 0.737–11.6 | 22,756 AI Credits; repository-attributed row |
Excluded data analysis
Compute for science with virgil (fits to observations, data reduction and archive downloads), and anything whose purpose was unclear, is costed the same way but kept out of the total. It is shown only in aggregate. So are Gemini conversations about other projects (the website, cluster scripts, tool set-up) and the few that name no project.
| Item | Records | kWh | kg CO₂e | kg range |
|---|---|---|---|---|
| Excluded data analysis | 1,755 | 93 | 33.6 | 27–58.4 |
| Gemini work on other projects | 1,056 | 6.97 | 2.3 | 1.22–3.61 |
| Gemini work with no project | 74 | 0.592 | 0.195 | 0.0906–0.267 |
Scope and caveats
- What is counted. Development and validation of virgil: AI coding assistants, GitHub Actions CI, and jobs on Swinburne's OzSTAR/NT cluster. Validation jobs (simulation-based calibration, the imaging contests, detection false-alarm and orbit checks) are counted. Data analysis is not (see above).
- Claude Code was used from 2026-09-28, and is counted from its local transcripts on one machine: sessions in the virgil repository and its worktrees, but not in the separate virgil-validation and virgil-vlti repositories. Sessions run in the cloud (claude.ai, cloud agents) or on other machines are not stored locally and are not captured.
- Before that, VS Code Copilot Chat was the main assistant (from March 2026). Its logs give prompt and output tokens per request but no cache split, so prompts are costed as uncached input, which errs high.
- GPT and other non-Claude models have no published per-token energy. Each is assigned an assumed Claude size class (e.g. GPT-5.6 Sol and Terra and GPT-5.5 as Opus class, GPT-5.6 Luna and GPT-5.3-Codex as Sonnet class), with a range across the neighbouring classes.
- Gemini (Google Antigravity) has been used since 2026-10-27 for pull-request reviews and code audits (Gemini 4 Argon, with Gemini Flash for some calls). Token counts per model call come from Antigravity's local conversation databases. Reviews and audits of virgil and virgil-validation count; each conversation is attributed by the repository its review or audit names, else its workspace. Google publishes no per-token energy, so Argon is assumed Opus class and Flash Haiku class, with a range across the neighbouring classes. Google's measured 0.24 Wh for the median Gemini Apps text prompt (Elsworth et al. 2025) is far below the per-call figure here, as review calls carry contexts of 10⁴–10⁵ tokens.
- Copilot cloud agent and code review expose no token counts. Their billed AI Credits are converted to tokens at the rate measured on the local chat logs (572 credits per million tokens), with a factor-of-two range; months without credits use run time times a token rate.
- Data centres and grids. Model inference uses TokenClimate's PUE (1.14) and grid factor; GitHub runners assume a hyperscale PUE of 1.18 and the US average grid; NT assumes Green Algorithms' default PUE of 1.67 and the Victorian grid. None of these is published for the specific facilities.
- Cache reads dominate the uncertainty of the Claude figure. They are almost all of its tokens, costed at 0.08 times the input energy (range 0.05–0.20); at 1.0 the Claude figure would be several times larger.
- Model training, local hardware and the embodied carbon of the cluster are not included.
Methodology
Every figure is an estimate with a low, mid and high value; tables show the mid value and the range. Energy is facility energy (server energy times the data centre's PUE).
| Source | Telemetry | Energy model | Main assumptions |
|---|---|---|---|
| Claude Code | Token counts by type from local transcripts | TokenClimate per-token factors by model family | Cache reads at 0.08× input energy (range 0.05–0.2); PUE 1.14; 0.376 g CO₂e per server Wh |
| VS Code Copilot Chat | Prompt and output tokens per request from local chat logs | TokenClimate factors for an assumed model class | GPT and other non-Claude models placed in a Claude size class by assumption; prompts costed as uncached input; the high value counts every model call's prompt; requests without counts take the median of counted ones |
| Gemini (Antigravity) | Uncached input, cached-read input and output tokens per model call from local conversation databases | TokenClimate factors for an assumed model class | Gemini 4 Argon placed in the Opus class and Flash models in the Haiku class by assumption; cache reads as for Claude; only the configured projects count. Cross-check: Google's 0.24 Wh per median Gemini Apps text prompt (Elsworth et al. 2025) |
| Copilot cloud agent and review | Workflow run time; billed AI Credits and premium requests | Tokens from credits (or run time) on TokenClimate Sonnet factors | 572 credits per million tokens, measured on local chat (measured); account-wide billing attributed by this repository's share of local use or agent PRs |
| GitHub Actions CI | Runner time per job | Green Algorithms | 4 vCPU at 4.38 W each, 16 GB, usage 0.5–1.0, PUE 1.18, 0.37 kg/kWh |
| OzSTAR/NT Slurm jobs | sacct allocation and run time; NT Job Report usage | Green Algorithms | EPYC 7543 at 7.03 W per core, A100 at 400 W, measured usage where reported, PUE 1.67, Victorian grid 0.74 kg/kWh |
Not included: Claude sessions run in the cloud or on other machines, the energy to train the models, and the embodied carbon of local hardware. The cache-read factor dominates the uncertainty of the Claude figure, and Copilot's cloud inference is inferred from billing or run time rather than measured.
Sources
- TokenClimate, methodology
tokenclimate-v3-2026-09, https://tokenclimate.com/en/methodology - Lannelongue, L., Grealey, J. & Inouye, M. (2021), Green Algorithms: Quantifying the carbon footprint of computation, Advanced Science 8, 2100707, https://doi.org/10.1002/advs.202100707
- DCCEEW (2026), Australian National Greenhouse Accounts Factors, Table 1, https://www.dcceew.gov.au/climate-change/publications/national-greenhouse-accounts-factors
- Elsworth, C. et al. (2025), Measuring the environmental impact of delivering AI at Google scale, https://arxiv.org/abs/2508.15734
- US EPA, eGRID2022 (US average grid intensity, for GitHub-hosted runners)