Skip to content

About

Free camera-card offloader: hash-as-you-read, upload to your S3 bucket, seal with ASC MHL

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

Flomenco Offload

Free camera-card → S3 offloader. Hash as you read, upload to your own bucket with S3 integrity checks, seal with an ASC MHL v2.0 manifest.

A successful complete means an intact upload. Re-download is for audits — not for “did offload finish OK?”

offload run --source /Volumes/Untitled --bucket my-archive --name 07192026_CARD1
# … uploads with SHA256/CRC32C integrity …
# Upload-verified + sealed (ASC MHL). Safe to wipe.

Documentation

Guide Description
Getting started Install, first offload, day-on-set workflow
AWS setup Bucket, IAM policy, profiles
Command reference Every subcommand and flag
Integrity & trust model What “safe to wipe” means
Job history Local SQLite + portable S3 job JSON
Troubleshooting Common failures and fixes

Full index: docs/README.md.

Why this exists

DITs and freelancers need a trustworthy card offload without buying Silverstack on day one — and so do hobbyists like Flomenco founder Ryan McKeague. Offload gives you:

  • Single-pass hashing — MD5 is computed from the exact bytes streamed to S3
  • S3 upload integrity — AWS SDK checksums (SHA256 or CRC32C); S3 rejects corrupted parts
  • 11 nines of durability — objects land in Amazon S3, designed for 99.999999999% durability
  • ASC MHL v2.0 seal — industry-standard media hash list uploaded next to your media
  • Job history — small local SQLite, mirrored as per-job JSON to your bucket for portability
  • BYO bucket — uses the standard AWS credential chain (AWS_PROFILE, env, ~/.aws)

This is the free, single-destination tool. For multi-drive catalogs, cross-drive dedup, and deletion safety, see Flomenco.

Install

Release binary (recommended)

Download the latest binary for your OS/arch from Releases, unzip, and put offload on your PATH:

# macOS Apple Silicon example
chmod +x offload
sudo mv offload /usr/local/bin/offload
offload --version

Build from source

Requires Go 1.22+.

go install github.com/Flomenco-Inc/flo-offload-tool/cmd/offload@latest
# binary lands in $(go env GOPATH)/bin

Runtime needs only the binary and AWS credentials that can read/write your bucket.

Quick start

# Confirm credentials + bucket access
offload doctor --bucket my-archive

# Offload a mounted card
offload run \
  --source /Volumes/Untitled \
  --bucket my-archive \
  --prefix shoots \
  --name 07192026_CARD1

# List past jobs (local)
offload history list

# Pull job records from the bucket onto this machine
offload history sync --bucket my-archive

# Audit a job (HEAD checks; add --deep to re-download)
offload verify <job-id>

Trust model

Check When Meaning
S3 ChecksumAlgorithm every upload parts rejected if corrupted in transit
Local MD5 via TeeReader every upload recorded in ASC MHL; single-part ETag must match
HeadObject size after each file object length matches source
S3 durability at rest designed for 11 nines (99.999999999%) durability
--deep re-download optional audit paranoia / compliance, not the default success path

After a successful job:

Upload-verified + sealed (ASC MHL). Safe to wipe.

Details: Integrity & trust model.

Job history (portable, no live cloud DB)

  • Local SQLite: ~/.flomenco/offload/history.db — one row per job
  • Per-job JSON: s3://bucket/_offload/jobs/<id>.json — written on completion
  • offload history sync pulls those JSON objects and upserts locally

No hosted database. Swap machines, sync, keep working. Details: Job history.

S3 layout

s3://my-archive/
  shoots/07192026_CARD1/DCIM/100_FUJI/DSCF0001.RAF
  _ascmhl/<job-id>/0001_….mhl
  _ascmhl/<job-id>/ascmhl_chain.xml
  _offload/jobs/<job-id>.json

Keys preserve the card’s relative paths under --prefix / --name. Filename collisions with different bytes get a -<md5[:8]> suffix.

Commands

Command Purpose
offload run Offload a card to S3
offload history list List local jobs
offload history show <id> Show one job
offload history sync Pull job JSON from S3 into local DB
offload doctor Verify AWS creds + bucket R/W
offload verify <id> [--deep] Confirm objects; optional re-download

Full flag list: Command reference.

Development

go test ./...
go build -o offload ./cmd/offload

Cross-builds via GoReleaser (see .goreleaser.yaml). Tag a version (v0.1.0) to publish release binaries from CI.

License

MIT — see LICENSE.

About

Free camera-card offloader: hash-as-you-read, upload to your S3 bucket, seal with ASC MHL

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages