How it works
Split and upload
The armored text goes into parts in one secret gist. fog.json is written last, so a partial upload is easy to see.
Download and decrypt
One API call lists the parts. fog downloads them from raw URLs and decrypts as a stream. A wrong passcode stops it before the download.
A secret gist is not private. Any person with the URL can download the encrypted data. The passcode is the only protection. Send the URL and the passcode on different channels.
Install
Static binaries for Linux, macOS and Windows on x86_64 and arm64.
Each release has a SHA256SUMS file and a signed build provenance attestation.
$ chmod +x fog-* && mv fog-* /usr/local/bin/fog $ gh attestation verify /usr/local/bin/fog --repo javorszky/fog
To send, fog needs a GitHub token: GITHUB_TOKEN, or gh auth login.
To receive, no token is necessary. On macOS, a downloaded binary may need
xattr -d com.apple.quarantine fog.
Limits
| Limit | Value |
|---|---|
| Size per transfer (default) | about 35 MiB (6 parts) |
With --unlock-unlimited-power | about 1.7 GiB (298 parts) |
| Uploads | 80 per minute, 500 per hour (GitHub limit) |
| Receives | 60 per hour per IP address (GitHub limit) |
GitHub Acceptable Use Policies do not permit gists as a file-hosting service. Use fog only for small, occasional transfers.