Skip to content
Markdown

Reference

Jog runners

A job runs on Jog when its runs-on names one Jog label. Use exactly one label per job.

YAML
jobs:
  build:
    runs-on: jog

Sizes

runs-onMachinePer minute
jog (or jog-2vcpu)2 vCPU · 8 GB$0.0012
jog-4vcpu4 vCPU · 16 GB$0.0024
jog-8vcpu8 vCPU · 32 GB$0.0044
jog-16vcpu16 vCPU · 64 GB$0.0088
jog-32vcpu32 vCPU · 128 GB$0.0176

A job moving off ubuntu-latest or ubuntu-24.04 (2 CPUs in a private repository) moves to jog. A job on a larger GitHub runner moves to the Jog size with the same number of CPUs.

Jog Max

Jog Max runs the same sizes at twice Jog's price, still 20% less than Namespace and 40% less than Blacksmith at every size. At 2, 4 and 8 vCPU it runs on AMD Zen 5. Pick it job by job with its runs-on label.

runs-onMachinePer minute
jog-max2 vCPU · 8 GB$0.0024
jog-max-4vcpu4 vCPU · 16 GB$0.0048
jog-max-8vcpu8 vCPU · 32 GB$0.0088
jog-max-16vcpu16 vCPU · 64 GB$0.0176
jog-max-32vcpu32 vCPU · 128 GB$0.0352

jog-max-2vcpu names the same machine as jog-max. A Jog Max minute uses twice its size's free minutes. A coding agent never moves a job to Jog Max itself: it suggests the label and asks you.

Billing

Billed by the second for the time your job runs, at its label's price per minute, with no minimum per job and nothing rounded up to the minute. Credits are prepaid and pay for run time alone.

5,000 free minutes a month while you have credits, used first (2 vCPU; 4 vCPU 2×, 8 4×, 16 8×, 32 16×).

The pricing page has the rest: https://usejog.com/docs/pricing/

Cache

Jog caches these on each host, with nothing to set up for Jog. A later job on the same host can reuse an entry while the host keeps it, where that job could fetch it anyway:

  • GitHub Actions cache restores: actions/cache, the setup actions' caches (such as setup-node's cache: npm), Swatinem/rust-cache, sccache and BuildKit's type=gha.
  • Public container images pulled through Docker, from Docker Hub, ghcr.io, Quay, ECR Public, GCR, registry.k8s.io and Microsoft's registry, including by setup-buildx-action's default builder.
  • Ubuntu packages installed with apt from the image's own Ubuntu sources.
  • Go's build cache, for Go 1.24 through 1.27, in steps that run on the machine rather than in a container, shared among a repository's own jobs, unless the job sets its own GOCACHE or GOCACHEPROG.

GitHub Actions cache saves still go to GitHub, under its limits. Not cached: the npm, PyPI and Cargo registries, git checkouts, HTTPS apt sources and PPAs, apt run inside any container (a job's container or a Dockerfile's RUN), and image pulls by BuildKit builders given their own configuration, or by remote or Kubernetes ones.

What's installed

Ubuntu 24.04 with GitHub's ubuntu-24.04 runner software, including Docker, Node.js, Python, Rust, Go, git, gh, PostgreSQL, the AWS CLI, kubectl and helm, plus terraform. It leaves out the Android SDK, Haskell, Julia, Swift, Chromium, Microsoft Edge, PyPy, two PowerShell modules (Microsoft.Graph, PSScriptAnalyzer), Java 8 and 11, the .NET 9 SDK, Clang 16 and 17, and older .NET 8, 9 and 10 SDKs; a job that uses one needs a step that installs it, such as actions/setup-java. sudo apt-get install works.

A job can't add a swap file at the usual paths, and container engines other than Docker (Podman, Buildah, containerd, k3s) can't use their overlay storage driver in its default location. Docker works as usual.

What Jog doesn't run

  • Public repositories.
  • macOS, Windows, ARM or GPU jobs, and ubuntu-22.04.
  • Jobs that need nested virtualization (KVM), a fixed IP address or files kept between runs.
  • Mail sent straight to mail servers on port 25. Mail sent through a provider on port 587 or 465 works.

Before the first job

Before Jog runs an account's first job, an owner of it:

  • chooses which repositories Jog's GitHub App may use, on GitHub's install screen;
  • loads prepaid credits with a card;
  • for an organization, makes sure its Default runner group doesn't allow public repositories and isn't limited to selected repositories or workflows.

New organizations may wait on Jog's waitlist before their jobs run; personal accounts start right away. The account's page says so; owners can load credits while waiting, and credits are refundable at any time.

Why a job waits

A job stays queued when the organization is on Jog's waitlist, has no credits loaded or is out of credit, Jog isn't on the account, the repository isn't selected for Jog's GitHub App, an organization's Default runner group allows public repositories or is limited to selected repositories or workflows, or an owner's size limit is reached. The account's page at https://usejog.com/account says which.

  • Overview
  • Set up with a coding agent
  • Runners
  • Pricing
  • Job codes
  • Advice API