@liteio/storage-cli

Files from
your terminal.

Upload, download, and share files with one command. Single binary. No dependencies.

Install
$ curl -fsSL https://storage.liteio.dev/cli/install.sh | sh
storage
$ storage put demo.pdf docs/
PUT docs/demo.pdf 2.4 MB
$ storage ls docs/
demo.pdf 2.4 MB just now
readme.md 1.2 KB 2h ago
$ storage share docs/demo.pdf
https://storage.liteio.dev/s/k7x9m2
expires in 24h
Tutorial
Up and running in 60 seconds.

Install, authenticate, upload your first file.

01
Install the CLI
A single binary, no runtime needed. Works immediately after install.
$ curl -fsSL https://storage.liteio.dev/cli/install.sh | sh
02
Sign in
Opens your browser, confirms your identity, saves the token locally.
$ storage login
03
Upload something
Any file, any size. It's in your storage in seconds.
$ storage put report.pdf docs/

Command reference
Everything the CLI can do.

Every command supports --json for scripting and --quiet for silence.

put
aliases: upload, push
Upload a file or pipe from stdin. Streams directly to the edge — no temp files.
$ storage put photo.jpg images/
get
aliases: download, pull
Download a file to the current directory, or specify a destination path.
$ storage get images/photo.jpg
cat
aliases: read
Print file contents to stdout. Perfect for piping into other tools.
$ storage cat config.json | jq '.'
ls
aliases: list
List files and folders at a path. Shows name, size, and modified time.
$ storage ls docs/
mv
aliases: move, rename
Move or rename a file. Works across folders.
$ storage mv draft.md final.md
rm
aliases: delete, del
Delete one or more files. Folders too, with everything inside.
$ storage rm old-draft.md
find
aliases: search
Search files by name across your entire storage. Multi-word queries with relevance scoring.
$ storage find "quarterly report"
stat
aliases: stats
See how much storage you're using. Shows file count and total bytes.
$ storage stat
share
aliases: sign
Create a temporary public link. Set a custom TTL or use the default (1 hour, max 7 days).
$ storage share report.pdf --ttl 86400
login
Authenticate via your browser. Opens a browser tab, verifies your identity, saves the token to ~/.config/storage/token.
$ storage login
token
Show your current token and where it came from (flag, env, or file). Or set a new one.
$ storage token
key
aliases: keys
Create, list, or revoke API keys. Keys can be scoped to a path prefix for security.
$ storage key create deploy --prefix cdn/

Global flags
Works on every command.

Pass these to any command to control output and auth.

Flag
Short
What it does
--json
-j
Output as JSON — pipe into jq or any tool
--quiet
-q
Suppress non-essential output
--token
-t
Use a specific token (overrides env and config file)
--endpoint
Override the API base URL
--no-color
Disable colored output (also: NO_COLOR=1)

Recipes
Real-world workflows.

Copy-paste these into your terminal, CI config, or scripts.

CI / CD
Upload build artifacts
Set STORAGE_TOKEN as a secret in your CI. Upload happens in one step.
$ storage put dist/app.js cdn/v1.2.0/
Backups
Stream from any command
Pipe directly into storage. No temp files, no disk space needed.
$ pg_dump mydb | storage put - backups/db.sql
Scripting
JSON output for automation
Every command supports --json. Pipe into jq, fx, or your own scripts.
$ storage ls --json | jq '.[].name'
Scoped API key for a deploy pipeline
storage
$ storage key create github-deploy --prefix cdn/
CREATED github-deploy
prefix: cdn/
token: sk_a8f3c7e2d1b9...4k2m
Add to your CI secrets:
STORAGE_TOKEN=sk_a8f3c7e2d1b9...4k2m
Share a file with a 24-hour link
storage
$ storage share docs/report.pdf --ttl 86400
https://storage.liteio.dev/s/k7x9m2
expires in 24h
$ storage share photos/team.jpg
https://storage.liteio.dev/s/m2n8p4
expires in 1h

Authentication
Two ways to authenticate.

Browser login for your laptop. API keys for your scripts.

Interactive
Browser login
Opens your browser. No password needed. Token saved to ~/.config/storage/token.
$ storage login
Automation
API keys
For CI and scripts. Scope keys to a prefix for security. Set STORAGE_TOKEN env var.
$ storage key create deploy --prefix cdn/
Token resolution order: --token flag → STORAGE_TOKEN env → ~/.config/storage/token
> ready?
Try it now.

One command to install. Works on macOS, Linux, and Windows.

