SkillAgentSearch skills...

Ffl

FastFileLink CLI - Turn any file or folder into a secure, sharable HTTPS link. πŸ”„ Direct transfer (P2P) .⚑ Absolute privacy (E2EE).πŸ”’ Single File, Run Anywhere

Install / Use

/learn @nuwainfo/Ffl

README

FastFileLink CLI (ffl)

License Release Docker Pulls

FastFileLink CLI (ffl) is an Actually Portable command-line tool that turns any file or folder into a secure HTTPS link, allowing two computers to simply and securely transfer files using real peer-to-peer (WebRTC) connections.

AFAIK, ffl is the only CLI file-transfer tool that does all of the following:

  • πŸ“‘ Instant P2P file sharing using WebRTC
  • πŸ” Automatic fallback to secure relay tunnels when NAT traversal fails β€” guarantees delivery
  • πŸ§‘β€πŸ’» Recipient doesn’t need to install anything β€” they can download via browser, curl, ffl, etc.
  • πŸ” End-to-end encryption (AES-256-GCM) β€” relay/storage is zero-knowledge
  • πŸ“ Folder & stdin support β€” streaming, no need to zip/encrypt first, works even for TB-scale data
  • ⏯️ Resume interrupted transfers
  • 🧱 Actually Portable Executable (APE) + native builds for Windows, Linux, macOS
  • 🧰 Built-in & pluggable tunnels (Cloudflare, ngrok, self-hosted, etc.) β€” supports proxies like Tor
  • ☁️ Optional temporary upload to server (licensed feature) when both sides can’t be online simultaneously

⚑ At a glance: Think croc or magic-wormhole, but the recipient uses a standard browser/HTTPS link β€” no software installation required.

πŸ“Š How does it compare to other tools? See our Comparison Guide

πŸ‘‰ Official site: https://fastfilelink.com

This simple demo shows how I sent ffl.com from Windows (x64) to Android (arm64) and used it directly to transfer photos back.

Demo

<details> <summary><b>🌐 Want to see a browser download? (Click to expand)</b></summary> <br>

The recipient doesn't need to install anything!
Verify the P2P connection and download speed in a modern browser:

https://github.com/user-attachments/assets/fe0d6bc6-3116-4633-9c42-41566fe5fd30

</details>

Workflows like this also pair naturally with tools such as llamafile.


Table of Contents


Installation

You can download the latest release for your system, or install a release from the command-line:

⚑ Short URLs for convenience

We provide short domains for easier typing (or copy-pasting).

  • Linux/macOS Install: curl -fsSL https://fastfilelink.com/install.sh | bash
  • Windows Install: iwr -useb https://fastfilelink.com/install.ps1 | iex
  • APE Binary: curl -fL https://fastfilelink.com/ffl.com -o ffl.com && chmod +x ffl.com
  • Docker (Quick Run): docker run --rm --network host -v $(pwd):/data fastfilelink/ffl

