distros/skills/github-runner/SKILL.md
GitHub Actions self-hosted runner as a supervised container service — rootless (uid 1000), Arch/CachyOS packages, credential-backed registration token. Use when working with GitHub Actions runners, CI/CD infrastructure, or runner registration.
npx skillsauth add overthinkos/overthink-plugins github-runnerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Property | Value |
|----------|-------|
| Dependencies | supervisord, container-nesting |
| Volume | state -> ${HOME}/actions-runner |
| Service | github-runner (supervisord; runs run.sh as uid 1000) |
| Security | none of its own — rootless nested podman comes from container-nesting (no privileged) |
| Install files | task: — declarative pinned download: of the runner tarball + write: of the ghcr mirror config; the runner tree is root-extracted (the shared download cache is root-owned) then chown -Red to uid 1000 (the one ownership cmd:) |
distro.arch, all in the official core/extra repos)jq, git, go, cloud-guest-utils, cosignqemu-user-static, qemu-user-static-binfmt (aarch64 binfmt)installdependencies.sh has no
Arch branch): icu, krb5, openssl, libunwind, lttng-ust (NOT zlib —
CachyOS ships zlib-ng-compat, which Provides it; an explicit zlib conflicts)depends= completion: slirp4netns, libisoburn, cdrtools, swtpm
— the part of the charly PKGBUILD depends= set the charly/virtualization candies do
not already install. With these present, charly box pkg pac builds the pac release
artifact NATIVELY on the runner (makepkg -sf resolves every dep and never
shells out to sudo pacman). See /charly-distros:githubrunner "CI: builds the
org's release packages on itself".podman/buildah/skopeo/crun/fuse-overlayfs are provided by the
container-nesting dependency (not redeclared here — R3).
| Variable | Mechanism |
|----------|-----------|
| RUNNER_ORG | env_accept (plaintext identifier; supplied at deploy) |
| RUNNER_TOKEN | secret_accept (credential-store-backed; never in charly.yml/quadlet) |
| RUNNER_WORK_DIR | ${HOME}/actions-runner/_work |
| RUNNER_GROUP | Default |
The runner installs under ${HOME}/actions-runner and runs as uid 1000. The
ghcr.io pull-through mirror (127.0.0.1:5000) config is written to the user
location ${HOME}/.config/containers/registries.conf.d/ (rootless podman).
RUNNER_ORG + RUNNER_TOKEN.
Skips (no-op) when RUNNER_TOKEN is empty — so a token-less deploy (an eval
bed) brings the image up without registering.# charly.yml — rootless, CachyOS
githubrunner:
base: cachyos.cachyos
build: [pac]
candy: [agent-forwarding, github-runner, charly, dbus, container-nesting]
network: host # no uid/privileged override → rootless
TOKEN=$(gh api -X POST /orgs/myorg/actions/runners/registration-token --jq .token)
charly config githubrunner -e RUNNER_ORG=myorg -e RUNNER_TOKEN="$TOKEN"
charly remove githubrunner -e RUNNER_TOKEN=$(gh api -X POST /orgs/myorg/actions/runners/remove-token --jq .token)
/charly-distros:githubrunner/charly-infrastructure:supervisord — process manager dependency/charly-distros:container-nesting — rootless nested podman/buildah/skopeo + subuid layout + capsUse when the user asks about:
RUNNER_TOKEN or RUNNER_ORG configuration/charly-image:layer — candy authoring reference (tasks, vars, secret_accept, eval block syntax)/charly-eval:eval — declarative testing framework for the eval: block + the eval-githubrunner-pod bed/charly-build:secrets — the credential store backing RUNNER_TOKENtools
OpenCharly CLI (charly) binary installed into container/VM images for in-container use. Use when working with charly binary deployment inside containers, native D-Bus support, or the full charly toolchain (charly binary + virtualization + gocryptfs + socat).
development
Operator CachyOS workstation profile — a kind:local template + target:local deploy that installs the full dev stack (30 candies) onto a CachyOS host via ShellExecutor. Lives in the overthinkos/cachyos submodule. MUST be invoked before editing or applying the charly-cachyos workstation profile.
tools
Fedora box with the full charly toolchain using shared candies. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same candy list as charly-arch. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-fedora box.
tools
Arch Linux box with the full charly toolchain. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /charly-coder:charly-mcp so the box is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-arch box.