A Go developer explains the practical obstacles of distributing a tiny macOS binary, from quarantine to costly developer enrollment, and argues that Apple’s signing requirements hurt hobbyists without offering viable alternatives.
Why Apple’s Developer Program Is a Barrier for Small‑Scale Go Utilities
I recently wrote a tiny Go command‑line tool that lets users switch between Claude Code profiles (DeepSeek, OpenRouter, etc.). Building a static executable is trivial with Go – go build -o claudectl works on Windows, Linux and macOS. Shipping the binary works without friction on Windows (.exe) and Linux (just chmod +x). macOS, however, throws a different kind of error.

When a user double‑clicks the downloaded file, macOS shows the classic ““app” can’t be opened because it is from an unidentified developer” warning. The quarantine flag is set on any file that arrives over the network, even if it is shared via Nextcloud or a direct download link. Users can bypass the warning with xattr -d com.apple.quarantine <file> or by right‑clicking → Open, but that is a poor experience for non‑technical people.
What Apple actually requires
To remove the quarantine warning permanently, the binary must be signed with a Developer ID certificate. Apple only issues those certificates to members of the Apple Developer Program, which costs $99 USD per year. The enrollment process also demands:
- A valid Apple ID.
- Government‑issued photo ID.
- A selfie taken with the Mac’s built‑in webcam (or an attached camera) that matches the ID document.
- Verification of the payment method.
The verification step is notoriously finicky. My M1 MacBook Air’s webcam struggled to capture a clear image of my passport, forcing several retries and even a switch to an external webcam that still failed to focus. The portal does not accept a scanned document upload, so the user is forced to work around hardware limitations that many hobbyists simply do not have.
The economics for a hobby project
I plan to sell the utility on Itch.io with a pay‑what‑you‑want model, expecting most users to pay $0 and a few to contribute $5‑$10. After Itch.io’s 10 % cut and VAT, a $50 gross revenue would net roughly $25. That amount barely covers a single month of the developer subscription, let alone the time spent on packaging and support.
Because the program is annual, the cost is effectively a sunk expense for anyone who only wants to distribute a handful of binaries. The barrier is not technical – the code compiles fine – but financial and procedural.
Alternative distribution channels
- Homebrew: Users can install the tool via a formula, but Homebrew requires the software to be open source and does not support paid binaries. Adding a
brew installinstruction to a pay‑what‑you‑want page feels contradictory. - GitHub Releases: macOS users still encounter the quarantine warning unless the release assets are signed. Some projects ship a notarized zip, but notarization also needs a developer account.
- Self‑hosting with instructions: Providing a step‑by‑step guide for
xattr -dworks, but it assumes the user is comfortable with the terminal and accepts the security risk of disabling quarantine.
What could be better?
- Allow document upload for ID verification – a simple file upload would avoid the webcam quality issue entirely.
- Offer a lower‑cost tier for hobbyists – a $19‑year plan or a per‑binary signing fee would align the cost with the value delivered.
- Expose an API for automated notarization – developers could integrate signing into CI pipelines without manual portal interaction.
- Provide a clear status endpoint – the developer portal should surface enrollment progress so the desktop app can reflect the real state instead of prompting a restart.
A broader reflection
Apple’s hardware and silicon are excellent; the M‑series delivers performance that makes Go cross‑compilation a breeze. The software experience, however, remains locked behind a walled garden that assumes every developer will ship commercial products at scale. For independent creators, the cost and friction are disproportionate to the benefit.
If you are a hobbyist looking to distribute a macOS binary, you have three realistic options:
- Accept the quarantine warning and provide a manual bypass guide.
- Release the source and let users compile locally (the Go toolchain makes this trivial).
- Pay the developer fee and go through the full signing/notarization process.
Each choice has trade‑offs between user convenience, security, and your own time and money.
Useful links

Comments
Please log in or register to join the discussion