A terminal-based file sharing application that creates a local server on port 80 and uses mDNS for automatic network discovery. Share files easily across your LAN with a simple TUI interface.
Letshare is a terminal-based file sharing application designed to simplify local network file transfers with minimal setup. It creates a local server on port 80 and uses mDNS for automatic network discovery, enabling users to share files easily across their LAN through a simple text-based user interface (TUI).
Key Features:
Instantly share files and folders over your local area network.
Automatic peer discovery via mDNS ensures seamless connections without manual configuration.
Intuitive TUI interface for easy navigation and management of shared content.
Mobile-friendly access using QR codes to quickly share URLs with nearby devices.
Built-in download manager supports pausing, resuming, and deleting downloads.
Cross-platform compatibility, running smoothly on Linux, Windows, and macOS.
Audience & Benefit:
Ideal for developers sharing build artifacts or test files without cloud uploads, teachers distributing course materials in a lab or classroom setting, and teams collaborating within the same network. Letshare allows users to share resources efficiently, eliminating the need for external drives or complex network configurations. Its intuitive interface and automatic discovery features make it accessible even to those with limited technical expertise.
README
About
Letshare is a terminal-based file sharing application that creates a local web server and uses mDNS for automatic network discovery. Easily share files and folders across your local network using a simple, intuitive TUI — no complex setup needed.
Who is it for?
Letshare is built for anyone who wants to share files fast, hassle-free, and locally.
Developers — Instantly share your build artifacts or test files with teammates without uploading to the cloud
Teachers & Professors — Distribute course material to students in a lab or classroom, all connected to the same Wi-Fi or LAN.
Teams on the same network — Share resources in offices, co-working spaces, or home labs without dealing with network drives or external servers.
Features
Instant file sharing over local network
Access via IP or .local hostname
Automatic peer discovery with mDNS
Intuitive TUI interface
Runs locally — no internet required
Cross-platform support (Linux, Windows, macOS)
Mobile-friendly with QR codes
Includes Preferences section for customized behaviour
Built-in download manager with pause, resume, delete options
Automatically zip directories (with or without compression) before sharing
Graceful shutdown — the server continues serving active downloads even after the server is shut down
Requirements
Administrator/Root privileges (required to bind to port 80)
Why port 80, so users don't have to write :port when they write the URL
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike.
GitHub CLI (gh) is a command-line tool that brings pull requests, issues, GitHub Actions, and other GitHub features to your terminal, so you can do all your work in one place.
The Go programming language is an open source project to make programmers more productive.
Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
The Azure command-line interface (Azure CLI) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation.
The AWS CLI is an open source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services.
With minimal configuration, you can start using all of the functionality provided by the AWS Management Console from your favorite terminal program.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike.
GitHub CLI (gh) is a command-line tool that brings pull requests, issues, GitHub Actions, and other GitHub features to your terminal, so you can do all your work in one place.
The Go programming language is an open source project to make programmers more productive.
Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
The Azure command-line interface (Azure CLI) is a set of commands used to create and manage Azure resources. The Azure CLI is available across Azure services and is designed to get you working quickly with Azure, with an emphasis on automation.
The AWS CLI is an open source tool built on top of the AWS SDK for Python (Boto) that provides commands for interacting with AWS services.
With minimal configuration, you can start using all of the functionality provided by the AWS Management Console from your favorite terminal program.
Additional Information:
Letshare can be installed via winget on supported platforms, ensuring a straightforward setup process.
go install github.com/MuhamedUsman/letshare
Linux
Debian/Ubuntu (amd64)
# Download the .deb file from releases
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_1.0.1_linux_amd64.deb
# Install the package with automatic dependency resolution
sudo apt install ./letshare_1.0.1_linux_amd64.deb
Debian/Ubuntu (arm64)
# Download the .deb file from releases
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_1.0.1_linux_arm64.deb
# Install the package with automatic dependency resolution
sudo apt install ./letshare_1.0.1_linux_arm64.deb
Red Hat/Fedora/CentOS (amd64)
# Download the .rpm file from releases
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_1.0.1_linux_amd64.rpm
# Install the package with automatic dependency resolution
sudo dnf install letshare_1.0.1_linux_amd64.rpm # Fedora/RHEL 8+
# or
sudo yum install letshare_1.0.1_linux_amd64.rpm # CentOS/RHEL 7
Red Hat/Fedora/CentOS (arm64)
# Download the .rpm file from releases
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_1.0.1_linux_arm64.rpm
# Install the package with automatic dependency resolution
sudo dnf install letshare_1.0.1_linux_arm64.rpm # Fedora/RHEL 8+
# or
sudo yum install letshare_1.0.1_linux_arm64.rpm # CentOS/RHEL 7
Alpine Linux (amd64)
# Download the .apk file from releases
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_1.0.1_linux_amd64.apk
# Install dependencies first, then the package
sudo apk add avahi avahi-tools
sudo apk add --allow-untrusted letshare_1.0.1_linux_amd64.apk
Alpine Linux (arm64)
# Download the .apk file from releases
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_1.0.1_linux_arm64.apk
# Install dependencies first, then the package
sudo apk add avahi avahi-tools
sudo apk add --allow-untrusted letshare_1.0.1_linux_arm64.apk
Arch Linux (amd64)
# Download the package from releases
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_1.0.1_linux_amd64.pkg.tar.zst
# Install the package with automatic dependency resolution
sudo pacman -U letshare_1.0.1_linux_amd64.pkg.tar.zst
Arch Linux (arm64)
# Download the package from releases
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_1.0.1_linux_arm64.pkg.tar.zst
# Install the package with automatic dependency resolution
sudo pacman -U letshare_1.0.1_linux_arm64.pkg.tar.zst
Manual Binary Installation (All Distributions)
If you prefer not to use package managers or encounter dependency issues:
# Install mDNS dependencies manually based on your distribution:
# Debian/Ubuntu:
sudo apt update && sudo apt install avahi-daemon avahi-utils
# Red Hat/Fedora/CentOS:
sudo dnf install avahi avahi-tools # or use yum on older systems
# Alpine:
sudo apk add avahi avahi-tools
# Arch:
sudo pacman -S avahi
# Then download and install the binary:
wget https://github.com/MuhamedUsman/letshare/releases/latest/download/letshare_Linux_x86_64.tar.gz
tar -xzf letshare_Linux_x86_64.tar.gz
sudo mv Letshare /usr/local/bin/
sudo chmod +x /usr/local/bin/letshare
Windows
winget install MuhamedUsman.Letshare
macOS
# Add the tap (only needed once)
brew tap MuhamedUsman/homebrew-letshare
# Install Letshare
brew install --cask letshare
For macOS users you may need to allow letshare access to port 80, I can't help you with that much because I don't own a mac, I can give you some un-tested solution, but I really don't want to do that.
So, if you do find a solution where user don't have to write sudo each time they run this app, feel free to open an issue and document your solution. It may help non-technical users.
Quick Start
Run letshare in your terminal
Navigate to the directory you want to share
Select files/folders using the TUI
Share the displayed URL with others on your network
Access files via TUI or Browser at http://[instance-name].local or the IP address
Caveats
Older Android devices (pre-Android 12) have problems resolving multicast DNS (.local domains).
While newer Android versions support mDNS, network configuration and device-specific implementations
may still cause issues. Using IP addresses ensures compatibility across all devices, which is why
the QR code feature exists in the app.
Some download managers (including IDM) may not properly resolve .local domains due to
limited mDNS support in their networking implementation. Using direct IP addresses
ensures reliable downloads across different client applications.
If you're connected to a VPN, Letshare may bind to your VPN-assigned IP (e.g., 172.x.x.x),
which is not accessible to devices on your local network,
make sure you're disconnected from the VPN before starting the server.
Extras
Terminal Colors
For Linux and macOS users if you're not seeing true colors;
I've done my best to build this project thoughtfully, but there's always room for improvement. Your contributions play a vital role in helping it grow and get better.
Feel free to contribute by submitting an issue, suggesting ideas, or opening a pull request.
Feedback and contributions are always welcomed and appreciated!
License
This product is distributed under MIT license.
Free for Commercial and Non-Commercial Use.
zoxide is a smarter cd command, inspired by z and autojump. It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes. zoxide works on all major shells.
zoxide is a smarter cd command, inspired by z and autojump. It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes. zoxide works on all major shells.
AI Shell is a CLI tool that brings the power of artificial intelligence directly to your command line! Designed to help you get command assistance from various AI assistants, AI Shell is a versatile tool to help you become more productive in the command line. We call these various AI assistant providers agents. You can use agents to interact with different generative AI models or other AI/ML/assistant providers in a conversational manner.
AI Shell is a CLI tool that brings the power of artificial intelligence directly to your command line! Designed to help you get command assistance from various AI assistants, AI Shell is a versatile tool to help you become more productive in the command line. We call these various AI assistant providers agents. You can use agents to interact with different generative AI models or other AI/ML/assistant providers in a conversational manner.
Gitleaks is a SAST tool for detecting and preventing hardcoded secrets like passwords, api keys,
and tokens in git repos. Gitleaks is an easy-to-use, all-in-one solution for detecting secrets,
past or present, in your code.
Gitleaks is a SAST tool for detecting and preventing hardcoded secrets like passwords, api keys,
and tokens in git repos. Gitleaks is an easy-to-use, all-in-one solution for detecting secrets,
past or present, in your code.
Gitleaks is a SAST tool for detecting and preventing hardcoded secrets like passwords, api keys,
and tokens in git repos. Gitleaks is an easy-to-use, all-in-one solution for detecting secrets,
past or present, in your code.