transfer.sh
transfer.sh is a lightweight Go server for sharing files via curl, generating shareable links with optional expiry, download limits, and pluggable storage backends.
transfer.sh is a lightweight file sharing service designed for quick uploads and downloads from the command line. It provides simple HTTP endpoints that return shareable links and supports multiple storage backends for running your own instance.
Key Features
- Upload files via standard HTTP clients (for example, curl) and receive a shareable URL
- Optional download limits and retention controls via request headers (Max-Downloads, Max-Days)
- Multiple storage providers: local filesystem, S3-compatible object storage, Google Drive, and Storj
- Deletion support via a dedicated delete URL returned in response headers
- Optional server-side encryption/decryption via request headers (intended for trusted self-hosted use)
- Access controls and safety options such as IP allow/deny lists, rate limiting, size limits, and optional ClamAV prescan
Use Cases
- Sharing large files from servers or CI jobs without setting up a full collaboration suite
- Temporary transfer of logs, builds, or artifacts with automatic expiry and download caps
- Running an internal “pastebin for files” with configurable storage and access policies
transfer.sh is best suited for simple, ephemeral file exchange workflows where a minimal HTTP interface is preferred. With configurable storage backends and operational controls, it can be adapted for both personal and small-team deployments.


















