Skip to content
Unofficial command line (Firefox) Send client
Branch: master
Clone or download
Latest commit 7f94582 Apr 8, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
scripts add 'new' --download-limit. unlike --change-download-limit it can be … Apr 8, 2018
sendclient Increment client version. Update supported server version Apr 6, 2018
pytest.ini tests, package metadata and more Nov 9, 2017
setup.cfg add 'new' --download-limit. unlike --change-download-limit it can be … Apr 8, 2018

send-cli Build Status

Unofficial command line (Firefox) Send client


Warning, Sharp Edges!

  • will overwrite the output file without warning, but does prompt for the output filename
  • Uses temp files to avoid using large amount of memory, you will need at least 2GB of free disk space to upload a 2GB file
  • Very limited error checking
  • expect serious issues such as data loss if precautions are not taken (you are using a service where destroying your data is a feature, use common sense)

Issues for bugs/features/mistakes/comments on coding style are all very welcome, please also feel free to open pull requests for nits/petty changes.


You can install the package "sendclient" from the python package index

pip3 install sendclient

or from a clone of this repository

pip3 install /path/to/cloned/send-cli/

tip: use pip install -e to install in 'editable' mode if your intending to modify the client

Basic usage

$ send-cli -h
!!! Experimental/alpha quality suitable for testing at your own risk only !!!
usage: send-cli [-h]
                [--service-local | --service-dev | --service-stage | --service-live | --service SERVICE]
                [--file FILE | --stdin FILENAME | --delete URL TOKEN | --change-download-limit URL TOKEN LIMIT | --change-password URL TOKEN | --url URL]
                [--ignore-version] [--download-limit LIMIT]
                [--password | --password-unsafe PASSWORD_UNSAFE]

Unofficial (Firefox) Send client

positional arguments:
  input                 Uploads or downloads a file specified by path or url,
                        no other options required

optional arguments:
  -h, --help            show this help message and exit
  --ignore-version      Disable server version checks (MAY CAUSE LOSS OF DATA)
  --download-limit LIMIT
                        Download limit for the uploaded file. Should be <=20

Set the Send service to used:
  --service-local       Use a Send service at http://localhost:8080
  --service-dev         Use the Send development server for upload
  --service-stage       Use the Send staging server for upload
  --service-live        Use the Send production server for upload (Default)
  --service SERVICE     Specify the url of a Send service to use for upload,
                        can also be set with the environment variable

  --file FILE           Upload the specified file to Firefox Send
  --stdin FILENAME      Upload data read from standard input with this
  --delete URL TOKEN    Delete a file hosted on a Send server
  --change-download-limit URL TOKEN LIMIT
                        Change the download limit for a file hosted on a Send
                        server, LIMIT must be <=20
  --change-password URL TOKEN
                        change the password for a file hosted on a Send server
  --url URL             Download a file with a Send link

  --password            Protect the uploaded file with a password
  --password-unsafe PASSWORD_UNSAFE
                        Provide a password on the command-line (UNSAFE as
                        password visible in process list or shell history!)


Reading command line arguments from a file

Filenames on the command line prefixed with '@' will be replaced by the arguments they contain. This is handled by argparse

Example formatting




Multiple files can be included in the same command

send-cli @file1 @file2 --file path/to/file

Don't put secrets on the command line!

You can avoid secrets (such as passwords or Send URLs) being recorded in your shell history or exposed via /proc/PID/cmdlineby either

  • having send-cli prompt you for it (e.g. --password)
  • reading it from a file (e.g. --password-unsafe @password-file) if it has to be done non-interactively.

tip: Instead of a regular file, you can avoid writing the password to disk by using a named pipe (mkfifo)

Password Length

When uploading a file the Send UI prevents the uploading user from entering a password longer than 32 characters. send-cli does not enforce this limit but remains 'compatible' as Send does not currently limit password length when downloading a file.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.