Skip to content

feat: cargo binstall with minisign-signed release assets - #44

Open
cuihtlauac wants to merge 1 commit into
mainfrom
feat/binstall-signed
Open

feat: cargo binstall with minisign-signed release assets#44
cuihtlauac wants to merge 1 commit into
mainfrom
feat/binstall-signed

Conversation

@cuihtlauac

Copy link
Copy Markdown
Member

Adds a cargo binstall install path backed by signature verification, plus small crate-discovery metadata tweaks.

Changes

  • Cargo.toml
    • [package.metadata.binstall] — fetch the prebuilt static tarball from GitHub Releases; pkg-url overrides for x86_64-unknown-linux-{musl,gnu} point at the published asset, bin-dir resolves all four binaries under the tarball's top-level dir. Any other target has no pkg-url and falls back to cargo install.
    • [package.metadata.binstall.signing] — minisign, with the embedded public key. cargo binstall downloads <asset>.sig and verifies it before installing; a bad/missing signature aborts.
    • Keywords: dropped generic proxy for ai-agent; added os::unix-apis category.
  • .github/workflows/release.yml — install rsign2, sign the tarball with the dedicated release key (MINISIGN_SECRET_KEY Actions secret), self-verify against the public key (fails the release if signing is wrong), and upload the .sig alongside the tarball.
  • README.md — document the signed cargo binstall path in Quickstart.

Key model

A dedicated release-signing minisign keypair (key ID A6F84B53410B83FB). Public key is embedded in Cargo.toml (public by design); the secret key is held only as the MINISIGN_SECRET_KEY repo secret and used solely by the release workflow.

Verification

Signed the real v1.0.0 tarball and verified against the public key (pass); tampered tarball correctly rejected. cargo metadata reads the signing block; release.yml is valid YAML.

Notes

  • Signing takes effect for the next release; the currently published crate has no signing metadata, so cargo binstall falls back to source until then — no broken intermediate state.
  • The release job gains ~1–2 min to cargo install rsign2 (release-only).

🤖 Generated with Claude Code

Add cargo-binstall metadata so `cargo binstall sudo-proxy` fetches the
prebuilt static tarball from GitHub Releases instead of compiling, with
per-target overrides (x86_64 linux musl/gnu) pointing at the published
asset and a source-build fallback on every other target.

Require a minisign signature: the release workflow signs the tarball with
a dedicated release-signing key (held only as the MINISIGN_SECRET_KEY
Actions secret), self-verifies it, and uploads the .sig; cargo-binstall
verifies it against the embedded public key before installing, so a bad
or missing signature aborts the install.

Also refine crate discovery metadata: swap the generic "proxy" keyword
for "ai-agent" and add the os::unix-apis category. Document the signed
`cargo binstall` path in the README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant