Back to Blog
Announcement
Product

Why We Built CICosts

CICosts Team
Founders
December 20, 20253 min read


The $3,000 Surprise

It started with a billing email.

We were running a typical SaaS startup—a handful of developers, a few repositories, the usual CI/CD pipeline. GitHub Actions was our go-to for everything: tests, builds, deployments. It just worked.

Then the monthly bill arrived: $3,247.

We stared at it. That couldn't be right. We had maybe 10 active workflows. How did we spend three thousand dollars on CI?

The Investigation

We dug into GitHub's billing page. It showed us the total. It showed us the breakdown by repository. But it couldn't tell us which workflows were expensive, or which jobs within those workflows were the culprits.

After hours of manual investigation—downloading CSV exports, correlating run times with runner prices, building spreadsheets—we finally found it: a matrix build that was spawning 48 parallel jobs on 8-core runners for every pull request. Including drafts. Including WIP branches.

One misconfigured workflow was costing us $2,100 per month.

The Real Problem

The more we talked to other engineering teams, the more we heard the same story:

  • "We don't know what our CI costs until the bill comes"

  • "GitHub doesn't break it down by workflow"

  • "We had a runaway job that cost us $500 in a weekend"

  • "Our CTO asks about CI costs, and I just shrug"
  • The problem wasn't that teams were careless. The problem was visibility. GitHub gives you a monthly total, but by then it's too late. You can't optimize what you can't measure.

    Building the Solution

    So we built CICosts.

    The core idea is simple: real-time cost tracking for GitHub Actions. Every time a workflow completes, we calculate the cost based on:

  • Runner type (Linux, Windows, macOS)

  • Runner size (2-core, 4-core, 8-core, etc.)

  • Duration (billable minutes)

  • GitHub's published pricing
  • Then we aggregate it into dashboards, trends, and alerts. You can see:

  • Which workflows cost the most

  • Which repositories are expensive

  • How costs trend over time

  • When spending spikes happen
  • And crucially, you can set alerts so you know before the bill arrives.

    What We Learned

    Building CICosts taught us a few things about CI/CD costs:

    1. 80/20 is real. In most codebases, 20% of workflows account for 80% of costs. Finding and optimizing those workflows has outsized impact. 2. Runners matter. The difference between a 2-core and 8-core Linux runner is 4x in cost. Many jobs don't need the extra power. 3. Matrix builds are sneaky. A 10x5 matrix is 50 parallel jobs. Each one costs money. Make sure you need every combination. 4. Drafts are expensive. Running full CI on draft PRs adds up fast. Consider running only lint/format until the PR is ready for review. 5. Self-hosted isn't always cheaper. The math depends on your volume. For many teams, GitHub-hosted runners are actually more cost-effective when you factor in maintenance.

    Try It Free

    We built CICosts to solve our own problem. Now it's available for everyone.

    The free tier includes:

  • Up to 3 repositories

  • 30 days of cost history

  • Email alerts

  • Real-time cost tracking
  • Setup takes about 2 minutes. Just connect your GitHub account, install the app on your organizations, and you're done.

    Get started free →

    We'd love to hear what you find. Drop us a line at hello@cicosts.dev or find us on GitHub.

    ---

    P.S. That $3,000 bill? After fixing the matrix build and a few other optimizations, we got it down to $847/month. Still not cheap, but at least we know where it goes.

    Ready to optimize your CI/CD costs?

    Start tracking your GitHub Actions spending for free.

    Get Started Free