Skip to content

CLI Client ​

SkySend includes a command-line client for uploading and downloading files with the same end-to-end encryption as the web interface. It is distributed as a single binary - no runtime dependencies required.

Overview ​

The CLI client (skysend) lets you:

  • Upload single or multiple files with E2E encryption
  • Download and decrypt files from a share URL
  • Create encrypted notes (text, password, code, markdown, SSH keys)
  • View encrypted notes from the terminal
  • Delete uploads and notes using the owner token
  • Authenticate with OIDC/SSO when required by the server (auth login, auth logout, auth status)
  • Self-update to the latest version from GitHub Releases
  • Interactive mode with menu-driven TUI - displays server config, limits, and quota

All cryptographic operations use the same @skysend/crypto library as the web frontend - AES-256-GCM streaming encryption, HKDF-SHA256 key derivation, and Argon2id password protection.

Supported Platforms ​

PlatformArchitectureBinary Name
Linuxx86_64 (AMD64)skysend-linux-x64
LinuxARM64 (aarch64)skysend-linux-arm64
macOSIntel (x86_64)skysend-macos-x64
macOSApple Silicon (ARM64)skysend-macos-arm64
Windowsx86_64 (AMD64)skysend-windows-x64.exe

Binaries are compiled with Bun and published as GitHub Release assets.

Installation ​

Linux / macOS ​

The install script automatically detects your OS and architecture, downloads the correct binary, verifies the SHA-256 checksum, and installs it to /usr/local/bin:

bash
curl -fsSL https://skysend.app/install.sh | sh

To install a specific version or to a custom directory:

bash
VERSION=v2.11.3 curl -fsSL https://skysend.app/install.sh | sh
INSTALL_DIR=$HOME/.local/bin curl -fsSL https://skysend.app/install.sh | sh

Windows ​

Run in PowerShell:

powershell
irm https://skysend.app/install.ps1 | iex

This installs skysend.exe to ~/.skysend/bin and adds it to your user PATH. Restart your terminal for PATH changes to take effect.

To install a specific version:

powershell
$env:VERSION="v2.11.3"; irm https://skysend.app/install.ps1 | iex

Manual Download ​

Download the binary for your platform from the GitHub Releases page, make it executable, and move it to a directory in your PATH:

bash
chmod +x skysend-linux-x64
sudo mv skysend-linux-x64 /usr/local/bin/skysend

Configuration ​

Before uploading, set your default SkySend server:

bash
skysend config set-server https://your-instance.com

The config is stored at ~/.config/skysend/config.json (or $XDG_CONFIG_HOME/skysend/config.json).

You can also set the server per-command with --server or via the SKYSEND_SERVER environment variable.

Priority order:

  1. --server flag (highest)
  2. SKYSEND_SERVER environment variable
  3. Config file (~/.config/skysend/config.json)

View Config ​

bash
skysend config

WebSocket Transport ​

By default, the CLI uses WebSocket upload transport (if the server supports it) with automatic fallback to HTTP chunked upload. You can disable WebSocket in two ways:

  • CLI flag: skysend upload ./file.pdf --no-ws
  • TUI Settings: Toggle "WebSocket upload" in the interactive Settings menu
  • Config file: Set "websocket": false in ~/.config/skysend/config.json

Reset Config ​

bash
skysend config reset

Updating ​

The CLI can update itself to the latest version:

bash
# Check for updates without installing
skysend update --check

# Download and install the latest version
skysend update

The update command:

  1. Checks the latest version from GitHub Releases
  2. Downloads the correct binary for your platform
  3. Verifies the SHA-256 checksum
  4. Atomically replaces the running binary

TIP

On Linux/macOS, you may need sudo if the binary is installed in /usr/local/bin. Alternatively, re-run the install script.

Quick Reference ​

CommandDescription
skysendInteractive menu-driven mode (recommended)
skysend upload <files...>Upload files with E2E encryption
skysend download <url>Download and decrypt a file
skysend note <text>Create an encrypted note
skysend note:view <url>View an encrypted note
skysend lsList upload and note history
skysend delete <url> <ownerToken>Delete an upload or note
skysend configShow current configuration
skysend config set-server <url>Set default server
skysend config resetReset configuration
skysend updateSelf-update to latest version
skysend --versionShow current version
skysend --helpShow help

See Commands for detailed usage of each command.