We build Sengi, a hosted runner service for GitHub Actions. Today we launched Sengi Basic, at $1 per 1,000 runner minutes. This post is about the idea behind it: pick the runner per job, not per company.
Most CI minutes aren't urgent
Look at a typical workflow run. Lint, unit tests, type checks, dependency audits, nightly jobs. Nobody is waiting on most of them. Then there are one or two jobs everyone is waiting on: the Docker image, the release build, the slow integration suite blocking a merge.
Paying the same per-minute rate for both makes no sense. So Sengi has two classes:
| Size | Basic | Premium | GitHub-hosted Linux |
|---|---|---|---|
| 2 vCPU | $0.001/min | $0.003/min | $0.006/min |
| 4 vCPU | $0.002/min | $0.006/min | $0.012/min |
| 8 vCPU | $0.004/min | $0.012/min | $0.022/min |
Basic gives you six times the minutes per dollar of GitHub's own runners at 2 and 4 vCPU, and 5.5 times at 8 vCPU. 10,000 2-vCPU minutes cost $10 on Basic and $60 on GitHub at list price.
Premium is the fast class. On a PostHog Docker build at 4 vCPU it finished in 7m34s; GitHub's runner took 14m36s.
Mixing them in one workflow
The class is just the label:
jobs: lint: runs-on: sengi-basic-2-ubuntu-2404 steps: - uses: actions/checkout@v4 - run: npm ci && npm run lint test: runs-on: sengi-basic-4-ubuntu-2404 steps: - uses: actions/checkout@v4 - run: npm ci && npm test image: needs: test runs-on: sengi-premium-8-ubuntu-2404 steps: - uses: actions/checkout@v4 - run: docker build -t app . Labels: sengi-basic-{2,4,8}-ubuntu-2404 and sengi-premium-{2,4,8}-ubuntu-2404. Workflows, secrets and logs stay in GitHub Actions.
How to decide
- Move every job to Basic.
- Find the jobs where someone is waiting on the result.
- Run those on Premium and compare time and cost against Basic.
- Keep whichever wins for that job.
Free to start
Every account gets 3,000 free Basic minutes a month. A 4-vCPU minute counts as two and an 8-vCPU minute as four.
More on Basic vs Premium: https://sengi.run/blog/sengi-basic-vs-premium

