Your PR labeling workflow takes 2 seconds. GitHub charges you 1 full minute.
The 1-minute rounding problem
GitHub Actions bills compute time in 1-minute increments. A job that finishes in 2 seconds still consumes a full minute from your monthly allocation. There is no partial credit.
For teams running lightweight automation at scale, this adds up fast. Consider a typical private repository with 500 pull requests per month. Each PR triggers a labeling job, a status check, and a merge gate check — three jobs, each completing in a few seconds. That's 1,500 jobs × 1 minute = 1,500 minutes consumed from your GitHub Actions allocation, for work that took less than 10 seconds of actual compute time.
GitHub's free plan includes 2,000 minutes per month for private repos. Three types of lightweight jobs at 500 PRs/month wipes out 75% of your free allocation — before a single build or test runs.
The jobs that hit you hardest
The worst offenders are the automation jobs that exist purely to call the GitHub API or check a condition. They're fast by nature — but you still pay the 1-minute floor.
Common patterns that consume a full minute for 2 seconds of work:
- →PR labeling — add labels based on changed files or branch names
- →Status checks — post a comment or update a commit status via the API
- →Merge gates — check that required labels are present before allowing merge
Start saving CI minutes — free, no credit card required
Install GitHub App →The fix: run them outside your allocation
WorkerRun runs your GitHub Actions jobs on Cloudflare Workers — outside your GitHub Actions minutes allocation entirely. The change is one line in your workflow YAML.
That's it. Install the GitHub App, update the runs-on value, and push. GitHub sees the job succeed with full output and status. Your CI allocation is untouched.
What WorkerRun actually does
WorkerRun intercepts your GitHub Actions jobs and runs them on Cloudflare Workers — a serverless platform that executes JavaScript and TypeScript in V8 isolates across a global edge network.
When you push code and GitHub triggers your workflow, WorkerRun receives a webhook from GitHub. It picks up the job, spins up a V8 isolate in milliseconds (no VM boot time), executes your steps, and reports the results back to GitHub Actions in real time. From GitHub's perspective, the job ran on a registered self-hosted runner. From your billing perspective, zero minutes were consumed.
Each job runs in its own isolated V8 sandbox. No shared memory between jobs. No persistent state after the run. Secrets and tokens never outlive the execution.
Free tier math
A typical team running 1,500 lightweight jobs per month — PR labeling, status checks, merge gates — burns through 1,500 minutes of their GitHub Actions allocation. At $0.008 per minute for Linux runners, that's $12/month for work that takes ~2 seconds per job.
With WorkerRun, those same 1,500 jobs cost $0. The free tier covers 10,000 V8 jobs per month. No credit card required. Need more? The Pro plan gives you 1,000,000 jobs for just $5/month.
| Scenario | Minutes consumed | Cost |
|---|---|---|
| 1,500 jobs on GitHub-hosted runners | 1,500 min / month | ~$12 / month |
| 1,500 jobs on WorkerRun (free tier) | 0 min / month | $0 / month |