Cost Tracking
CICosts provides real-time cost tracking for every GitHub Actions workflow run. This is the core feature that gives you visibility into your CI/CD spending.
How It Works
Automatic Data Collection
When you install the CICosts GitHub App, we:
- Receive webhooks when workflows start and complete
- Fetch job metadata including runner labels and durations
- Calculate costs based on GitHub's published rates
- Store and aggregate data for your dashboard
Cost Calculation
For each workflow run, CICosts calculates the total cost by:
Total Cost = Σ (job_duration × runner_rate)
Where:
job_durationis the billable time in minutes (rounded up)runner_rateis GitHub's per-minute rate for that runner type
Runner Rates
CICosts uses GitHub's official pricing:
| Runner | Linux | Windows | macOS |
|---|---|---|---|
| 2-core | $0.008/min | $0.016/min | N/A |
| 4-core | $0.016/min | $0.032/min | $0.08/min |
| 8-core | $0.032/min | $0.064/min | $0.12/min |
| 16-core | $0.064/min | $0.128/min | $0.24/min |
| 32-core | $0.128/min | $0.256/min | N/A |
| 64-core | $0.256/min | $0.512/min | N/A |
GitHub offers larger macOS runners. CICosts automatically detects and prices these correctly.
Dashboard Views
Summary View
The main dashboard shows:
- Today's spend with comparison to average
- Weekly and monthly totals
- Projected month-end cost
- Trend chart showing daily spending
Repository Breakdown
See costs aggregated by repository:
- Total cost per repo
- Number of workflow runs
- Most expensive workflows
- Cost trend over time
Workflow Breakdown
Drill into individual workflows:
- Average cost per run
- Run frequency
- Success/failure ratio and costs
- Job-level cost breakdown
Job-Level Details
For any workflow run, view:
- Each job's duration and cost
- Runner type used
- Queue time vs. execution time
- Step-by-step timing
Key Metrics
CICosts tracks several key metrics:
| Metric | Description |
|---|---|
| Total Cost | Sum of all workflow costs |
| Cost per Run | Average cost of a single workflow run |
| Cost per PR | Average CI cost for each pull request |
| Cost per Commit | Average CI cost per pushed commit |
| Runner Utilization | How efficiently runners are being used |
Best Practices
Track All Repositories
For accurate organization-wide visibility, install CICosts on all repositories. You can:
- Set up once with "All repositories" access
- Add new repos automatically as they're created
Regular Review
We recommend reviewing your cost dashboard:
- Daily: Check for anomalies and spikes
- Weekly: Review top workflows and trends
- Monthly: Analyze patterns and plan optimizations
Set Up Alerts
Combine cost tracking with budget alerts to:
- Get notified of unusual spending
- Prevent runaway costs
- Stay within budget
Limitations
Self-Hosted Runners
CICosts tracks GitHub-hosted runners only. Self-hosted runners:
- Don't have per-minute GitHub costs
- Still appear in workflow data (with $0 cost)
Free Minutes
CICosts shows gross costs before free minutes are applied. Your actual GitHub bill may be lower if you have:
- Free minutes included with your plan
- GitHub Enterprise Cloud benefits
- Open source project exemptions
Concurrent Job Limits
CICosts doesn't track concurrent job limits or queue time costs—only actual execution time.
Next: Budget Alerts →