Quickstart
Three steps, about a minute. Nothing in your workflow changes except where it runs.
1. Install the GitHub App
Install Play Compute on your organisation and pick the repositories it may serve. The App registers runners for those repositories and listens for queued jobs; it never reads your secrets.
Install GitHub App2. Change runs-on
Change one line per job, or let the App open a pull request that changes every workflow it finds. Pick the size by vCPUs; memory follows at 4 GiB a vCPU and is given to the job as it uses it.
jobs: test:- runs-on: ubuntu-latest+ runs-on: play-4vcpu steps: - uses: actions/checkout@v5
| runs-on | vCPU | Memory, up to | Disk | A minute | An hour |
|---|---|---|---|---|---|
| play-2vcpu | 2 | 8 GiB | 25 GiB | $0.00134 | $0.081 |
| play-4vcpu | 4 | 16 GiB | 25 GiB | $0.00269 | $0.161 |
| play-8vcpu | 8 | 32 GiB | 50 GiB | $0.00538 | $0.323 |
| play-16vcpu | 16 | 64 GiB | 100 GiB | $0.01075 | $0.645 |
Shown for a job that uses 25% of its size's memory. A job that uses less pays less.
3. Connect your agent
Press Connect agent, choose how long the machine stays signed in, and paste the command into your agent. It installs the playc CLI, signs the machine in for that time and tells the agent how to use it; an agent says which harness and project it is before it does anything. Unlimited is possible too, after you accept the risk.
! curl -fsSL https://compute.play.fast/install | sh -s -- 7K2M-9XQDWhat is in the image
The image follows GitHub's ubuntu-24.04 runner image, so setup actions find what they expect.
| System | Ubuntu 24.04, kernel 6.12, x86-64, 64 GiB root disk, passwordless sudo |
| Languages | Node.js 20, 22 and 24; Python 3.11 to 3.13; Go 1.24 and 1.25; Temurin JDK 17 and 21; Rust stable with rustup |
| Containers | Docker Engine with buildx and compose; service containers and container jobs |
| Tools | git, git-lfs, gh, jq, yq, curl, zstd, build-essential, cmake, pkg-config, awscli, gcloud, az |
| Browsers | Chrome, Firefox and their drivers; Playwright's system dependencies |
Limits today
| Job length | Up to 5 days, GitHub's own limit for a job on a self-hosted runner |
| Sizes | 2 to 16 vCPU, 4 GiB of memory a vCPU |
| Concurrency | No limit set by us |
| Region | us-south1 (Dallas), three zones |
| Architectures | Linux x86-64 |
macOS, Windows and GPU jobs are not offered: keep those on their current runners. See Actions compatibility for the whole list.
API
An org's runs, logs and usage are in the API. Each call is a POST of a JSON body, with the token as a bearer: POST /playcompute.api.v1.OrgService/ListRuns, POST /playcompute.api.v1.OrgService/SearchLogs to search every kept log line, and POST /playcompute.api.v1.OrgService/GetUsage. The same usage is a CSV download at GET /api/v1/usage.csv. Create a token under Settings, API tokens, with the scopes it needs.
curl "https://compute.play.fast/playcompute.api.v1.OrgService/ListRuns" \ -H "Authorization: Bearer $PLAY_COMPUTE_TOKEN" \ -H "Content-Type: application/json" \ -d '{"status": "RUN_STATUS_FILTER_FAILURE"}'