Cross-platform file sharing via QR code. Defaults to account-free SSH tunneling on Linux/macOS.
Project description
QRTunnel
Cross-platform file sharing via SSH reverse tunneling and QR codes. Allows sharing files with mobile devices anywhere in the world, even behind NAT/firewalls.
Now featuring a new interactive Terminal User Interface (TUI) for easier navigation!
Features
- Interactive TUI: A beautiful, easy-to-use terminal interface to select files, choose modes, and configure ports using arrow keys.
- Simple File Sharing: Share one or more files directly from your command line.
- Receive Files: Start in upload mode to receive files from any device with a web browser.
- Smart Mode: Automatically provides both a global Internet link and a high-speed LAN link. The client device auto-detects if it's on the same Wi-Fi and switches to maximum speed.
- High-Speed LAN Sharing: Use the
--lanflag (or select LAN in TUI) to share files directly over your local network, keeping data private and fast. - LAN Security (OTP): High-speed LAN transfers are protected by a random 6-digit passcode displayed only on your terminal.
- Randomized & Custom Ports: Defaults to a random port (20000-60000) for security, or choose your own custom port.
- Secure Tunnels: Supports both SSH Tunneling (default on Linux/macOS) and ngrok (default on Windows) for secure, public access.
- SSH Tunneling: Uses
localhost.runfor instant tunneling without any account or sign-up. - Ngrok Support: Reliable tunneling via ngrok (requires free account).
- SSH Tunneling: Uses
- QR Code Display: Generates a scannable QR code in your terminal for easy access on mobile devices.
- Web Interface: Provides a simple web page for recipients to download shared files or upload files to you.
Installation
pip install qrtunnel
This will install qrtunnel and all its dependencies.
Usage
1. Interactive Mode (TUI)
Simply run qrtunnel without any arguments to launch the interactive interface:
qrtunnel
Use your Arrow Keys to:
- Select SEND or RECEIVE.
- Navigate and select files (Space to toggle, Enter to confirm).
- Choose your Tunnel Mode (Smart, LAN, SSH, Ngrok).
- Select a Port (Random or Custom).
- Launch!
2. Command Line Interface (CLI)
For quick, scripted, or direct usage, use the send and receive subcommands.
Sharing Files (Send)
To share one or more files:
qrtunnel send <file_path1> [<file_path2> ...]
Example:
qrtunnel send mydocument.pdf photos/
Options:
-smart: (Default) Enables both LAN and Internet links.-lan: Force LAN-only mode (fastest, same Wi-Fi only).-ssh: Force SSH tunneling (no account needed).-ngrok: Force ngrok tunneling (requires account).-p <port>or-<port>: Specify a custom port (e.g.,-p 8080or-8080).
Receiving Files (Receive)
To receive files on your computer:
qrtunnel receive [destination_directory]
Example:
qrtunnel receive ./downloads
This starts the server in upload mode. Scan the QR code to get a web page where you can upload files to your computer.
Tunnel Modes Explained
- Smart Mode: Best for most cases. It creates a public tunnel AND a local LAN server. The phone will try to use the LAN connection first (fastest) and fall back to the tunnel if needed.
- LAN Mode: Only accessible to devices on the same Wi-Fi. Fastest speed, maximum privacy.
- SSH Mode: (Linux/macOS Default) Uses
localhost.runto create a public link. No account required. - Ngrok Mode: (Windows Default) Uses
ngrokfor a stable public link. Requires a free ngrok account.
Ngrok Setup
If you use ngrok (default on Windows, optional on Linux/macOS), you'll need to set up your authtoken once. The TUI or CLI will prompt you if it's missing, or you can configure it manually if needed.
License
MIT
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 qrtunnel-3.5.1.tar.gz.
File metadata
- Download URL: qrtunnel-3.5.1.tar.gz
- Upload date:
- Size: 23.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
739e9215b1dcef24d367622bc642f737e244777249603459e79e0f2d32205b7b
|
|
| MD5 |
ef2c83745ec26cb148bf439b9e54271d
|
|
| BLAKE2b-256 |
8d59de588aa05af5ef531733930a969160287f7a951ec6d780575a288100f54f
|
File details
Details for the file qrtunnel-3.5.1-py3-none-any.whl.
File metadata
- Download URL: qrtunnel-3.5.1-py3-none-any.whl
- Upload date:
- Size: 23.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"43","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f433a4a7f11165e780be0f39d2250d0b5c52b3b43ac8d93e8fa96e7a067cf87
|
|
| MD5 |
909d0c020476eda8e14f79f7d027c6e6
|
|
| BLAKE2b-256 |
e2d3c8dab02944d7187e625798973903268cc66d99fa6aa5f50b34e1050b3eb3
|