CI cost overlay inside the GitHub UI
The idea
GitHub Actions billing is designed to be ignored until the invoice hurts. Costs are only visible in a billing CSV that engineers never open, so nobody connects the macOS matrix job someone added in March to the overage line in April. The information exists; it is just displayed nowhere near the people creating the cost.
Standalone CI-analytics dashboards have tried to fix this and mostly failed for the same reason all secondary dashboards fail: nobody opens them. The wedge is putting the number on the page engineers already stare at daily, the run page itself. A badge reading 1.84 dollars, 41 percent cache misses next to a workflow run changes behaviour the way bundle-size PR comments did, with zero workflow change.
Who pays
The buyer is an engineering lead at a startup paying Actions overage, or a cost-conscious senior engineer who expenses a 19 dollar one-off licence for private-repo use. Free on public repos makes it spread through open-source maintainers who screenshot the badges. Distribution is the Chrome Web Store, a Show HN, and the recurring our CI bill doubled genre of posts where a screenshot of the overlay is the whole pitch.
MVP scope
- PAT-based fetch of workflow and job timing from the GitHub API, client-side only
- Billable-minute computation with per-OS multipliers and per-job rounding
- Injected cost badges on run lists, run detail and the PR checks tab
- Log parsing for cache hit rates with a wasted-minutes warning badge
- Editable pricing multiplier for discounted or self-hosted setups
- Skip for v1: org-wide spend dashboards, historical trend charts, GitLab CI, Firefox
Build ActionsLens, a Chrome extension (Manifest V3, TypeScript) that injects cost and efficiency data into GitHub's Actions pages. Setup: on first run the options page asks for a fine-grained PAT with Actions read scope, stored in chrome.storage.local, never sent anywhere except api.github.com. Include a hosted-runner pricing table in the extension (per-minute rates for ubuntu, windows, macos and the larger runner sizes) with an editable multiplier for teams on self-hosted or discounted plans. Core flow: a content script watches GitHub Actions pages (workflow run list, run detail, PR checks tab). For each visible run, fetch its jobs via the API, compute billable minutes per job (round each job up to the whole minute, per GitHub billing rules, and apply the OS multiplier: windows 2x, macos 10x), and inject a badge next to the run title: cost in dollars and total billable minutes. On the run detail page, add a per-job cost breakdown panel. Cache analysis: parse job logs for actions/cache and setup-node cache hit/miss lines; when misses exceed 30 percent of cache restores in a run, badge it with a cache-miss warning and the estimated wasted minutes. Handle GitHub's Turbo-drive navigation: re-run injection on turbo:load and mutation-observe the run list. Cache API responses per run ID in memory to stay inside rate limits. Pricing: free for public repos, 19 dollar one-off licence for private repos, offline key check.
// More Dev tool ideas
-
Deprecation countdowns for the APIs you use
Stripe and Shopify deprecations hide in changelogs until things break; this scans your code for affected calls and gives you a countdown.
Dev tool 1 month -
App store reviews filed as GitHub issues
Bug reports buried in app store reviews never reach the tracker; this clusters new reviews and files deduped GitHub issues nightly.
Dev tool 1 week -
Nightly restore drills for database backups
A backup you've never restored is a guess; this restores your Postgres dump to a scratch instance nightly and proves the data is intact.
Dev tool 1 week -
Hosted monitoring and alerts for BullMQ queues
A stuck BullMQ queue can silently eat jobs for days; hosted dashboards, dead-letter alerts and retry controls without running Grafana.
Dev tool 1 week