Your workspace's CI box
Updated 2026-10-07
Read https://www.ghosty.studio/en/docs/factory/ci-box.md and move this repo's jobs to the workspace CI box where it makes sense.
Your workspace has its own machines for its repos' CI. Every job runs on a fresh box that is deleted when it finishes: nothing carries over from the previous job and your secrets don't stay on it.
How to request it
In the workflow, replace ubuntu-latest with your workspace label:
"Prepare repo" already writes the CI with that label. Jobs left on ubuntu-latest keep running on
GitHub, using your GitHub minutes.
What it comes with
It's built so a workflow written for ubuntu-latest runs unchanged:
- Ubuntu 24.04 with passwordless
sudo:sudo apt-get install …works. - Docker with Buildx and Compose:
services:(Postgres, Redis, MySQL…),container:,docker buildanddocker compose up. - Node 22 with pnpm and yarn (corepack), Python 3, a C/C++ compiler and
misefor other versions.actions/setup-node,setup-pythonand friends work as on GitHub. - Playwright with its system dependencies and Chromium.
- Postgres, Redis, MySQL and SQLite installed and stopped:
sudo systemctl start postgresqlif you'd rather not useservices:. - 4 vCPUs, 4 GB of RAM and 24 GB of disk.
Cache and downloads
With no setup:
actions/cache, thecache:option ofsetup-nodeandsetup-python, and Buildxcache-to: type=ghastore into a cache next to the box, not on GitHub. Each repo and branch only sees its own entries, with the same rules as GitHub's cache.- Docker Hub images (
postgres:16,node:22…) are pulled from a local mirror.
The large box: 8g
When a job combines Docker, a database and browsers, 4 GB may not be enough. Add 8g:
It has 8 vCPUs and 8 GB, and takes two CI slots of your plan (if your plan has one, it takes all of it while it runs).
How many jobs at once
As many as your plan's CI slots (F1: 1, F2: 2, F3: 3). The rest wait in GitHub's queue and start on their own when a slot frees up.