πŸ”’ Security Note: fastfilelink.com/* is only a redirect to GitHub. If you prefer, use the direct GitHub URLs below (checksums & GPG signatures available at the bottom).

Option 1: Native Installs

Note: Native builds are currently x86_64 only for Windows and Linux. macOS builds support both Intel and Apple Silicon (ARM64).

If you are on Linux ARM64 (e.g., Raspberry Pi), please use Option 2 (APE).

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/nuwainfo/ffl/refs/heads/main/dist/install.sh | bash

Install for current user only:

FFL_PREFIX=$HOME/.local curl -fsSL https://raw.githubusercontent.com/nuwainfo/ffl/refs/heads/main/dist/install.sh | bash

Windows (PowerShell)

iwr -useb https://raw.githubusercontent.com/nuwainfo/ffl/refs/heads/main/dist/install.ps1 | iex

After installation, you should have ffl on your $PATH:

ffl --version

Option 2: The APE (Actually Portable Executable)

If you prefer a single-file binary that runs almost anywhere with zero dependencies:

Linux / macOS

curl -fL https://github.com/nuwainfo/ffl/releases/latest/download/ffl.com -o ffl.com 
chmod +x ffl.com
# You can now run it directly: ./ffl.com
# Tip: mv ffl.com ~/.local/bin/ffl to run it as 'ffl' from anywhere

Windows (CMD / PowerShell)

curl.exe "https://github.com/nuwainfo/ffl/releases/latest/download/ffl.com" -o "ffl.com"
# Run as: .\ffl.com
# Tip: Move to a folder in your PATH to run from anywhere

Option 3: Build from source

If you prefer to build from source (requires conda and cargo):

# Linux
./BuildCLI.sh linux

# Mac
./BuildCLI.sh darwin

# Windows
conda create -n ffl python=3.12
conda activate ffl
pip install -r requirements.txt
.\BuildCLI.bat ffl

πŸ” Verifying Integrity (Optional)

For security-conscious users, we provide GPG signatures and checksums for all release artifacts.

<details> <summary><strong>Verifying Integrity (GPG)</strong></summary>

These steps verify that the downloaded binary (e.g., ffl.com) matches the official release signed by our GPG key.

# 1. Import the public key
curl -sL https://raw.githubusercontent.com/nuwainfo/ffl/refs/heads/main/dist/ffl-release.signing.pub | gpg --import

# 2. Download checksums and signature
curl -LO https://github.com/nuwainfo/ffl/releases/latest/download/SHA256SUMS
curl -LO https://github.com/nuwainfo/ffl/releases/latest/download/SHA256SUMS.sig

# 3. Verify the checksum file itself
gpg --verify SHA256SUMS.sig SHA256SUMS

# 4. Verify the binary
# (Replace 'ffl.com' with your filename if you downloaded a native build)

# Linux:
grep "ffl.com" SHA256SUMS | sha256sum -c -

# macOS:
grep "ffl.com" SHA256SUMS | shasum -a 256 -c -
</details>

πŸ†™ Keeping ffl Updated

You don't need to visit GitHub to get the latest features. ffl handles updates automatically, respecting your current build type (Native or APE).

ffl upgrade

Note: If you installed ffl to a system directory (like /usr/local/bin), you may need to run this with sudo


Why Both APE and Native Executables Exist

The APE (Actually Portable Executable) build is cross-platform and runs on many OSes by emulating a POSIX environment (via Cosmopolitan Libc). This is powerful but makes platform-specific optimizations harder.

So ffl also ships native builds:

  • Windows native build includes winloop
  • Linux/macOS builds use uvloop
  • Native builds can be smaller (e.g. no ARM64 inside x86_64 binary)
  • In rare cases where the APE build has issues, native builds are a good fallback

If you just want β€œruns everywhere with zero setup”, use APE.
If you care about maximum performance and smaller size on a specific platform, use native. Don't worry too much about speed. In most cases, APE and native builds run almost equally fast. The main difference is binary size and platform-specific polish.

Quickstart

πŸ” Share a file, folder, or stream

# Share a local file
ffl myfile.zip

# Share a folder
ffl /path/to/folder

# Pipe data from stdin, --name is optional
mysqldump my_db | ffl - --name "db_backup.sql"

You’ll get a shareable link like: https://4567.81.fastfilelink.com/abcd1234

  • Recipient: Can download via Browser or CLI (e.g., curl -o file.zip <URL>).
  • Method: Prefers WebRTC P2P. If P2P fails, it automatically falls back to HTTPS relay via a tunnel (third‑party or our free unlimited tunnel).

Note: Standard CLI tools like curl or wget use HTTPS only (Relay mode). If you want P2P speed on the receiving CLI, use ffl to download.

πŸ’‘Tip: Use curl -JLO or wget --content-disposition to automatically save with the correct filename.

πŸ” Receive using ffl

ffl https://4567.81.fastfilelink.com/abcd1234
  • Tries WebRTC P2P first.
  • If NAT traversal fails, automatically resumes via HTTPS relay.

🐳Docker:

# -v mounts your current dir to /data inside the container
docker run --rm --network host -v "$(pwd):/data" ffl myfile

Note:

  • The command prints a public HTTPS link. Keep the container running until the recipient downloads.
  • --max-downloads 1 will stop after one download.
  • --network host is not strictly required, but adding it can greatly improve the success rate of WebRTC connections. Otherwise, the transfer may fall back to Relay, which is slower.

πŸ’‘ Tip: Using Docker is ideal for environments where you cannot or do not want to execute external binaries. Just remember to mount your volumes.

For the complete command usage, please see https://hub.docker.com/r/fastfilelink/ffl


CLI Reference (short version)

For full help: ffl --help or ffl download --help

🌐 Common Options

These options work for both sharing and downloading:

  --proxy PROXY         Proxy server for all outbound connections.
                        Supports SOCKS5 (default) and HTTP/HTTPS.
                        Formats:
                  

Related Skills

View on GitHub
GitHub Stars75
CategoryDevelopment
Updated3d ago
Forks4

Languages

Python

Security Score

100/100

Audited on Mar 26, 2026

No findings