@shro/cli
v0.1.1
Published
`shro` is an encrypted temporary sharing CLI for files, directories, and text.
Readme
@shro/cli
shro is an encrypted temporary sharing CLI for files, directories, and text.
It encrypts content locally, uploads only encrypted payloads to your configured worker, and returns a share URL with the decryption key and delete token kept in the URL fragment.
Install
npm install -g @shro/cliRequirements
- Node.js 20+
- A deployed
shroworker
Set the worker base URL before use:
export SHARE_BASE_URL="https://shro-worker.example.workers.dev"Quick Start
shro ./report.pdf
shro ./photos
echo "hello world" | shro -
shro --text "hello world"Download And Delete
shro download "https://shro-worker.example.workers.dev/s/<id>#k=...&d=..."
shro delete "https://shro-worker.example.workers.dev/s/<id>#k=...&d=..."Example Session
Upload a file:
$ shro ./report.pdf
Preparing upload...
Uploading 1/1 chunks (2.4 MiB / 2.4 MiB, 100%)...
Finalizing upload...
https://shro-worker.example.workers.dev/s/abc123#k=...&d=...
Expires: 2026-04-08T12:34:56.000Z
QR:
[terminal QR code]Upload text and get machine-readable output:
$ shro --text "hello world" --json
{"url":"https://shro-worker.example.workers.dev/s/abc123#k=...&d=...","expiresAt":"2026-04-08T12:34:56.000Z"}Download and decrypt locally:
$ shro download "https://shro-worker.example.workers.dev/s/abc123#k=...&d=..." ./report.pdf
Downloaded: ./report.pdfDelete a share:
$ shro delete "https://shro-worker.example.workers.dev/s/abc123#k=...&d=..."
Deleted: abc123Features
- Encrypts files, directories, and text locally with AES-GCM
- Supports up to 3 GiB file or archive uploads
- Splits large uploads into encrypted chunks
- Downloads and decrypts shared content locally
- Prints a terminal QR code for the share URL by default
Security Notes
- Treat share URLs as bearer links
- Anyone with the full URL can access the share until it expires
- Anyone with the full URL can also delete the share
- Do not use it for regulated or highly sensitive data
Publish
From the CLI package directory:
npm publish --access publicFrom the monorepo root:
npm publish --workspace @shro/cli --access public