# actions/runner: self-hosting the GitHub Actions job executor

> actions/runner is the C# application that executes a job from a GitHub Actions workflow, both on GitHub's hosted machines and on your own hardware. It is MIT licensed, the repository is not archived, and the last push was on 2026-09-22, but GitHub states it is not taking contributions right now.

**actions/runner** — The Runner for GitHub Actions :rocket:

- Repository: https://github.com/actions/runner
- Website: https://github.com/features/actions
- Stars: 6,299 · Forks: 1,443
- Language: C#
- License: MIT
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/actions-runner

## What actions/runner actually executes

A GitHub Actions workflow file describes jobs, but something has to take a job and run it on a machine. That something is actions/runner. The README describes it plainly: "The runner is the application that runs a job from a GitHub Actions workflow." GitHub uses it inside the hosted virtual environments, and the same application is what you install when you self-host a runner in your own environment.

The audience is therefore narrower than the repository's name suggests. It is not a tool you add to an application's dependency list. It is infrastructure software for people who need job execution to happen somewhere GitHub does not provide: inside a private network, on a specific operating system version, next to a licensed toolchain, or on hardware with particular CPU or GPU characteristics. If your workflows already run acceptably on hosted runners, the runner binary gives you nothing extra to install.

## The mechanism: a job listener on your machine

The application is written in C# and lives under src/ in the repository, with build and packaging scripts in scripts/ and platform prerequisites documented in docs/start/. A runner is registered against a repository or organisation, then stays resident and waits for work. When a workflow job is assigned to it, the runner downloads the job definition and the actions it references, executes the steps, and reports logs and results back.

That is the whole data flow, and it explains the operational consequences. Because the runner is a long-lived process on a machine you control, the machine's state is your problem: leftover files, cached credentials, installed SDKs and running containers persist between jobs unless your workflow cleans them. Because it downloads actions at job time, the machine needs outbound network access to GitHub and to wherever action sources live. Neither of those properties is a defect; they are what self-hosting means. The README does not document a sandbox boundary around job execution, so isolation has to come from the host, a container, or a separate machine.

## Installing the runner and running a first job

The README does not put install commands inline. It routes readers to platform prerequisite documents and to the releases page: docs/start/envwin.md, docs/start/envosx.md and docs/start/envlinux.md for prerequisites, and https://github.com/actions/runner/releases for downloads. Follow those documents for your platform before doing anything else, since the prerequisites differ per operating system.

Once the archive is unpacked, the runner has to be registered against a repository or organisation. The README does not reproduce the registration steps itself; it points to GitHub's help pages for adding self-hosted runners and for using self-hosted runners in a workflow, which is where the exact configuration commands and the runs-on label syntax belong. Read those two pages before starting, because the runner repository does not restate them.

What the repository does give you is the layout to check once the archive is extracted: scripts/ holds the build and packaging scripts, and docs/start/ holds the per-platform prerequisite notes. Confirm your machine satisfies the relevant env document first. For a service that survives logout, the platform prerequisite documents are the place to look, not the README.

## Contribution is closed, which changes what you can do with a bug

The most consequential fact in the README is not technical. It states that GitHub is "not taking contributions" to this repository at this time, that resources are being directed to other areas of Actions, and that questions and support requests go to the Community Discussions area. High priority bugs go to Community Discussions or to GitHub support, and security issues follow SECURITY.md.

The note does add a commitment: security updates will still be provided, and major breaking changes will be fixed. Read that as a maintenance floor rather than an open development process. If you find a defect that is not a security issue and not a major breaking change, the README offers no path to a fix beyond reporting it. That is a real constraint for teams that expected to carry local patches or upstream a change. The repository is not archived and the last push was on 2026-09-22, so the code is current, but currency is not the same as openness to your patch.

## Where a self-hosted runner is the wrong answer

Untrusted code is the clearest failure case. A self-hosted runner executes workflow steps on a machine you own, and the README's description of the runner as the thing that runs a job carries no promise of isolation. If pull requests from outside contributors can trigger workflows on that runner, you have given those contributors a path onto your host. GitHub's own documentation, which the README links to, is the authority on this, and the runner repository does not contradict it.

Scale is the second case. Hosted runners are provisioned per job by GitHub. A self-hosted runner is a machine you keep running and patch yourself, and the README documents no autoscaling or ephemeral provisioning behaviour. Teams that self-host for cost reasons on bursty workloads often find they have traded a per-minute bill for idle capacity and an operating burden. Neither trade is wrong, but the runner repository does not make the decision for you.

## The alternative: let GitHub run the job

The direct alternative is the hosted virtual environments the README names, which use this same runner application under GitHub's control. The difference is not the executor, it is who owns the machine. With hosted runners, GitHub provisions a fresh environment per job, so state does not carry across runs and you do not patch the operating system. With a self-hosted runner, you get control over the environment at the cost of owning its lifecycle.

A second alternative is a container-based CI system that runs on your own cluster. The README gives no comparison here, so the honest distinction is architectural: actions/runner is bound to the GitHub Actions job model and to workflows defined in GitHub, while a cluster-native CI system defines its own pipeline format and its own scheduling. If your pipelines already live in GitHub, moving them is a rewrite, not a configuration change.

## Licence and upgrade cost

The repository carries the MIT licence, which is permissive and places few conditions on reuse or redistribution; the LICENSE file at the repository root is the text that governs, and this is not legal advice. Note that the licence covers the runner code, not the GitHub service it talks to, and not the actions your workflows download.

Upgrades are tag-driven. Releases are published as versioned tags, with v2.337.0, v2.336.0 and v2.335.1 among the recent ones, and releaseNote.md and releaseVersion sit at the repository root. Because the install path is a release archive rather than a package manager, upgrading means fetching the new archive and replacing the runner, and the README does not document rollback. Plan for that: keep the previous version's directory until the new one has run a job successfully, and read releaseNote.md before replacing anything.

## Conclusion

Adopt actions/runner if you need jobs to execute on hardware or networks GitHub's hosted machines cannot reach, and you accept that the README says GitHub is not taking contributions to this repository at this time, while still providing security updates and fixes for major breaking changes. Do not adopt it expecting to patch the runner yourself: the same note directs questions to Community Discussions and high priority bugs to support. Before rolling it out, read docs/start/envlinux.md, envwin.md or envosx.md for the prerequisites of your platform, and check releaseVersion against the newest tag under releases, since the README points readers there for downloads rather than to a package repository.

## FAQ

### What is the actions/runner used for?

It is the application that runs a job from a GitHub Actions workflow. GitHub uses it in its hosted virtual environments, and you can self-host it in your own environment.

### Where do I download actions/runner for Linux, macOS or Windows?

The README points to the releases page at https://github.com/actions/runner/releases for all three platforms, and to docs/start/envlinux.md, docs/start/envosx.md and docs/start/envwin.md for the prerequisites of each.

### Is GitHub still accepting contributions to actions/runner?

No. The README states that GitHub is not taking contributions to this repository at this time and directs questions and support requests to the Community Discussions area, while still providing security updates and fixing major breaking changes.

## Sources

- [actions/runner on GitHub](https://github.com/actions/runner)
- [License: MIT](https://github.com/actions/runner/blob/main/LICENSE)
- [Project website](https://github.com/features/actions)
- [README](https://github.com/actions/runner/blob/main/README.md)
- [Releases](https://github.com/actions/runner/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/actions-runner
