Vial is a small Rust project for end-to-end encrypted secret sharing.
Secrets are encrypted on the client, sent to a server as ciphertext, and decrypted only by the recipient. The server never knows the decryption key or the contents of a secret.
The primary tool is a CLI. A web UI is provided as an optional way to view secrets.
- Create encrypted secrets (text or files) using a password or a random key
- Upload encrypted payloads to a server
- Fetch and decrypt secrets locally
- Enforce expiration and view limits on the server
- Self-hostable server or reusable server library
| Crate | Description |
|---|---|
| vial-cli | CLI binary (secret creation & consumption) |
| vial-core | Cryptography primitives (encryption / decryption) |
| vial-shared | Shared request / response types |
| vial-srv | Framework-agnostic server logic/library (DB, rules, limits) |
| vial-server | Actix-web server binary using srv-lib |
1. Run from Source Code:
- Clone the repository
git clone https://github.com/TheRustyPickle/Vial - To run the CLI with Cargo
cargo run --release --bin vial - To run the server with Cargo
cargo run --release --bin vial-server
2. Run the latest Release:
- Download the latest executable from Releases.
- Unzip the executable and run via terminal
3. Install using Cargo:
- To install the CLI
cargo install vial-cliand runvial --help - To install the server
cargo install vial-server. See here to find the env variable list for the server
A web UI is available with source code and is used as the default URL in the CLI. The site uses the same srv-lib and can only perform decryption on the client.
A demo secret can be viewed here with the password password
This project:
- Has not been security audited
- Comes with no guarantees or warranties
Use at your own risk. Do not rely on it for high-value or high-risk secrets.