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
ftsfrom 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
ftsin the terminal, but the pip package is namedfts-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
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 ofall,receiving, orlibrary
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 offind,open,manageOUTPUT_PATH— Directory for incoming transfers (required forfind)
Options:
-d, --detached— Run library server in the background (openonly)
[!TIP] The find command will automatically find open libraries on your local network
alias
Manage aliases.
fts alias ACTION [ARGS]
Arguments:
ACTION— One ofadd,remove,listNAME— Alias name (required foradd/remove)VALUE— Alias value (required foradd)TYPE— One ofipordir(required foradd)
[!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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a7fe2f2e37e96acbea33c016f3dd6b651247afe394b21f5b0d772aeb9033e67
|
|
| MD5 |
fd5c80d8b73dfe39f1320f1db6992fc8
|
|
| BLAKE2b-256 |
87ec6cbb3a3e95838b2aec9766cad314fa0b2e9285386266d949f5b8bc792985
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4fdccf2e93f0e4156c48d8abd8bbfb1337c8b675f78510134818a65f71710bb
|
|
| MD5 |
91290a4f5ac9ee7a19d0baa634f1b5b5
|
|
| BLAKE2b-256 |
b234597a7cd7dd709c585e2ec171ef8e18f2734a0011e9cc35e0d90b22c89575
|