Skip to main content

Peer-to-peer file and directory transfer system

Project description

FTS

FTS (File Transfer System) is a lightweight CLI tool for file transfers, chatrooms, and more. It’s designed for fast local-network sharing, simple chat creation, and utility management in a single binary.

[!CAUTION] FTS should NEVER be run on a public network without permission from the proper authorities; there are safeguards in place to prevent fts from running on public networks


Features

  • Fast local-network file transfers (files or directories)
  • Lightweight chatrooms for easy communication
  • Discover and manage libraries for easy file sharing
  • Aliases and default settings for quick operations
  • Progress bars, rate limiting, and background servers
  • Security via trusted connections and public-network safeguards

[!IMPORTANT] FTS has currently only been tested on Windows. Other operating systems may not be supported.


Table of Contents


Installation

Install FTS globally using pip:

pip install fts-tool

To uninstall:

pip uninstall fts-tool

[!WARNING] Python must be installed and added to your system PATH to run fts from the terminal.


Usage

fts  [--logfile FILE] [-q] [-v] COMMAND [OPTIONS]

Run fts -h to see all global options. Each command has its own -h/--help flag.

[!CAUTION] FTS is executed as fts in the terminal, but the pip package is named fts-tool.


Example Use

# Start server
fts open downloads --progress

# Send a file
fts send C:\Users\Public\Pictures\family_photo.png 192.168.1.42 --progress

One computer opens the sever and the other sends the file


Project State

FTS development is temporarily slowed but will resume in 2–4 weeks. The project is very much alive.

Upcoming Features

  • Address any remaining issues in the current Windows build.
  • Include troubleshooting tips (e.g., firewall or network issues).
  • Support for common Linux systems.
  • Limit FTS usage on public networks instead of disabling it entirely.
  • Improve support for directory aliases in the GUI.
  • Implement file checksums to detect corrupted transfers.
  • Add scheduled or automated file transfers.
  • Enable transfer resuming for interrupted downloads.
  • Allow third-party extensions (e.g., custom compressors, encryption layers, notifications).

Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you’d like to change.


License

MIT


Commands

open

Start a server and listen for incoming transfers.

fts open OUTPUT_PATH [OPTIONS]

Arguments:

  • OUTPUT_PATH — Directory to save incoming transfers (required)

Options:

  • -d, --detached — Run server in the background
  • -l, --limit SIZE — Transfer rate limit (e.g. 500KB, 2MB, 1GB)
  • -x, --extract — Automatically extract transferred archives
  • --progress — Show progress bars during operations
  • -p, --port PORT — Override port used (0-65535)
  • --ip ADDR — Restrict requests to IP or hostname

send

Send a file to a target host.

fts send PATH IP [OPTIONS]

Arguments:

  • PATH — File to send (required)
  • IP — Target IP or hostname (required)

Options:

  • -n, --name NAME — Send file under a different name
  • -p, --port PORT — Override port used (0-65535)
  • -l, --limit SIZE — Transfer rate limit Transfer rate limit (e.g. 500KB, 2MB, 1GB)
  • --nocompress — Skip compression (faster, larger transfers)
  • --progress — Show progress bars

[!NOTE] FTS automatically skips compression for files that are already compressed. Enable this option only if FTS still attempts to compress such files.


send-dir

Send a directory recursively.

fts send-dir PATH IP [OPTIONS]

Arguments:

  • PATH — Directory to send (required)
  • IP — Target IP or hostname (required)

Options:

  • -n, --name NAME — Send directory under a different name
  • -p, --port PORT — Override port used (0-65535)
  • -l, --limit SIZE — Transfer rate limit Transfer rate limit (e.g. 500KB, 2MB, 1GB)
  • --pyzip — Use Python’s built-in compression instead of OS-level compression
  • --progress — Show progress bars

[!WARNING] The target directory will rezip after every send request; If this becomes a problem, it is recommended to pre-zip directories.


close

Close a detached server.

fts close PROCESS

Arguments:

  • PROCESS — One of all, receiving, or library

version

Displays the FTS version

fts version

trust

Trust an IP certificate, if a certificate has changed.

fts trust IP

Arguments:

  • IP — IP address whose certificate should be trusted

chat-create

Create a new chatroom.

fts chat-create NAME [OPTIONS]

Arguments:

  • NAME — Your username (required)

Options:

  • -p, --port PORT — Override port

chat-join

Join an existing chatroom.

fts chat-join NAME IP [OPTIONS]

Arguments:

  • NAME — Your username (required)
  • IP — IP to join (required)

Options:

  • -p, --port PORT — Override port

library

Download and manage local file directories.

fts library TASK [OPTIONS]

Arguments:

  • TASK — One of find, open, manage
  • OUTPUT_PATH — Directory for incoming transfers (required for find)

Options:

  • -d, --detached — Run library server in the background (open only)

[!TIP] The find command will automatically find open libraries on your local network


alias

Manage aliases.

fts alias ACTION [ARGS]

Arguments:

  • ACTION — One of add, remove, list
  • NAME — Alias name (required for add/remove)
  • VALUE — Alias value (required for add)
  • TYPE — One of ip or dir (required for add)

[!NOTE]
Directory aliases are not supported when selecting commands in the gui


defaults

Manage default settings.

fts defaults [OUTPUT_PATH]

Arguments:

  • OUTPUT_PATH — Directory to save incoming transfers

[!NOTE]
Saved defaults exist even if they don’t appear in the GUI. Leaving the argument blank will use your default values.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fts_tool-1.0.0.tar.gz (43.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fts_tool-1.0.0-py3-none-any.whl (49.5 kB view details)

Uploaded Python 3

File details

Details for the file fts_tool-1.0.0.tar.gz.

File metadata

  • Download URL: fts_tool-1.0.0.tar.gz
  • Upload date:
  • Size: 43.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for fts_tool-1.0.0.tar.gz
Algorithm Hash digest
SHA256 590235c5ac9f5271ab6e2d7b5c5266f44fb4202fed407de96ccf28210d53a38a
MD5 8763f6752718a7736455cc653768195f
BLAKE2b-256 d8f507216d6a3cb87998f8edae2d717629f876a1e71100851570c61faa060dee

See more details on using hashes here.

File details

Details for the file fts_tool-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: fts_tool-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 49.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for fts_tool-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70443e8776d790305312aec6fc091c8d90bec9aaeeadad7b16e5b63711306aea
MD5 702c0a56e3e2a53abf59c687b8ccd284
BLAKE2b-256 d94886b312ff0d9e35f9e1f8228da0216eef95c3527f97fab11b87c37bd5a9bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page