install.sh version flags + canonical manifest + publish-manifest receiver#5
Merged
Conversation
Add a single source-of-truth manifest at .well-known/latest.json that encodes latest_stable, latest_prerelease, channel pointers, and per- platform SHA-256 + tarball URL. install.sh fetches the manifest first and falls back to the GitHub /releases/latest redirect when unreachable. New CLI flags (POSIX-shell arg parser, no getopt): --version <tag> pin a release; --version=<tag> equivalent --channel stable|edge manifest channel lookup --yes / -y skip the older-than-stable confirmation prompt --no-warn suppress the warning entirely Precedence: --version > PILOT_RELEASE_TAG > --channel > PILOT_RC=1 > manifest latest_stable > GitHub-redirect fallback. Legacy env vars still work so curl|sh callers keep working unchanged. Stale-version warning prints whenever the resolved tag is semver-older than latest_stable. Confirmation prompt only fires on a TTY *and* when --yes is absent, so curl|sh pipelines do not hang waiting for input.
… + doc sweep
publish-manifest.yml receives the manifest-update repository_dispatch
from web4/.github/workflows/release.yml, merges the incoming manifest
into public/.well-known/latest.json (preserving latest_stable on
prerelease bumps, advancing only channels.edge), and commits to main
so the Cloudflare Pages deploy picks it up.
Manifest filename fix: homebrew_formula_url referenced pilot.rb but the
actual file in TeoSlayer/homebrew-pilot is Formula/pilotprotocol.rb.
Doc sweep — replace dead per-binary release URLs and the legacy
PILOT_RC= snippet with the canonical install.sh form:
- blog/private-agent-network-company.astro: rendezvous/daemon download
snippets pointed at pilot-rendezvous-linux-amd64 and
pilot-daemon-linux-amd64, neither of which exists as a release asset
(releases ship pilot-${OS}-${ARCH}.tar.gz bundles). Replaced with
curl|sh install + ~/.pilot/bin/{rendezvous,daemon} invocation.
- blog/enterprise-phase-3-rbac-policies-audit-fleet.astro: PILOT_RC=1
snippet replaced with --channel edge (the new canonical form). The
legacy env var still works in install.sh, but docs lead with flags.
- for/compatibility.astro: hardcoded v1.10.3 release link replaced with
/releases/latest.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two commits on this branch:
install.sh changes
New CLI flags with sensible precedence: `--version > PILOT_RELEASE_TAG > --channel > PILOT_RC=1 > manifest latest_stable > GitHub redirect`. Legacy env vars still honored so existing curl|sh callers work unchanged.
When the resolved tag is semver-older than `latest_stable`, install.sh prints a warning. On a TTY without `--yes` it prompts; in a curl|sh pipeline it prints the warning and proceeds so automation does not hang.
publish-manifest receiver
Listens for `repository_dispatch` event_type=`manifest-update` from `web4/.github/workflows/release.yml`. Merges the incoming manifest into `public/.well-known/latest.json`:
`workflow_dispatch` is also wired so the manifest can be nudged manually if the upstream dispatch is dropped.
Doc sweep
Test plan
Manual unit tests already passed locally
🤖 Generated with Claude Code