Remote Runner Extension Bootstrap
Remote Homeboy runners need the same extension set as the machine that dispatches
work to them. If a runner only has part of the standard set installed, Homeboy’s
offload preflight rejects matching jobs before execution, for example when a
Rust component is sent to a runner that only has nodejs installed.
Use this page as the canonical bootstrap path for machines such as Homeboy Lab.
Standard Extension Set
Install these extension IDs on general-purpose runners:
nodejs rust wordpress go swiftThis set covers the official project-type extensions in this repository. A special-purpose runner may install fewer extensions, but the runner should only advertise or receive workloads for extension IDs that are present on that host.
Bootstrap A Remote Runner
From a checkout of this repository, run:
scripts/bootstrap-standard-extensions.sh --target homeboy-labUse any SSH target accepted by ssh:
scripts/bootstrap-standard-extensions.sh --target chubes@homeboy-labThe script runs this idempotent install-and-verify loop on the target:
homeboy extension install https://github.com/Extra-Chill/homeboy-extensions --id <extension-id>
homeboy extension show <extension-id>After all installs pass, it prints homeboy extension list from the target so
the installed runner state is visible in the command output.
Bootstrap The Local Machine
Omit --target to apply the same standard set locally:
scripts/bootstrap-standard-extensions.shPreview the exact target script without changing anything:
scripts/bootstrap-standard-extensions.sh --target homeboy-lab --dry-runInstall A Subset
Use --extensions for narrow runners or repair passes:
scripts/bootstrap-standard-extensions.sh --target homeboy-lab --extensions "nodejs rust wordpress"GitHub Installs Vs Local Path Installs
Use the GitHub monorepo URL for normal runner bootstrap:
homeboy extension install https://github.com/Extra-Chill/homeboy-extensions --id rustGitHub installs give the runner a managed extracted copy under Homeboy’s extension directory and keep remote machines independent from a developer’s local checkout or short-lived worktree.
Use local path installs only while actively developing an extension on that machine:
homeboy extension install ./homeboy-extensions/rustLocal path installs are linked installs. The active extension code is whatever the symlink target points at, so they are easy to leave attached to stale or temporary worktrees. Before debugging remote-runner behavior, inspect the target:
ssh homeboy-lab 'homeboy extension list && homeboy extension show rust'
ssh homeboy-lab 'readlink ~/.config/homeboy/extensions/rust || true'If a linked install is stale, reinstall from the GitHub monorepo URL with the
matching --id.
Custom Homeboy Binary Or Source
If the target exposes Homeboy under a different command path, pass --homeboy:
scripts/bootstrap-standard-extensions.sh
--target homeboy-lab
--homeboy /home/chubes/.local/bin/homeboyTo test an extension branch on a runner, pass a repository path or URL with
--repo. Prefer this only for deliberate extension development; general runners
should use the canonical GitHub URL.
scripts/bootstrap-standard-extensions.sh
--target homeboy-lab
--repo /home/chubes/src/homeboy-extensions
--extensions "rust"Verification Checklist
After bootstrap, verify the runner from the dispatching machine:
ssh homeboy-lab 'homeboy extension list'
ssh homeboy-lab 'homeboy extension show nodejs'
ssh homeboy-lab 'homeboy extension show rust'
ssh homeboy-lab 'homeboy extension show wordpress'
ssh homeboy-lab 'homeboy extension show go'
ssh homeboy-lab 'homeboy extension show swift'For a real offload check, run a Homeboy command for a component that requires one of the installed extensions and confirm preflight no longer reports the runner as missing that extension.