$ curl -fsSL https://storage.liteio.dev/cli/install.sh | sh
# Storage CLI Single binary. Zero dependencies. macOS, Linux, Windows. Upload, download, share, search, and manage files from your terminal. ## Installation ### macOS / Linux
bash curl -fsSL https://storage.liteio.dev/cli/install.sh | sh
### Windows (PowerShell)
powershell irm https://storage.liteio.dev/cli/install.ps1 | iex
### Package Managers
bash npm i -g @liteio/storage-cli # npm bun i -g @liteio/storage-cli # Bun deno install -g npm:@liteio/storage-cli # Deno
### Direct Download
PlatformArchitectureURL
macOSApple Silicon (arm64)https://storage.liteio.dev/cli/releases/latest/storage-darwin-arm64
macOSIntel (amd64)https://storage.liteio.dev/cli/releases/latest/storage-darwin-amd64
Linuxx64 (amd64)https://storage.liteio.dev/cli/releases/latest/storage-linux-amd64
LinuxARM (arm64)https://storage.liteio.dev/cli/releases/latest/storage-linux-arm64
Windowsx64 (amd64)https://storage.liteio.dev/cli/releases/latest/storage-windows-amd64.exe
WindowsARM (arm64)https://storage.liteio.dev/cli/releases/latest/storage-windows-arm64.exe
## Quick Start
bash # 1. Install curl -fsSL https://storage.liteio.dev/cli/install.sh | sh # 2. Sign in (opens browser) storage login # 3. Upload a file storage put report.pdf docs/ # 4. Share it storage share docs/report.pdf # → https://storage.liteio.dev/s/k7x9m2 (expires in 1h)
## Commands ### File Operations #### storage put <file> [destination] Upload a file or pipe from stdin. Streams directly to the edge — no temp files. - Aliases: upload, push - Use - as file to read from stdin: pg_dump mydb | storage put - backup.sql
bash storage put photo.jpg images/
#### storage get <path> [destination] Download a file from storage to the current directory or a specified path. - Aliases: download, pull
bash storage get images/photo.jpg storage get images/photo.jpg ~/Downloads/
#### storage cat <path> Print file contents to stdout. Useful for piping into other tools. - Aliases: read
bash storage cat config.json | jq '.'
#### storage ls [path] List files and folders. Shows name, size, content type, and last modified time. - Aliases: list
bash storage ls docs/
#### storage mv <source> <destination> Move or rename a file. Works across folders. - Aliases: move, rename
bash storage mv draft.md final.md storage mv drafts/post.md published/post.md
#### storage rm <path...> Delete one or more files. Folders are deleted recursively. - Aliases: delete, del
bash storage rm old-draft.md storage rm archive/ # deletes folder and all contents
### Discovery #### storage find <query> Search files by name across your entire storage. Multi-word queries with relevance scoring. - Aliases: search
bash storage find "quarterly report"
#### storage stat Show storage usage: total file count and bytes used. - Aliases: stats
bash storage stat storage stat --json | jq '{files: .count, mb: (.bytes / 1048576 | floor)}'
### Sharing #### storage share <path> [--ttl <seconds>] Create a temporary public link. Anyone with the link can download. - Aliases: sign - Default TTL: 1 hour (3600 seconds) - Maximum TTL: 7 days (604800 seconds) - Flags: --ttl, --expires, -x
bash storage share report.pdf # 1 hour link storage share report.pdf --ttl 86400 # 24 hour link
### Authentication #### storage login [name] Authenticate via browser. Opens your default browser, verifies identity, saves the token. - Pass a name to register a new account.
bash storage login storage login my-username # register new account
#### storage logout Remove saved credentials and invalidate session. #### storage token [<token>] Show current auth token and its source, or set a new one.
bash storage token # show current token storage token sk_abc123 # set token
#### storage key create <name> [--prefix <path>] Create a named API key. Optionally scope to a path prefix. - Aliases for key: keys
bash storage key create github-deploy --prefix cdn/
#### storage key list List all API keys with metadata (name, prefix, expiry). #### storage key revoke <id> Revoke an API key by ID. Immediately invalidates it. - Aliases: delete, rm ## Global Flags
FlagShortDescription
--json-jOutput as JSON (for scripting and piping into jq)
--quiet-qSuppress non-essential output
--token-tUse a specific auth token (overrides env and config)
--endpointOverride the API base URL
--no-colorDisable colored output (also: NO_COLOR=1 env var)
--help-hShow help for any command
--version-VPrint CLI version
## Authentication Two methods are supported: ### Browser Login (interactive)
bash storage login
Opens your browser. No password needed. Token saved to ~/.config/storage/token. ### API Keys (automation)
bash storage key create deploy --prefix cdn/ # Returns: sk_a8f3c7e2d1b9...4k2m
Set STORAGE_TOKEN as an environment variable in CI/CD or scripts. Token resolution order (highest priority first): 1. --token flag 2. STORAGE_TOKEN environment variable 3. ~/.config/storage/token file ## Environment Variables
VariableDescription
STORAGE_TOKENAPI key or session token
STORAGE_ENDPOINTAPI base URL (default: https://storage.liteio.dev)
NO_COLORSet to 1 to disable colored output
XDG_CONFIG_HOMEConfig directory base (default: ~/.config)
## Recipes ### Upload build artifacts from CI
bash export STORAGE_TOKEN=$SECRET_TOKEN storage put dist/app.js cdn/v1.2.0/ storage put dist/app.css cdn/v1.2.0/
### Stream a database backup
bash pg_dump mydb | storage put - backups/$(date +%Y-%m-%d).sql
### Share a file for 24 hours
bash storage share docs/report.pdf --ttl 86400
### List files as JSON and filter with jq
bash storage ls docs/ --json | jq '.[].name'
### Create a scoped deploy key
bash storage key create github-deploy --prefix cdn/ # Add the returned token as STORAGE_TOKEN in your CI secrets
### Download and pipe to another tool
bash storage cat config.json | jq '.database'
### Move files between folders
bash storage mv drafts/post.md published/post.md
### Bulk delete old files
bash storage ls archive/ --json | jq -r '.[].path' | xargs -I{} storage rm {}
### Check storage usage
bash storage stat --json | jq '{files: .count, mb: (.bytes / 1048576 | floor)}'
## Links - API Reference - Developer Guide - Pricing - CLI Documentation (human view)