regadio

Replicate objects across clouds as they arrive.

regadio watches a folder or listens for a webhook, then copies every new object to the S3-compatible storages you choose. One small binary instead of the sync server you would otherwise build and babysit.

go install regad.io/regadio@latest
Available when the source opens.

From one bucket to every place it needs to be.

  1. Something lands

    A file is written to a watched folder, or your storage calls regadio's webhook when an object is created.

  2. regadio streams it

    The object moves in parts, straight from source to destination, without being staged on disk.

  3. Every destination gets a copy

    Each target has its own retries, so one slow provider never holds back the others.

One file describes the whole setup.

Name your storages once, then add a route for each trigger and the places its objects should go.

Secrets stay in environment variables.

regadio.yaml
storages:
  homelab:
    endpoint: http://minio.lan:9000
    access_key: ${MINIO_KEY}
    secret_key: ${MINIO_SECRET}
  b2:
    endpoint: https://s3.us-west-004.backblazeb2.com
    access_key: ${B2_KEY_ID}
    secret_key: ${B2_APP_KEY}

routes:
  - name: backups
    trigger: { type: folder, path: /data/backups }
    targets:
      - { storage: b2, bucket: offsite }

  - name: uploads
    trigger: { type: webhook, path: /hooks/uploads }
    source:  { storage: homelab, bucket: uploads }
    targets:
      - { storage: b2, bucket: mirror }
      # add as many destinations as you need

Works with the storage you already use.

Cloud

  • AWS S3
  • Google Cloud Storage
  • Azure Blob Storage
  • Cloudflare R2
  • Backblaze B2
  • Wasabi
  • Hetzner
  • Scaleway
  • Akamai
  • DigitalOcean Spaces

Self-hosted

  • MinIO
  • SeaweedFS
  • Garage

…and any S3-compatible endpoint.