GitHub Actions costs are leaking, and most teams don't notice until it's too late
Source: Dev.to
What it does
CICosts installs as a GitHub App and receives a webhook event every time a workflow run completes. It multiplies the runner minutes by GitHub’s published pricing for that runner type (Linux, Windows, macOS, self‑hosted) and stores the result.
From there you get a dashboard showing cost:
- by workflow
- by repository
- by branch
- over time
You can set alerts when a workflow exceeds a threshold, see trends, spot regressions after PRs merge, and compare costs across environments.
Pricing math (as of writing)
- Linux runners: $0.008/minute
- Windows runners: $0.016/minute
- macOS runners: $0.08/minute
Example: a 12‑minute Linux workflow costs $0.096. Run it 500 times a day across 30 repositories and the cost adds up quickly.
Common waste patterns
Matrix explosions
A workflow that tests across 3 OS versions and 4 runtime versions runs 12 times per push. If the matrix was added incrementally, the cumulative cost can be surprising.
macOS runners for non‑macOS work
macOS runners cost roughly 10× more than Linux. They’re necessary for iOS builds, but they sometimes appear in backend pipelines because a workflow template was copied without adjustment.
Test parallelism without caching
Running tests in parallel is great, but if each parallel job re‑downloads large dependencies (e.g., 200 MB) because the cache key is wrong, the cost spikes.
Unnecessary nightly builds
Scheduled nightly workflows that were created to catch a bug fixed long ago may continue running indefinitely if not cleaned up.
These patterns are easy to fix once you have visibility.
Why it’s now open source and free
I originally built CICosts as a paid SaaS, but the pricing was too restrictive for a product without an established reputation. Convincing engineers to add a GitHub App and trust it with CI data for $29/month was a hard sell.
The honest truth: the product was good, but nobody knew about it—a distribution problem, not a product problem.
Now the model is simple:
- MIT‑licensed source code on GitHub.
- A hosted version at app.cicosts.dev that is free with no usage limits.
- An enterprise tier for organizations that need an SLA or private deployment.
Getting started
Install the app from GitHub:
https://github.com/phonotechnologies/cicosts-app
https://github.com/phonotechnologies/cicosts-apiOr use the hosted version directly at app.cicosts.dev. Add the GitHub App to your organization, and cost data starts flowing within a few minutes of your next workflow run.
The setup takes about five minutes and requires no code changes in your repositories. The GitHub App receives webhook events automatically once installed.
What I’d do differently
If I were starting from zero, I’d make it open source from day one and focus entirely on perfecting the GitHub App installation experience. The hardest part of a tool like this isn’t the cost calculation—it’s getting someone to trust it enough to install it.
Open source makes that easier: anyone can read the code, see exactly what data is stored, and verify there’s nothing hidden. The code lives under the phonotechnologies organization on GitHub. PRs are welcome, especially for runner‑pricing updates and new alert types. If you run into an issue, please open one.