Title: GitHub Actions local runner on your Linux machine
URL: https://codemany.com/features/linux-runners
Description: Turn any Linux box with systemd into a GitHub Actions runner. One command installs Codemany; each job gets a fresh runner and, with KVM, its own VM.
All pages as Markdown: https://codemany.com/llms.txt

---

[Home](https://codemany.com/) › [Features](https://codemany.com/features)

# Linux runners on your own machines

Codemany turns your own Linux machine into a GitHub Actions local runner. Install it with one command, and every job gets a fresh single-use runner.

## What you get

Your Linux box runs your GitHub Actions jobs. It can be a desktop, a server, a mini PC or a VM. GitHub still schedules each job and shows its log.

- **A fresh runner per job.** No state is left over from the last job.
- **Fast by default.** Jobs run on the host, with warm caches.
- **A VM when you want one.** Turn on a fresh VM per job with KVM.
- **A systemd service.** It starts at boot, with or without a desktop.

## Install with one command

Run this on the machine, then open the setup link in any browser on your network:

```
curl --proto '=https' --tlsv1.2 -fsSL https://codemany.com/install.sh | sh
codemany setup-link
```

Sign in with GitHub and pick your repos. Then change one line in your workflow:

```
runs-on: [self-hosted, Linux, codemany]
```

The `Linux` label keeps the job off your Macs. On Debian or Ubuntu, you can use the .deb or apt instead. See the [Linux page](https://codemany.com/linux) and the [Linux runner guide](https://codemany.com/docs/guides/linux-runner).

## Host mode: fast, warm caches

Setup picks host mode. Jobs run on the machine with your tools and warm caches, so they start fastest.

There are trade-offs. Jobs get no sudo, and they can read your files. Docker works only if Docker is installed. Jobs from public repos run as separate slot users, with safe limits.

## VM mode: a fresh VM per job

Want full isolation? Turn on VM mode. Each job then boots its own KVM virtual machine, with Docker and sudo. The VM is thrown away after the job.

```
codemany isolation vm
```

VM mode is opt-in and slower, and it needs KVM. Build its image first, as shown in [A fresh Linux VM for every job](https://codemany.com/features/vm-per-job). Prefer a self-hosted runner in a container? An opt-in LXD mode runs each job in a fresh LXD container.

## Updates without logging in

You approve root once, during setup. After that, on Debian and Ubuntu, Codemany updates itself every hour. The service restarts into the new version once its jobs finish.

Want an update now? Press **Update Now** from any machine in your fleet, or from the console. Read more in [Updates install themselves](https://codemany.com/features/auto-updates).

## Requirements

- Any 64-bit Linux with systemd: Ubuntu 22.04 or 24.04, Debian 12 or newer, Fedora and others.
- An x86-64 or ARM64 CPU.
- KVM, only if you want VM mode.
- A GitHub account that can add runners: a repo admin or an organization owner.

A bigger box runs more jobs at once. 4 threads and 16 GB run 2 jobs. 8 threads and 32 GB run 4. More in [Machines](https://codemany.com/docs/machines#linux).

## Questions

### Which Linux works?

Any 64-bit Linux with systemd. KVM is needed for VM mode.

### Is this the same as running act locally?

No. GitHub still schedules the job. It just runs on your machine, with GitHub's own runner.

### Do I need to log in to update it?

No. It updates and cleans up itself.

## Related

Read next: the [Linux runner guide](https://codemany.com/docs/guides/linux-runner), [Codemany for Linux](https://codemany.com/linux), [an optional VM per job](https://codemany.com/features/vm-per-job), [automatic updates](https://codemany.com/features/auto-updates) and [adding a Linux server](https://codemany.com/docs/machines#linux).

Codemany is $20 a month for 2 machines. Try it free for 14 days, with no card.

[Start a 14-day trial](https://codemany.com/docs/get-started)
