stash - encrypted pastebin in go
client-side AES-256-GCM encryption. key never leaves your browser.
go run ./cmd/stash-srv
flags: -addr :8080 (listen address), -db ./stash.db (sqlite path)
# create paste from stdin
echo "secret" | go run ./cmd/stash
# fetch paste
go run ./cmd/stash get <url>
# delete paste
go run ./cmd/stash delete <delete-url>
flags: -server http://localhost:8080, -ttl 3600 (seconds)
config file: ~/.stashrc
server=https://stash.example.com
ttl=86400
- browser/cli generates AES-256 key
- encrypts content locally
- sends ciphertext to server
- server returns paste ID
- full URL is
https://server/p/{id}#v1:{key} - key in fragment never sent to server
pastes auto-expire. delete links use a token hashed before storage so server can't delete without the original token.
