Request passwords, API keys and logins through a one-time, end-to-end encrypted link. The server never sees the plaintext.
Three ways Vault replaces the unsafe handoffs you do every week.
Generate a one-time request link. The other person encrypts the secret to a keypair that lives only in your browser. You receive ciphertext, never a password by email.
Encrypt in your browser, share a self-destructing link. The first read hard-deletes the secret server-side. No copy lingers in inboxes or chat history.
Every line of crypto is AGPL-3.0 on a public mirror. The status page exposes the deployed commit SHA and the SHA-256 of the browser bundle you can recompute yourself.
Your coding agent needs an API key or a database password? With vault-ask you enter the value in your browser, and it goes only to the one command you saw. Via CLI or MCP server, bound to its purpose and masked in the output, so it never lands in the chat or the session log.
Encryption and decryption happen in your browser via the native WebCrypto API. The key lives in the URL fragment and never reaches us.
Structurally there is no plaintext for us to leak, subpoena or lose.
The request flow is what makes Vault different. Stop asking clients to email or Slack you their passwords.
Your browser generates an X25519 keypair locally. The private key never leaves your device.
Send the link to the person who has the credentials. Email, chat, or even paper - the server never sees the key.
Their browser encrypts the secret against your public key and uploads only ciphertext.
Open your retrieval link. Your browser decrypts locally. Server-side plaintext exposure: zero.
Create the request link, the other person submits, you retrieve it once. Recorded on vault.erseni.com in one take; the interface in the clip is German.
Three steps. No account. No plaintext on the server.
The same flow that protects a one-off password protects every recurring credential handoff in your day.
Send one request link instead of chasing the client across three email threads. Nothing lands in your inbox in plaintext.
Hand over a Stripe key, GitHub PAT or AWS credential without leaving a copy in Slack or git history.
Customers send 2FA backup codes, photo IDs or licence keys through a one-time link instead of a ticket.
Collect logins for legacy systems your client cannot wrap in SSO. Encrypted at their browser, decrypted at yours.
Hand a colleague a short-lived production credential during an incident. The link expires, no cleanup forgotten.
Stop pasting passwords in shared docs. One-time link, hard-deleted after the first read, audit-friendly.
The first successful read hard-deletes the record server-side before the response even leaves the machine. No copy is left in inboxes or chat history, and server backups hold at most unreadable ciphertext until they are overwritten after 7 days.
Open the same link again and all you get is "expired".
Six properties we hold ourselves to. Each one is reviewable in the public source.
The server only ever stores your secret as ciphertext. The decryption key lives in the URL fragment and never reaches us.
AES-GCM-256 and X25519 run via the browser-native WebCrypto API. No third-party crypto library, no plaintext on the wire.
Browsers never send the part after # in HTTP requests. We put the key there on purpose, so the server is structurally unable to see it.
Every line that runs your secret is AGPL-3.0-licensed and pushed to a public GitLab mirror. Read it, fork it, self-host it.
The status page exposes application commit, component commit, mirror commit and the SHA-256 of the bundle delivered to your browser.
We list what this design does not protect against, including JavaScript-delivery risk and metadata leakage. No absolute-security claims.
Based on public documentation and source code at the time of publication. Different tools optimise for different threat models. This comparison focuses on browser-based, one-time credential handoff.
One boundary we name ourselves: an optional note you attach to a secret in the dashboard is stored in plain text. The secret itself we can never read.
Each claim is verifiable against the linked competitor source. If a value is out of date, open an issue on the public mirror and we will correct the table.
OneTimeSecret (GitHub) Server-side encryption with a server-held key; the optional passphrase is not the default path. Incoming Secrets (version 0.26.0, released 19 July 2026) is a drop-off page on a DNS-verified custom domain, so it is not a targeted request to a specific person, and it requires an account on the collecting side; sending works without one. Open source and self-hostable. For the server-side encryption we follow the project's own description; we have not verified it against its source code.
Password Pusher (GitHub) Server-side encryption with a server-held key; not zero-knowledge by design. Offers an inbound Requests feature, but uploads use the same server-held key, so the request flow is not zero-knowledge. Apache-2.0 licensed, self-hostable, no account required.
PrivateBin (GitHub) In-browser AES-GCM encryption with key in the URL fragment, server stores ciphertext only. Zlib license, self-hostable, no account.
Bitwarden Send FAQ Server-side encrypted with an account-derived key; recipients use a one-time link. The Send feature requires a sender account. Server is AGPL-3.0; the official UI client and apps ship under a custom licence with proprietary components, hence the "partial" mark on open-source.
Trust is earned by being verifiable. The backend and the browser crypto are published under the AGPL-3.0 license.
Source: gitlab.erseni.net/open-source/secrets-component
Threat model: docs/architecture.md
Current build: status page lists the deployed commit SHA. Compare against the public mirror to verify.
Free to use, with no limit on how much you send. No account. No tracking. No ads.
Business is available now, and you can invite team members. Questions? Email hello@erseni.com.
No account, no plaintext, no trace. End-to-end encrypted in your browser and destroyed on first read.