heron

Go · MIT · v0.9.1

Upload once. Never twice.

A static-asset uploader for S3, R2, and B2 with built-in deduplication and fingerprinted output paths. Ship faster builds without re-uploading what you already have.

brew install heron-cli/heron/heron
2.1k stars on GitHub heron GitHub stars MIT license Version v0.9.1

Project stats

2.1k

GitHub stars

38

Contributors

184k

Monthly downloads

Features

What you get.

How it works

Three commands. No surprises.

01 / Configure

A single TOML file.

Tell heron which bucket to push to, where to find your build output, and what cache headers to set. No daemons, no servers — just config.

# heron.toml
[remote]
endpoint = "s3.us-east-1.amazonaws.com"
bucket   = "your-bucket"
region   = "us-east-1"

[upload]
source       = "./dist"
prefix       = "v1/"
cache-control = "public, max-age=31536000, immutable"

02 / Run

Diff first. Push second.

--dry-run shows the diff against the remote manifest. heron push uploads only what's new and atomically swaps the manifest.

$ heron push --dry-run
ok    1,247 files scanned
ok    1,213 already uploaded   (skipped)
add      34 new files          (~ 6.2 MiB)
del      12 stale objects
$ heron push
uploaded 34 files in 4.1s · manifest: m-a91c3.json

Used by

Used by these teams

Contributors

Built with help from 38 people.

Patches, bug reports, and the occasional very-strong-worded issue. Thank you.

Stop re-uploading what you already have.

heron ships as a single ~6 MB binary. Install in 30 seconds. Free, MIT-licensed, no telemetry.