OPEN SOURCE · FREE · AWS & GCP

Stop guessing at
CI machine sizes.

RunRight monitors every CI job and maps your actual p95 usage to the right AWS or GCP instance type — automatically, on every run.

Install →
RUNRIGHT · build-and-test
p95 cpu1.2 cores
p95 ram1.8 GB
CURRENT
c5.xlarge
4 vCPU · 8 GB · $0.0194/min
RECOMMENDED ↓ 58%
t4g.small
2 vCPU · 2 GB · $0.0042/min
MONTHLY SAVINGS
~$18.40
✦ 160+ AWS instances ✦ 60+ GCP instances ✦ Open Source ✦ Self-Hosted
✦ HOW IT WORKS ✦

HOW IT WORKS

Three steps. No code changes.

01
Monitor Every Run

Add one line to your GitHub Action. RunRight samples CPU, memory, disk I/O, and threads throughout your build and stores a snapshot for every run, automatically.

02
Build a History

The dashboard accumulates job history over time. As your build grows or shrinks, the data reflects it. No one-off audits, no spreadsheets. Everything is already there.

03
Get Accurate Recommendations

RunRight scores every instance in the AWS and GCP catalog against your real workload history and ranks options by cost, headroom, and fit. Pick the right machine with confidence.

Real Metrics

CPU, memory, disk I/O and threads sampled live, not guessed.

AWS + GCP

Hundreds of instance types, kept fresh automatically.

Any Exporter

File, OTLP, Prometheus, HTTP. Plug into your existing stack.

Self-hosted

Your data stays on your infra. No third-party SaaS.

Works Everywhere You Run CI

Bare VMs, containers, K8s pods, DinD — detection adapts to the environment automatically.

EC2 / GCP VMs
ZERO CONFIG

Reads vCPU count and total memory from the OS, then matches against the catalog within a 2 GiB tolerance. Works on GitHub-hosted runners, self-hosted EC2, and GCP VMs.

Kubernetes + DinD Pods
CONTAINER-AWARE

Reads cgroup v2 (cpu.max, memory.max) or cgroup v1 equivalents. Reflects your pod's actual CPU quota and memory limit.

# K8s Downward API override (optional)
env:
  - name: RUNRIGHT_VCPUS
    valueFrom:
      resourceFieldRef:
        resource: limits.cpu
  - name: RUNRIGHT_MEMORY_GIB
    valueFrom:
      resourceFieldRef:
        resource: limits.memory
        divisor: 1Gi
Any Environment
MANUAL OVERRIDE

Skip auto-detection with two env vars. Works for Azure VMs, ARM instances, on-prem, or any environment where OS-level resource counts are unreliable.

RUNRIGHT_VCPUS=4
RUNRIGHT_MEMORY_GIB=16

Works in any CI

Native GitHub Action or a two-line shell snippet. Pick whichever fits your stack.

.github/workflows/ci.yml
- uses: gbudjeakp/run-right@v1
  with:
    run: make build
    export: file,http
    http-url: ${{ vars.RUNRIGHT_URL }}
  env:
    RUNRIGHT_API_KEY: ${{ secrets.RUNRIGHT_API_KEY }}
.gitlab-ci.yml
build:
  before_script:
    - curl -fsSL "https://github.com/gbudjeakp/run-right/releases/latest/download/runright_linux_amd64" -o runright && chmod +x runright
    - ./runright monitor --export http --http-url "$RUNRIGHT_URL" &
    - echo $! > .runright.pid
  script:
    - make build
  after_script:
    - kill $(cat .runright.pid) 2>/dev/null || true
.circleci/config.yml
jobs:
  build:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - run:
          name: Install RunRight
          command: curl -fsSL "https://github.com/gbudjeakp/run-right/releases/latest/download/runright_linux_amd64" -o runright && chmod +x runright
      - run:
          name: Build
          command: |
            ./runright monitor --export http --http-url "$RUNRIGHT_URL" &
            echo $! > .runright.pid
            make build
            kill $(cat .runright.pid) 2>/dev/null || true
bitbucket-pipelines.yml
pipelines:
  default:
    - step:
        script:
          - curl -fsSL "https://github.com/gbudjeakp/run-right/releases/latest/download/runright_linux_amd64" -o runright && chmod +x runright
          - ./runright monitor --export http --http-url "$RUNRIGHT_URL" &
          - echo $! > .runright.pid
          - make build
          - kill $(cat .runright.pid) 2>/dev/null || true
Jenkinsfile
pipeline {
  agent any
  environment {
    RUNRIGHT_URL     = credentials('runright-url')
    RUNRIGHT_API_KEY = credentials('runright-api-key')
  }
  stages {
    stage('Build') {
      steps {
        sh """
          curl -fsSL "https://github.com/gbudjeakp/run-right/releases/latest/download/runright_linux_amd64" -o runright && chmod +x runright
          ./runright monitor --export http --http-url \$RUNRIGHT_URL &
          echo \$! > .runright.pid
          make build
          kill \$(cat .runright.pid) 2>/dev/null || true
        """
      }
    }
  }
}

SELF-HOST THE DASHBOARD

Install in minutes.

A Go binary + a Postgres database. One Docker Compose file brings it all up.

01
Generate an API key

RunRight authenticates the agent to the backend with a single shared secret. Generate one now and keep it in your CI secrets.

export RUNRIGHT_API_KEY=$(openssl rand -hex 32)
02
Start everything with Docker

One command starts the backend, dashboard, and Postgres. The dashboard is available at localhost:3000 once it's up.

docker compose up -d
03
Add the step to your CI workflow

Drop the RunRight step into any job above. It runs as a background process, samples every few seconds, and posts a summary when the job finishes. Your existing steps are untouched.

.github/workflows/ci.yml
- uses: gbudjeakp/run-right@v1
  with:
    run: make build
    export: file,http
    http-url: ${{ vars.RUNRIGHT_URL }}
  env:
    RUNRIGHT_API_KEY: ${{ secrets.RUNRIGHT_API_KEY }}

How does RunRight compare to Datadog, Grafana, Sentry, and AWS Cost Tools?

See the full comparison →

SAVINGS CALCULATOR

How much could you save?

Based on typical CI job utilisation (p95 CPU ~30%, p95 RAM ~40%).

1 min60 min
1500

CURRENT / MO

SAVINGS / MO

AFTER RUNRIGHT / MO

Estimates use p95 usage at ~30% CPU / ~40% RAM headroom. Actual savings vary by workload.

PRICING

It's free.

No seats, no usage caps, no SaaS. Self-hosted on your infrastructure.

See full pricing →

Quick answers

Does RunRight slow down my builds?

No. It polls /proc every 5s as a background sidecar. Under 5 MB RSS, under 0.1% CPU on the sampler. Your build time is not affected.

Do I need to change my application code?

No. RunRight wraps your existing CI step. No SDK, no annotations, no config file.

I already use Datadog. Do I need the RunRight backend?

No. Use --export otlp with OTEL_EXPORTER_OTLP_ENDPOINT pointing at your existing collector. The backend and Postgres are only needed for the self-hosted RunRight dashboard.

READY TO START SAVING?

Right-size your CI today.

Open Install Guide →