v0.22.0
What changed
rpi upgrade(new command) — update a board's agent to a chosen version from your laptop, over the SSH + sudo path you already use. It defaults to your CLI's own version (keeping the client and board in sync),--version <X>pins a specific version,--version latestpicks the newest published release, and--yesskips the confirmation. It showscurrent → target, triggers the update with an interactivessh -t … sudo rpi agent update(so the board's sudo can prompt), and re-reads/v1/versionafterward to confirm.rpi agent update(new board-side command) — obtains a fresh binary (refreshes the globalrpi-deploy@<version>on npm installs, or downloadsrpi-v<version>-<triple>.tar.gzfrom the GitHub Release), verifies its SHA-256 against the releaseSHA256SUMSbefore doing anything, atomically swaps/usr/local/bin/rpi, re-runs the idempotentagent setup, and restarts the unit only when the binary actually changed.--dry-runreports the plan without changing anything. The agent never touches its own binary — the privileged swap happens only undersudo, over authenticated SSH, exactly like the manual path it replaces.install.sh(new, no-npm installer) —curl -fsSL https://raw.githubusercontent.com/khmilevoi/rpi-deploy/master/scripts/install.sh | shinstalls a checksum-verified prebuilt binary on binary-only hosts (no Node required), sharing the exact download-and-verify recipe.RPI_VERSIONpins a version (default: latest) andRPI_INSTALL_DIRoverrides the target dir. It does not run setup — follow withsudo rpi agent setupon a Pi orrpi setupon a dev machine.
The trust model is unchanged: no new agent privilege, no new secret or trust anchor — integrity rests on the release SHA256SUMS over GitHub's TLS, the same anchor the npm postinstall already uses. Boards on older versions are updated once by the manual path (or install.sh + sudo rpi agent setup); every subsequent update is a single rpi upgrade.
Internal: release-artifact download/verify plumbing ported from postinstall.js, an SSH-exec runner, a Docker e2e scenario for the board-side update, and target-version validation on the client. See the full changelog below.
Full Changelog: v0.21.1...v0.22.0