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.1.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.1-py3-none-any.whl (49.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fts_tool-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 1a7fe2f2e37e96acbea33c016f3dd6b651247afe394b21f5b0d772aeb9033e67
MD5 fd5c80d8b73dfe39f1320f1db6992fc8
BLAKE2b-256 87ec6cbb3a3e95838b2aec9766cad314fa0b2e9285386266d949f5b8bc792985

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fts_tool-1.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a4fdccf2e93f0e4156c48d8abd8bbfb1337c8b675f78510134818a65f71710bb
MD5 91290a4f5ac9ee7a19d0baa634f1b5b5
BLAKE2b-256 b234597a7cd7dd709c585e2ec171ef8e18f2734a0011e9cc35e0d90b22c89575

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