The same exchange, without leaving the shell.
The client encrypts on your machine, exactly as the page does in a browser: what reaches the server is a public key and a block of bytes it cannot read.
Get it
You can grab the latest binaries for Linux and macOS from the latest release.
The client needs libcrypto and libcurl, which your system likely already has. If not, install them via your package manager (e.g., apt install libcurl4 libssl3 on Debian/Ubuntu, or brew install openssl curl on macOS).
Build it from source
git clone https://github.com/trikko/neverstored cd neverstored/cli && dub build --build=release
Hand a secret over
neverstored send --file api-key.txt
It prints a link and a code to scan, then waits. Send the link however you like and keep the terminal open: the secret is still on your machine. When the other side arrives you both check four symbols, and only then does it travel.
Ask for one
neverstored ask > key.txt
Same thing the other way round: they write, you receive. What arrives goes to standard output and nothing else does, so redirecting it works as it looks.
Open a link you were given
neverstored open https://neverstored.com/r/…
You do not have to say which direction it is: the room knows. If it turns out you are the one holding the secret, it will ask for it.
Where the secret comes from
From --file, from standard input when something is piped in, or typed at
the terminal without echo. There is deliberately no option to pass it as an argument:
that would put it in the process list and in your shell history.
Up to 8 KB
Enough for a password, a key or a short config, and not enough to move files. Past that the client stops before anything leaves your machine.
The question is always asked
The four symbols have to be confirmed by a person, every time. There is no flag to skip it, because skipping it removes the only thing standing between you and someone in the middle. With no terminal the answer is read from standard input; if nothing answers, the exchange stops. Silence is never a yes.
Settings
NEVERSTORED_URL=https://your-own-instance # the default is neverstored.com --wait 60 give up after a minute of waiting --dense draw the code half as tall --no-qr do not draw it at all
Exit codes
0 sent, or received 1 the symbols were refused, or someone interfered 2 the room is gone, expired, or nobody came 3 the service could not be reached 4 wrong usage
It talks to the same rooms the pages use, so a link made in a terminal opens in a browser and the other way round.