Skip to main content

Glitter

Glitter — Simple File Transfer CLI

Python PyPI GitHub release Downloads CI Codecov License

English | 中文


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(x86/ARM): 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 + ChaCha20 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 (<1MB), 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
  • Firewall: Allow UDP 45845 and TCP 45846 (transfer port) for the app if discovery/transfer is blocked.

Run Glitter instantly with uv

  curl -LsSf https://astral.sh/uv/install.sh | sh
  uv run glitter

Installation

Recommended to install and run via pipx:

  • 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

  • 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 [-q|--quiet] <peer|IP[:port]> <path> — 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 | --export [PATH]] [-q|--quiet] — Print recent transfer history records, clear them instantly, or export them as glitter-history-<count>.txt.
  • glitter settings [--language CODE] [--device-name NAME] [--clear-trust] [-q|--quiet] — 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] [-q|--quiet] — 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 (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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

glitter_cli-0.6.12.tar.gz (44.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

glitter_cli-0.6.12-py3-none-any.whl (50.0 kB view details)

Uploaded Python 3

File details

Details for the file glitter_cli-0.6.12.tar.gz.

File metadata

  • Download URL: glitter_cli-0.6.12.tar.gz
  • Upload date:
  • Size: 44.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for glitter_cli-0.6.12.tar.gz
Algorithm Hash digest
SHA256 a52847de6594ab33c747ad56c5d8d025db5d612ec0af34d1cc523dd169443ac2
MD5 f28ab8481e21157d281f69431221c5c6
BLAKE2b-256 8ed769c738f88d61204452cdfe55ddc322df36e7d7ed1823ce7f7fefa190263c

See more details on using hashes here.

Provenance

The following attestation bundles were made for glitter_cli-0.6.12.tar.gz:

Publisher: publish.yml on scarletkc/glitter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file glitter_cli-0.6.12-py3-none-any.whl.

File metadata

  • Download URL: glitter_cli-0.6.12-py3-none-any.whl
  • Upload date:
  • Size: 50.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for glitter_cli-0.6.12-py3-none-any.whl
Algorithm Hash digest
SHA256 2b8e81436f8440e686315efce93a6a213736127e2701173fcd7c700b88883410
MD5 cd6ee96f29479b44f62bd4993cf8096f
BLAKE2b-256 e322530dee45d812468d6594280891f9f2c19c11ce5d48f6c9a0ff40ae83b7cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for glitter_cli-0.6.12-py3-none-any.whl:

Publisher: publish.yml on scarletkc/glitter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.6.12 This release

2 files

0.6.11

2 files

0.6.10

2 files

0.6.9

2 files

0.6.8

2 files

0.6.7

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.5

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page