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:latest13
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.
Scriptable expiry & limits
Set expiry time and download count from the command line - no need to touch the web UI for automated shares.
A documented REST API
Every instance exposes the same HTTP API the web app and CLI use, for building your own integrations on top.
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.
Features
Everything a private share needs
One tool for encrypting, sharing, and expiring files and notes, without asking you to trust the server.
Access
Use it however fits your workflow
The same instance, reachable from the browser, the terminal, or your own scripts.
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:3000FAQ
Frequently asked questions
From the blog
July 10, 2026
Why We Built SkySend Around Zero-Knowledge Encryption
Every file and note shared through SkySend is encrypted before it leaves your browser - here's why that's a different guarantee than 'encrypted at rest'.
July 1, 2026
Getting Started with SkySend in 5 Minutes
Spin up SkySend with a single docker-compose file and share your first end-to-end encrypted file.
Share files and notes without giving up your privacy
Self-hosted, open source, and yours to run - free of charge, forever.