Well aft features:
- Encryption. Currently the only algorithm in use is AES-128/256 GCM and for exchanging keys is x25519 Diffie-Hellman, but in the future there could be other algorithms such as XChaCha.
- Parallel Encryption (with an option to choose the amount of threads) which makes the transfer much faster.
- Peer-to-Peer and Relay Modes: Individuals who prefer not to open a port can utilize a relay service. Currently, there is no hosted relay available; however, if there is sufficient demand, I may consider establishing one. The relay does not get any information about the file.
- Blocking senders. Blocking senders is only supported in relay mode which allows for basically...blocking senders. It relies on an IP address (it's not shared with the receiver, only a hashed one).
- DNS lookups.
- More info in the GitHub page...
# Comparisons with other tools
I didn't look too much into the protocols of the tools you mentioned, but here some differences:
- croc and magic wormhole - (always?) uses a relay. Good for most cases, but it has some problems such as: transferring on local networks is not accounted for and relying on a relay. They might try to connect the receiver and the sender first but I'm not sure.
- rclone - not really the same purpose. rclone wants to sync files for cloud storage with popular providers or your own. aft wants to transfer files between any two devices but not syncing.
- sfk - if I found the correct one, sfk main concern is not file transfer but multiple utilities. aft is only for transferring files.
## Executables size
Last time I installed magic-wormhole, I was required to install 340MB of dependencies on a new VPS. aft was only a quick `sh` run away. croc on the same system is 13MB, but aft is 2.6MB.
## Speed
Currently aft matches almost the same download speed with croc and magic-wormhole (they're the only ones I tested of some quick runs) (might be even faster if you configure the amount of threads). But I do believe aft still has potential for making the transfer even faster. One of the reasons for this potential is because I'm using Rust, and Rust allows for low-level programming which might be useful here.
Regarding mDNS, I didn't look into it, but if there is demand I might.
edit: formatting and clarify