Ship one binary to every channel.

Cross-build, sign, and publish to Homebrew, Scoop, apt/yum and more — and always know exactly where each version landed.

Built to be driven by your AI agent. The whole tool describes itself in its output, so an agent reads one command and runs the release.

Get started →
$ brew install shirodoromoto/wharfy/wharfy
$ scoop bucket add wharfy https://github.com/ShiroDoromoto/scoop-wharfy
$ scoop install wharfy
$ curl -fsSL https://wharfy.io/install.sh | sh

A release, top to bottom — one run. Every command takes --json and ends with a next: block, so you (or your agent) just follow the output.

Hand it to your AI. One read returns every command, channel, and order — then it drives, no docs to hunt.

$ wharfy agent
wharfy — ship one binary to every channel. Read this once, then drive.
commands agent · status · build · sign · release · publish · verify
channels homebrew scoop apt rpm container aur goinstall script · winget, homebrew-core (gated)
every command takes --json and ends with a next: block.
next: wharfy status

Cross-build once. One command, every os/arch, packaged for each channel — your source and CI are never touched.

$ wharfy build
✓ built 6 artifacts → .wharfy/dist
next: wharfy sign · wharfy release

Non-destructive by default. It prints the plan; the tap is only written with --yes. Owned channels publish, gated ones get a tracked PR.

$ wharfy publish
✓ plan: 8 channel(s)
next: wharfy publish --yes # apply all channels, one release

Always know where each version landed. "How did I ship last time?" stops being a question.

$ wharfy status
wharfy v0.2.4 · build: ok (6 artifacts)
homebrew probed published 0.2.4
scoop probed published 0.2.4
releases recorded published 0.2.4
script probed published 0.2.4
goinstall probed published v0.2.4
apt probed published 0.2.4
rpm probed published 0.2.4
winget probed pending
next: wharfy verify

Stop hand-writing a formula for every channel.

Ship once. Let your agent run the rest.