fflShareFiles
Share multiple local files by auto-zipping them into a single download link, with support for encryption, password protection, and download limits.
Instructions
Share multiple local files at once using ffl. ffl auto-zips them into a single download.
IMPORTANT: Always present the returned link so the user can click it to open in a browser. Do not display it as a plain unformatted URL — in some interfaces (such as Claude Dispatch) plain URLs are not auto-linked and will not be clickable.
Args: paths: List of local file paths to share together (auto-zipped by ffl) name: Custom download filename shown to recipient (e.g. 'release-v2.0.zip') e2ee: Enable end-to-end encryption (default: False) preview: Open recipient's browser directly in preview mode — shows a file list before downloading (default: False). Recommended when sharing multiple files so the recipient can inspect contents first. authUser: HTTP Basic Auth username to protect the link authPassword: HTTP Basic Auth password to protect the link maxDownloads: Stop serving after N downloads, P2P only (default: 1) timeoutSeconds: Stop serving after N seconds of inactivity, P2P only (default: 1800) waitLinkSeconds: Seconds to wait for link generation hookUrl: Custom webhook URL for events proxy: Proxy server URL (e.g. socks5://127.0.0.1:9050) qrInTerminal: Return ASCII QR code art for terminal display exclude: Exclude files matching glob or regex patterns, comma-separated recipientAuth: Recipient authentication mode — pickup, pubkey, pubkey+pickup, email pickupCode: Specific pickup code to use (default: auto-generated) recipientPublicKey: Path to recipient .fflpub public key file for pubkey auth recipientEmail: Recipient email(s) for OTP auth, comma-separated alias: Custom link alias instead of random UID (requires Standard+ account) receipt: Send email notification when recipient downloads receiptConfirm: Require recipient to confirm before download starts forceRelay: Disable direct WebRTC; route all traffic through tunnel upload: Upload to FFL server for async sharing — e.g. '1 day', '6 hours' (requires Standard+ account) resumeUpload: Resume an interrupted upload (default: False) preferredTunnel: Set preferred tunnel — cloudflare, ngrok, bore, etc.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| name | No | ||
| e2ee | No | ||
| authUser | No | ||
| authPassword | No | ||
| maxDownloads | No | ||
| timeoutSeconds | No | ||
| waitLinkSeconds | No | ||
| hookUrl | No | ||
| proxy | No | ||
| qrInTerminal | No | ||
| preview | No | ||
| exclude | No | ||
| recipientAuth | No | ||
| pickupCode | No | ||
| recipientPublicKey | No | ||
| recipientEmail | No | ||
| alias | No | ||
| receipt | No | ||
| receiptConfirm | No | ||
| forceRelay | No | ||
| upload | No | ||
| resumeUpload | No | ||
| preferredTunnel | No | ||
| port | No | ||
| invite | No | ||
| pause | No | ||
| enableReporting | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||