SkySendSkySend

Share files and notes, without anyone reading them.

Self-hostable, end-to-end encrypted file and note sharing. No accounts, no tracking - the server never sees anything but ciphertext.

$ docker run -d \
-p 3000:3000 \
-e BASE_URL=https://your-domain.com \
-v ./data:/data \
-v ./uploads:/uploads \
skyfay/skysend:latest

13

Languages

2

Storage Backends

0

Accounts Required

AGPL-3.0

Open Source

Zero-knowledge

The server never sees your data

Every file and note is encrypted before it leaves your device. Even the person running the SkySend instance can't read what's shared through it.

Encrypted before it leaves your browser

Files and notes are encrypted client-side with AES-256-GCM before upload - the server only ever receives ciphertext.

The key never touches the server

The decryption key lives only in the share link's URL fragment, which browsers never send to any server by design.

Open, standard encryption

AES-256-GCM and Argon2id, documented standards implemented in every major language - not a custom cipher tied to SkySend.

Server Instances

Public SkySend instances

SkySend is self-hostable - here are community and official instances you can use right away, with their live limits.

Automation

Fits into how you already work

A CLI and TUI client with the same encryption guarantees as the browser, built to be scripted - not just clicked through.

Cross-platform CLI

Upload and download with the same end-to-end encryption as the web app, straight from your terminal or CI pipeline.

skysend uploadskysend download

Scriptable expiry & limits

Set expiry time and download count from the command line - no need to touch the web UI for automated shares.

--expires--downloads

A documented REST API

Every instance exposes the same HTTP API the web app and CLI use, for building your own integrations on top.

REST API

Built for CI/CD

Script a share of build artifacts or logs as part of a pipeline, then drop the link wherever it's needed.

GitHub ActionsGitLab CI

Features

Everything a private share needs

One tool for encrypting, sharing, and expiring files and notes, without asking you to trust the server.

Zero-Knowledge Encryption
Every file and note is encrypted client-side with AES-256-GCM before it ever leaves the browser - the server only ever stores ciphertext and never sees the key.
Files & Notes
Share files, plain text, passwords, code snippets, and SSH keys, all with the same end-to-end encryption and expiry model.
Self-Destructing Links
Configurable expiry times and download/view limits, so a share disappears automatically after it's no longer needed.
Password Protection
Add an optional password on top of the encryption key for an extra layer of access control on sensitive shares.
No Accounts, No Tracking
Open the site and share - no registration, no login, and no analytics tracking who uploaded or downloaded what.
Storage Flexibility
Local filesystem or any S3-compatible object storage (AWS S3, Cloudflare R2, MinIO, and more) as the storage backend.
CLI & TUI Client
A cross-platform CLI and terminal UI for uploading and downloading with the same end-to-end encryption as the web app.
Progressive Web App
Install SkySend as a PWA for a native-feeling, installable experience directly from the browser.
Designed for Simplicity
A minimalist interface with sensible defaults - deep configurability for self-hosters, nothing to learn for the person just opening a link.

Access

Use it however fits your workflow

The same instance, reachable from the browser, the terminal, or your own scripts.

Web UIDrag, drop, and share directly from the browser - no installation required.
CLI & TUIScript uploads and downloads, or use the interactive terminal UI, with the same E2E encryption.
REST APIA documented HTTP API behind every instance, for building your own integrations.
DockerA single multi-arch image (amd64/arm64) to self-host your own instance in minutes.

Quick start

Running in under five minutes

Save this as docker-compose.yml, set your public URL, and run docker-compose up -d.

# docker-compose.yml
services:
skysend:
image: skyfay/skysend:latest
container_name: skysend
restart: always
ports:
- "3000:3000"
volumes:
- ./data:/data
- ./uploads:/uploads
environment:
- BASE_URL=http://localhost:3000

Read the full installation guide

FAQ

Frequently asked questions

From the blog

View all posts →

Share files and notes without giving up your privacy

Self-hosted, open source, and yours to run - free of charge, forever.