A self-hosted, one-time encrypted web app for sharing passwords and secrets without a database setup.
Luzifer/ots
A one-time secret sharing web app that encrypts secrets with AES-256 in the browser and deletes them on first read.
Open-source alternative to:OneTimeSecret
- Stars
- 809
- Forks
- 99
- Open issues
- 12
- Last commit
- yesterday
What is it?
OTS is a one-time secret sharing platform. A secret is encrypted with symmetric 256-bit AES in the browser before it is sent to the server, and the server stores only the ciphertext. The generated URL contains the secret ID and the decryption password, and the password is kept in the URL fragment so it is never sent to the server.
The secret is deleted immediately after its first read, so it can only be viewed once. The server can store secrets in memory or in Redis, and an optional expiry can be set in seconds.
Besides the web UI, a command-line client named ots-cli can create and fetch secrets from scripts, pipe content through STDIN, attach files, and authenticate against a custom instance with basic auth or custom headers.
Key features
- 01Encrypts secrets with AES-256 in the browser before upload
- 02The server never receives the plaintext secret or the password
- 03Secrets are deleted on first read
- 04Supports in-memory and Redis storage backends with optional expiry
- 05ots-cli enables creating and fetching secrets from scripts
Use cases
- Sending passwords or API keys to a colleague without leaving them in chat logs
- Sharing one-off credentials that should expire after a single view
- Automating secret handoff in CI or shell scripts with ots-cli
- Self-hosting a private secret-sharing service for an internal team
Quick start
- 1
Pull the Docker image from ghcr.io/luzifer/ots
- 2
Start the server and open http://localhost:3000/
Things to know
- The README lists only the in-memory and Redis storage backends, so persistent storage requires Redis.
- Using the public ots.fyi instance means trusting its operator, so self-hosting or client-side encryption is advised for sensitive data.
In collections
Topics
FAQ
- What is ots?
- A one-time secret sharing web app that encrypts secrets with AES-256 in the browser and deletes them on first read. OTS is a one-time secret sharing platform. A secret is encrypted with symmetric 256-bit AES in the browser before it is sent to the server, and the server stores only the ciphertext. The generated URL contains the secret ID and the decryption password, and the password is kept in the URL fragment so it is never sent to the server.
- Is ots free to use? What license does it have?
- ots is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is ots still maintained?
- Actively maintained. The last commit to ots was on Nov 6, 2026.
- What can I use ots for?
- Sending passwords or API keys to a colleague without leaving them in chat logs Sharing one-off credentials that should expire after a single view Automating secret handoff in CI or shell scripts with ots-cli Self-hosting a private secret-sharing service for an internal team
- How do I install ots?
- Pull the Docker image from ghcr.io/luzifer/ots Start the server and open http://localhost:3000/
- Where can I get ots?
- The source code and installation instructions are on GitHub: https://github.com/Luzifer/ots
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A self-hosted service for sharing one-time secret messages and files that delete themselves after being read, backed by HashiCorp Vault.
Self-hosted, zero-knowledge sharing of one-time passwords, API keys, text and encrypted files via self-destructing links.
Open source web app for sharing passwords, notes, files and URLs through one-time links that expire by views or time, with audit logs.
Ansible scripts that deploy a personal WireGuard and IPsec VPN server to your own cloud account in minutes.
A curated, categorized list of privacy- and security-focused software and online services, from password managers to operating systems.