A CLI tool to manage GitHub self-hosted runners on your machine.
Optionally, you can install this package globally
npm install -g runner-manager
Create a folder in which you're going to keep your Github Action runner files. In this folder, the CLI will also create a cache folder and optionally save the config file.
cd ~/Projects && mkdir github-runners && cd github-runners
Now, inside the newly created folder, start the CLI:
npx runner-manager
or
runner-manager
if you installed globally.
You'll be presented with a menu:
- Start runners – Starts all configured runners.
- Quit runners – Stops all running runners.
- Add new runner – Guides you through setting up a new runner.
This will execute the ./run.sh
script in every runner-[number]
subfolder. And this
way, you can easily fire up multiple GitHub Action runners with a single command.
⚠️ This will terminate the process and might interrupt any running jobs
Shut down any runners that are currently active. Make sure your runners are currently idle.
Here is an example screenshot of the manual Github Runner install instructions:
Copy the SHA and the Token for later use.
ℹ️ The defaults are based on the, as of this time, current version. Feel free to send a PR when these need to be updated.
The CLI will prompt you for several inputs:
- Version: GitHub Actions Runner version (default:
2.322.0
). - SHA: Checksum for the runner package.
- GitHub Token: Your GitHub runner token* (required).
- Repo: The repository in owner/repo format (required).
- Runner Name: A custom name for the runner.
- Platform: The OS this runner will be on (macOS or Linux, default: macOS).
- Architecture:
-
- For macOS: Options are x64 or ARM64 (default: ARM64).
-
- For Linux: Options are x64, ARM, or ARM64 (default: x64).
* The token that is being referred to here, is the token as being shown in the screenshot above
Based on these inputs, the CLI downloads the appropriate runner tarball using the following pattern:
actions-runner-[osx/linux]-[lowercase architecture]-[version].tar.gz
If a runners.config.json
file is present in the current directory, its values will be used as defaults.
Otherwise, after adding a new runner is added, you'll be prompted to save the current settings as
defaults in a new runners.config.json
file for future use.
If any command fails during runner setup, the script automatically cleans up by removing the runner folder.
Contributions are welcome! Please feel free to open an issue or submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
Happy self-hosting! 🤖