@onokashino/share-me-cli
v1.0.1
Published
End-to-end-encrypted file & text sharing from the command line (share·me CLI).
Maintainers
Readme
@onokashino/share-me-cli
End-to-end-encrypted file and text sharing from the command line.
share-me (short alias shm) is the console client for share·me. It performs the same end-to-end encryption as the web app, so the server only ever stores ciphertext: files, folders, and text are encrypted on your machine before upload, and the decryption key lives only in the share link fragment (#k=...), which never reaches the server.
Install
npm install -g @onokashino/share-me-cli # installs `share-me` + `shm`
# or run once, without installing:
npx @onokashino/share-me-cli up ./report.pdfRequires Node.js 20 or newer. The package ships as a single self-contained bundle with no runtime dependencies.
Quick start
Point it at an instance (your own or the public demo). The first server you add becomes the default:
shm servers add demo https://share-me.onokami.spaceSend and receive:
shm up ./report.pdf # encrypt + upload a file, prints a share link
shm up ./folder # a folder is zipped into an archive first
shm up --text "secret note" # share text
shm down "<share link>" # text is shown; a file prompts for a save nameRun shm with no arguments for an interactive menu (send / receive / servers / presets / language).
Settings and presets
Choose options interactively, pick a preset, or pass flags directly (flags override the preset):
| Flag | Meaning |
|---|---|
| -e, --expires <dur> | lifetime: 1h, 7d, 2w |
| -m, --max-downloads <n> | download limit (0 = unlimited) |
| --burn | burn after reading (1 download) |
| --unlock <dur> | time-lock: not downloadable until now + dur |
| -p, --password | password-protect (prompted, or SHARE_ME_PASSWORD) |
| -P, --preset <name> | use a saved or built-in preset |
| --zip | archive a folder without asking |
| -y, --yes | skip interactive prompts (scripting) |
Built-in presets cover the common cases (single download, long storage, burn-after-read, and more); add your own with shm presets add.
Language
The interface is available in English, Russian, and Traditional Chinese:
shm lang ru # set and remember the language
shm --lang zh up ./file # one-off overrideIt also follows LC_ALL / LANG when no language is configured.
Security
Payloads are encrypted with AES-256-GCM in a segmented STREAM construction, with per-message sub-keys derived via HKDF and a key-committing header. Optional password protection derives the key with Argon2id. The server is zero-knowledge: it stores only ciphertext and never receives the key, which travels only in the link fragment. Full protocol details are in the main repository.