Install · releases

One binary, served from here

This server relays each release asset from the private repository, so an agent never needs a GitHub token to install or to upgrade itself. Every download is checked against the checksum published with the release.

Install the agent

Linux and macOS, amd64 and arm64. The script picks the platform, downloads swrails from this server, checks its SHA-256 against checksums.txt and installs to /usr/local/bin.

curl -fsSL https://rails.switchyard.work/install.sh | sh

Or fetch one binary yourself:

curl -fsSLO https://rails.switchyard.work/download/swrails/v0.1.0/swrails-linux-arm64
curl -fsSL https://rails.switchyard.work/download/swrails/v0.1.0/checksums.txt | sha256sum -c --ignore-missing

Run it

Write the agent token to a file only the agent’s user can read and pass a reference to it — the agent refuses a token on the command line.

install -m 600 /dev/null /etc/swrails/agent.token  # then write the token in
swrails agent \
  --endpoint https://rails.switchyard.work \
  --token file:/etc/swrails/agent.token \
  --tags os=linux,arch=arm64,role=conductor

launchd and systemd units are in the repository’s examples/. The agent upgrades itself when the server offers a pinned release: it drains, downloads, verifies and re-executes. --no-auto-upgrade turns that off.

Point the conductor at it

"rails": {
  "url": "https://rails.switchyard.work",
  "token": "file:/Users/you/.switchyard-conductor/rails.token",
  "native_checks": ["owner/repo"]
}

A repository listed in native_checks has its head read from this server directly; any other falls back to GitHub statuses. conductor doctor reports the token as resolved and prints none of it.

Releases

current v0.1.0

A release is listed only once its checksums.txt is published.

Check an install

$ swrails version
$ curl -fsS https://rails.switchyard.work/healthz

A registered agent shows on the agents page within one heartbeat, with the version it runs.

Installing on a host that already runs a conductor? Give the agent the tags your pipelines’ steps ask for, and those jobs land on that host.