Lantern - A P2P file sharing system with TUI dashboard
Project description
_ _
| | __ _ _ _| |_ ___ _ _ _ _
| |__/ _` | ' \ _/ -_) '_| ' \
|____\__,_|_||_\__\___|_| |_||_|
A peer-to-peer file sharing system with a beautiful terminal UI (TUI) dashboard.
Features
- P2P File Sharing - Share files directly between computers on the same network
- Auto Discovery - Automatically discovers peers on the LAN via UDP broadcast
- Beautiful TUI - Modern terminal interface built with Textual
- Dual Mode - Both CLI and TUI modes available
- Light/Dark Themes - Toggle between color schemes
- Progress Bars - Visual feedback for large file transfers
- Notifications - Toast notifications for operation completion
- Path Safety - Built-in protection against path traversal attacks
Installation
From PyPI (when published)
pip install lantern-p2p
From Source
git clone https://github.com/shx-dow/lantern.git
cd lantern
pip install -e .
Usage
TUI Mode (Default)
Launch the terminal dashboard (beautiful visual interface):
lantern
Or explicitly:
lantern --tui
CLI Mode
Use command-line interface (text-based commands):
lantern --cli
Available CLI commands:
peers- Show discovered peerslist <host[:port]>- List files on remote peerdownload <host[:port]> <file>- Download a fileupload <host[:port]> <path>- Upload a filedelete <host[:port]> <file>- Delete remote filemyfiles- List your shared fileshelp- Show helpquit- Exit
Custom Port
lantern --port 6000
Key Bindings (TUI Mode)
| Key | Action |
|---|---|
F1 |
Show help |
F5 |
Refresh files |
t |
Toggle theme |
u |
Upload file |
d |
Download file |
x |
Delete file |
Tab |
Cycle focus |
q |
Quit |
Configuration
Shared files are stored in the shared_files/ directory by default. This directory is created automatically when you first run Lantern.
Requirements
- Python 3.8 or higher
- textual >= 0.50.0
- psutil >= 5.9.0
Architecture
lantern/
├── config.py # Configuration constants
├── protocol.py # Message framing & file transfer protocol
├── discovery.py # UDP peer discovery
├── server.py # TCP file server
├── client.py # TCP client operations
├── peer.py # CLI entry point
├── tui.py # Textual TUI dashboard
├── main.py # Package entry point
└── styles/ # CSS stylesheets
└── lantern.css
Development
Install with dev dependencies:
pip install -e ".[dev]"
Run linting:
black lantern/
ruff check lantern/
License
MIT License - see LICENSE file for details.
Contributing
Contributions welcome! Please open an issue or pull request.
Acknowledgments
Built with Textual for the TUI.
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
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 lantern_p2p-1.0.3.tar.gz.
File metadata
- Download URL: lantern_p2p-1.0.3.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e1a86afbd1d6252963b2330cce112bcfd8644459f047366fa3e473fbf09ef52
|
|
| MD5 |
3979b63a5e4ca80a22655f3b9f3595e5
|
|
| BLAKE2b-256 |
08edee228d7582df1ab81b40b68013e6d37de9efe9395e753d40de335824a21c
|
File details
Details for the file lantern_p2p-1.0.3-py3-none-any.whl.
File metadata
- Download URL: lantern_p2p-1.0.3-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9b6980e0d4a66fac73e36c37bb2c27e33b804bb2083cb945edb734edc4af456
|
|
| MD5 |
a07a51b33f628fbc1ea104e25505db8b
|
|
| BLAKE2b-256 |
acd120b584d72e4e85b89391448eb4d498d30529e70d1117aab8924d20975764
|