A private bucket and an expiring link.
dove uploads to your S3 bucket and creates a presigned URL. The bucket lifecycle cleans up later.
- Provisions in seconds
- No server to run
- Expires in up to 7 days
dove provisiondove is a small CLI for sharing files from your own cloud. Links expire. Access is limited. In full mode, the server serving the file cannot read it.
$ dove share release.zip \
--expires 2d --downloads 3
encrypting •••••••••• 100%
uploaded 842 MB
https://share.example/d/k7mx2#key
expires in 2 days · 3 downloads
One command. No dashboard to babysit.
The model
A backup tool encrypts to you and locks everything down. dove turns that inside out: it encrypts to a link, grants exactly the access you allow, then cleans up.
dove uploads to your S3 bucket and creates a presigned URL. The bucket lifecycle cleans up later.
dove provisionFiles are encrypted on your machine before upload. Your cloud enforces expiry and download counts without ever receiving the key.
dove provision --fullIn a dove link, the decryption key lives in the URL fragment. Browsers never send that part to a server. The page reads it locally and decrypts the file on your device.
Your infrastructure sees the share ID and encrypted bytes. It can approve a download, count it, or expire it—but it never sees the key.
For credentials, recovery codes, or banking details, require a short PIN and send it separately by text or call. The gate rate-limits guesses and locks the share after repeated failures. The PIN controls access; the fragment secret stays on the recipient’s device and controls decryption. The server can’t read the file either way.
Trust starts with a precise claim. These boundaries are part of the design, not fine print.
Encryption happens before upload. Storage, CDN, and the access gate receive ciphertext, never the fragment key.
The bucket is private and the link expires, but your cloud provider can read the object. Use full mode when that matters.
An operator controls their page’s HTML. Treat dove.sh and the official GitHub repository as the only software sources.
The design and source are public. dove does not claim an independent security audit unless one is completed and published.
dove get.Return to the share page and copy its pre-filled command. dove streams the encrypted file to disk and decrypts it locally—even when it is too large for the browser.
dove get https://share.example/d/k7mx2#keyUse the exact command from your link. The part after # is the decryption key and never goes to the server.
This is dove's official install page. Release binaries are checksummed, signed with Sigstore, recorded in a public transparency log, and notarized on macOS.
Verify a release on GitHubbrew install boomctl/tap/dovescoop bucket add boomctl https://github.com/boomctl/scoop-bucket
scoop install dovecargo install dove-clicurl -fsSL https://raw.githubusercontent.com/boomctl/dove/main/install.sh | shInspect install.sh on GitHub before running it.
Every release includes a checksum manifest, a Sigstore certificate, and a signature. The signer must be dove’s GitHub release workflow—not a private key or an unknown account.
Download the binary, SHA256SUMS, and matching .sig and .pem files from the same release.
Check the bytes.
sha256sum --check SHA256SUMS --ignore-missingVerify the GitHub Actions identity.
cosign verify-blob --certificate dove-…pem --signature dove-…sig
--certificate-oidc-issuer https://token.actions.githubusercontent.com
--certificate-identity-regexp 'github.com/boomctl/dove/.github/workflows/release.yml' dove-…