A fresh self-hosted runner for every job
Codemany gives every GitHub Actions job a fresh self-hosted runner on your own Mac or Linux machine. Each runner takes one job, then it is removed and a new one starts.
What you get
Most self-hosted GitHub runners live for weeks. Files from one job stay around for the next. Codemany works a different way. Every job gets its own just-in-time runner, used once.
- A clean folder for every job. Old build files can't break the next build.
- No runner chores. You never run
config.shor remove old runners. - Your own machine. Jobs run on the Mac or Linux box you already have.
The one-line change
You don't write any runner config. Change runs-on in your workflow and push.
name: CI
on: push
jobs:
build:
runs-on: [self-hosted, codemany]
steps:
- uses: actions/checkout@v4
- run: make test
Keep self-hosted first. Then a job never lands on a GitHub-hosted machine by mistake. To keep a job on Linux, use runs-on: [self-hosted, Linux, codemany]. Every label is in Runner labels.
How a single-use runner works
A GitHub Actions runner that is self-hosted usually stays registered. Codemany's runners only live for one job.
Register just in time
Codemany registers a runner with GitHub, with the labels
self-hostedandcodemany.Take one job
GitHub still schedules the job and shows its log. It hands the runner one job.
Exit and wipe
When the job ends, the runner exits. Codemany removes it and wipes its folder.
Start a fresh one
A new runner starts and waits for the next job.
If a runner crashes, Codemany replaces it. Updates wait until running jobs finish. The full story is in Single-use runners.
One machine, many repos
You don't need one machine per repo. A self-hosted GitHub runner for multiple repositories is the normal case here. Pick your repos, or a whole organization, in the app.
Each repo keeps a warm runner while there are spares. Idle runners move to repos with waiting jobs. Busy runners are never touched.
Each job needs about 4 GB of memory, 2 CPU cores and 15 GB of disk. An 8 GB Mac runs 1 job at a time. A 16 GB Mac runs 3. To run more at once, add machines.
What it does not do
A fresh runner keeps jobs apart from each other. It does not keep a job away from your machine.
- It is not a sandbox. A job runs as your user. Files it changes outside its folder stay. Read what a self-hosted runner is and Runner security first.
- It adds no tools. Jobs use the tools on your machine. Nothing is preinstalled.
- No Windows and no Intel Macs. You need an Apple silicon Mac on macOS 14 or later, or 64-bit Linux with systemd.
On Linux, you can turn on a fresh VM per job for more isolation. It is off by default.
Start your trial
Install
Get the Mac app, or run one command on Linux.
Sign in
Sign in with GitHub and pick your repos.
Change one line
Set
runs-on: [self-hosted, codemany]and push.
Every step is in Get started. Prices are on the pricing page.
Questions
What do I change in my workflow?
One line: runs-on: [self-hosted, codemany]. Codemany does the rest.
Is the runner reused between jobs?
No. Each job gets a new just-in-time runner. It is removed after the job, and its folder is wiped.
Can one machine serve several repos?
Yes. Pick the repos in the app, and any of them can use the machine. Idle runners move to repos with waiting jobs.
Related
Read next: single-use runners in detail, what a self-hosted runner is, an optional Linux VM per job and Get started.
Codemany is $20 a month for 2 machines. Try it free for 14 days, with no card.