← Yungle

Send large files from the command line

A browser tab has to stay open for the whole upload, and a closed laptop lid costs you the file. This does not: interrupt it, run the same command again, and it continues from where it stopped.

Install and sign in

Needs Node 22 or newer.

npm install -g yungle-cli
yungle auth login

Paste a key from Settings → API keys. It is saved to your own machine, so you do this once.

Send a folder

yungle send ~/Shoot --to client@example.com --message "Final selects attached."

It prints the share link when it finishes. Leave out --to and you get a link to pass on yourself, which costs nothing from the daily email budget.

  • Folder structure is preserved, so Shoot/Ceremony/Raw arrives asShoot/Ceremony/Raw.
  • Hidden files are skipped while walking a directory — a shoot folder carries a .DS_Store in every subdirectory — and kept when you name one directly.
  • --expires 90sets the lifetime, clamped to your plan’s maximum rather than rejected.

What happens when it is interrupted

Run the same command again with the same files. It resumes the existing transfer rather than starting a second one, and re-uploads only what had not landed.

yungle send ~/Shoot --to client@example.com     # killed at 92%
yungle send ~/Shoot --to client@example.com     # continues, same transfer
The session is keyed on the files themselves — their paths, sizes and modification times — because that is all the second invocation has to go on. Edit a file between runs and it starts over, deliberately: resuming into a row whose declared size no longer matches would fail at the very end with an error pointing nowhere useful. Sessions last two hours, matching the lifetime of the upload permissions they hold.

In a script

--json on any command prints a machine-readable object on stdout; progress goes to stderr, so a pipe stays clean.

URL=$(yungle send ./render --json | jq -r .url)
curl -X POST "$SLACK_WEBHOOK" -d "{\"text\":\"Render ready: $URL\"}"

What it cannot do yet

  • Vault support is not built. Reaching the vault from your own machine is possible in principle — that is where its key is derived — but it is not written.
  • There are no webhooks, so a script that wants to know about a download polls for it.

How uploading works covers the protocol if you would rather build the upload yourself.