https://github.com/scarletkc/glitter
Glitter is a cross‑platform CLI for encrypted LAN file transfers. It auto‑discovers peers, confirms on receive, shows progress/throughput, and supports i18n.
https://github.com/scarletkc/glitter
cli diffie-hellman encryption file-transfer internationalization lan linux localsend-alternative macos multilingual p2p peer-discovery python sha256 tcp udp-broadcast windows wsl2
Last synced: 8 months ago
JSON representation
Glitter is a cross‑platform CLI for encrypted LAN file transfers. It auto‑discovers peers, confirms on receive, shows progress/throughput, and supports i18n.
- Host: GitHub
- URL: https://github.com/scarletkc/glitter
- Owner: scarletkc
- License: mit
- Created: 2025-11-01T02:45:39.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-11-01T07:47:32.000Z (8 months ago)
- Last Synced: 2025-11-01T08:28:16.463Z (8 months ago)
- Topics: cli, diffie-hellman, encryption, file-transfer, internationalization, lan, linux, localsend-alternative, macos, multilingual, p2p, peer-discovery, python, sha256, tcp, udp-broadcast, windows, wsl2
- Language: Python
- Homepage:
- Size: 31.3 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# Glitter — Simple File Transfer CLI
[](https://pypi.org/project/glitter-cli/)
[](https://www.python.org/downloads/)
[](https://github.com/scarletkc/glitter/blob/main/LICENSE)
**[English](https://github.com/scarletkc/glitter/blob/main/README.md)** | [中文](https://github.com/scarletkc/glitter/blob/main/docs/README.zh-CN.md)
---
Glitter is a cross‑platform, terminal‑based tool for sending files over a local network. It discovers peers automatically, confirms transfers on the receiver, and supports English/Chinese UIs.
- OS support: Linux, macOS, Windows
- Bilingual UI: English, 中文 (switchable in settings)
- Peer discovery via UDP broadcast + smart replies (or manual IP entry)
- Encrypted transfer (DH key exchange + stream cipher)
- Device fingerprint verification (TOFU) to flag impersonation attempts
- Integrity check (SHA-256) after receive
- Directory transfer: send entire folders (auto-zipped, zero compression)
- Transfer progress and live throughput (e.g. 1.2 MB/s)
- Transfer history (JSONL) stored under user home
- Settings for language & device name & encryption, clear history
## Why Glitter?
Glitter provides a **simple, terminal-based** alternative to GUI tools and complex protocols:
| Tool | Pros | Cons | Glitter Advantage |
|------|------|------|-------------------|
| **LocalSend** | Beautiful GUI, cross-platform | Requires GUI environment, ~100MB+ install | **CLI-first**: works via SSH, lightweight (~50KB), scriptable |
| **Magic Wormhole** | Simple one-time codes | Requires relay server, single-file only | **LAN-direct**: no internet needed, auto-discovery, no codes to type |
| **SFTP/SCP** | Universal, encrypted | Needs SSH server setup, manual IP entry | **Zero-config**: auto-discovers peers, no server setup |
| **rsync** | Powerful sync engine | Complex syntax, requires remote shell access | **Interactive**: menu-driven, progress bars, history tracking |
| **HTTP file server** | Simple `python -m http.server` | No encryption, manual URL sharing | **Secure**: DH key exchange + encryption, peer selection UI |
| **croc** | End-to-end encryption, relay servers, cross-platform | Requires typing codes, internet relay by default | **LAN-native**: auto-discovery on local network, no codes needed, works offline |
**Use Glitter when you want:**
- Quick file sharing on LAN without leaving the terminal
- Auto-discovery instead of typing IPs
- Encrypted transfers without complex SSH setup
- Minimal dependencies (pure Python, no external binaries)
- Transfer history and bilingual UI
## Quick Start
On first run, Glitter asks for language and device name and saves them. Next runs go straight to the main menu.
- Compilation: [binary](https://github.com/scarletkc/glitter/releases)
- Firewall: Allow UDP 45845 and TCP 45846 (transfer port) for the app if discovery/transfer is blocked.
### Installation
Recommended to install and run via [pipx](https://pipx.pypa.io/stable/):
- `apt install pipx` # Debian/Ubuntu
- `pipx install glitter-cli`
- `glitter`
- `pipx upgrade glitter-cli` # to update
Alternative: install via pip (not recommended)
- `pip install glitter-cli`
- `glitter`
- `pip install --upgrade glitter-cli` # to update
### From source
Requirements: install [deps](https://github.com/scarletkc/glitter/blob/main/requirements.txt)
- Linux/macOS/WSL/Windows (PowerShell/CMD) Run:
- `git clone https://github.com/scarletkc/glitter.git`
- `pip install -r requirements.txt`
- `python3 -m glitter`
- `git pull` # to update
## Usage
- **`glitter`** — Launch the interactive menu (list peers, send/receive requests, view history, configure download/encryption/auto-accept modes, etc.).
- `glitter send ` — Send a file or directory directly without the menu (peer ID, device name, or manual IP).
- `glitter peers` — List peers currently discovered on the LAN.
- `glitter history [--clear]` — Print recent transfer history records, or clear them instantly.
- `glitter settings [--language CODE] [--device-name NAME] [--clear-trust]` — Jump straight into the settings menu or apply specific changes (language, device name, trust reset) in one go.
- `glitter update` — Check the latest available Glitter version.
- `glitter receive [--mode trusted|all] [--dir PATH] [--port PORT] [--no-encryption]` — Run in auto-receive mode (trusted/all) without opening the menu.
Tip: once the initial setup is complete, you can keep Glitter running headlessly with your favourite process manager (`uv run`, `systemd`, `pm2`, ...).
## Files & Persistence
- Config: `~/.glitter/config.json` (language, device name, transfer port, encryption, default receive directory, auto-accept mode)
- Trusted fingerprints: `~/.glitter/known_peers.json` (peer IDs and fingerprints stored after first approval)
- History: `~/.glitter/history.jsonl` (one JSON per line)
- Default receive folder: configurable; defaults to `~/Downloads/GlitterDownloads` on Windows, `~/GlitterDownloads` elsewhere
## Debugging
- Enable verbose IDs in lists by setting env var `GLITTER_DEBUG=1` before launch.
## License
[MIT](https://github.com/scarletkc/glitter/blob/main/LICENSE)