Skip to content

packages/coding-agent: prepare Gatekeeper-clean macOS releases for official Homebrew submission #776

@fettpl

Description

@fettpl

Summary

The runtime blocker from #754 appears fixed, but the official Homebrew path is still blocked by macOS distribution/signing state.

As of April 24, 2026, the latest macOS arm64 release binary from v14.2.1 now runs successfully with --version, so the earlier exit 137 problem is gone.

However, the macOS asset still does not appear to be Gatekeeper-clean enough for an official Homebrew submission.

Current state

What now works:

curl -fL https://github.com/can1357/oh-my-pi/releases/download/v14.2.1/omp-darwin-arm64 -o /tmp/omp-darwin-arm64
chmod +x /tmp/omp-darwin-arm64
TMP_HOME=$(mktemp -d)
HOME="$TMP_HOME" /tmp/omp-darwin-arm64 --version

Observed:

omp/14.2.1

What still looks wrong for distribution quality:

spctl -a -t exec -vv /tmp/omp-darwin-arm64

Observed on this machine:

internal error in Code Signing subsystem

codesign -dv --verbose=4 on the same binary reports an ad-hoc signature rather than a normal Developer ID distribution signature.

Why this matters for Homebrew

Homebrew policy still makes this relevant even though the binary now launches:

  • homebrew/cask rejects software that fails with Gatekeeper enabled on Apple Silicon Macs.
  • Open-source CLI-only software should still try homebrew/core first.
  • But even if homebrew/core ends up being rejected for source-build/distribution reasons, the fallback homebrew-cask route still needs macOS assets that are clean under Gatekeeper.

So the next real blocker is no longer runtime correctness. It is release signing/notarization quality.

What upstream likely needs to do

  1. Use a real Apple Developer distribution identity

    • obtain or use a Developer ID Application certificate
    • if a .pkg installer is used, also use a Developer ID Installer certificate
  2. Sign the shipped macOS artifacts properly

    • sign omp-darwin-arm64 and omp-darwin-x64 with Developer ID
    • include hardened runtime
    • include secure timestamps
    • if sidecar .node files remain part of the macOS release story, sign those too
  3. Ship a notarization-friendly macOS deliverable

    • ideally a .pkg
    • otherwise a .zip or .dmg
    • a raw standalone executable is awkward here because stapling is not available for standalone binaries
  4. Notarize the macOS deliverable

    • submit with xcrun notarytool submit ... --wait
    • staple when the format supports it (.pkg, .dmg, .app)
  5. Add release validation in CI

    • verify signature with codesign --verify --strict --verbose=4
    • verify Gatekeeper assessment with spctl -a -t exec -vv or spctl -a -t install -vv depending on artifact type
    • verify actual launch on a clean runtime home with --version

Suggested acceptance criteria

  • The latest macOS arm64 release artifact passes codesign --verify --strict --verbose=4.
  • The latest macOS arm64 release artifact has a clean spctl assessment on Apple Silicon.
  • A clean download of the shipped macOS artifact runs omp --version successfully.
  • The release workflow documents or automates signing + notarization.
  • We can make a credible official Homebrew attempt afterward.

Maintainer feedback wanted

The remaining work looks like Apple Developer signing/notarization setup rather than application logic. Are you open to adding Developer ID signing + notarization to the macOS release workflow so the project can move forward with an official Homebrew submission?

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    cliCLI commands and argumentsenhancementNew feature or requestplatform:macosmacOS-specificsetupInstallation and setup

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions