
Condivisione sicura ed effimera di segreti per sviluppatori.
Condivisione sicura e effimera di segreti per sviluppatori.
Smetti di incollare segreti su Slack. enseal rende il percorso sicuro più veloce di quello insicuro — condividi file .env e segreti attraverso canali crittografati e monouso con un solo comando e zero configurazione.```bash
$ enseal share .env Share code: 7-guitarist-revenge Secrets: 14 variables (staging) Expires: on first receive
$ enseal receive 7-guitarist-revenge ok: 14 secrets written to .env
## Installazione
### Da crates.io```bash
cargo install enseal
git clone https://github.com/FlerAlex/enseal.git cd enseal cargo build --release
### Binari precompilati
Scarica da [GitHub Releases](https://github.com/FlerAlex/enseal/releases) per Linux (x86_64, aarch64), macOS (Intel, Apple Silicon) e Windows.
## Avvio rapido
### Modalità anonima (nessuna configurazione)
Condividi segreti usando un codice monouso. Nessuna chiave, nessun account — funziona immediatamente.```bash
# terminal 1 (sender)
enseal share .env
Share code: 7-guitarist-revenge
Secrets: 14 variables
Expires: on first receive
# terminal 2 (recipient) — enter the code
enseal receive 7-guitarist-revenge
ok: 14 secrets written to .env
Funziona anche con segreti singoli:```bash
echo "my-api-token" | enseal share --label "API key" Share code: 4-orbital-hammock
enseal receive 4-orbital-hammock my-api-token
Entrambi i terminali devono essere aperti contemporaneamente — il mittente attende che il destinatario si connetta.
### Modalità identità (basato su chiavi, senza codici)
Per team con fiducia nelle chiavi già stabilita. Crittografa a un nome, nessuna coordinazione necessaria.```bash
# one-time setup
enseal keys init
enseal keys export > my-key.pub # share this with teammates
enseal keys import teammate-key.pub # import theirs
# sender encrypts to recipient by name
enseal share .env --to sarah
# or push through the public relay (no codes at all)
enseal share .env --to sarah --relay wss://relay.enseal.dev
# or produce an encrypted file (no network)
enseal share .env --to sarah --output ./drop/
enseal inject 7-guitarist-revenge -- npm start
enseal inject --listen --relay wss://relay.enseal.dev -- docker compose up
enseal inject ./staging.env.age -- python manage.py runserver
I segreti esistono solo nella memoria del processo figlio. Quando esce, scompaiono.
## Caratteristiche
### Tre modalità di condivisione
**Modalità anonima** (predefinita) — basata su wormhole, configurazione zero. Tutto ciò che serve è un codice leggibile dall'uomo. L'autenticazione reciproca SPAKE2 previene gli attacchi MITM.```bash
enseal share .env # generates wormhole code
enseal receive 7-guitarist-revenge # uses code
Con --relay, la modalità anonima bypassa wormhole e utilizza invece il relay transport enseal. Entrambi i lati devono utilizzare lo stesso relay:```bash
enseal share .env --relay ws://relay.internal:4443 # generates channel code
enseal receive 3421-amber-frost --relay ws://relay.internal:4443
**Caricamento asincrono (`--upload`)** — solo mittente. Cripta localmente e pubblica su [burnurl.dev](https://burnurl.dev), restituendo un URL autodistruggente che il destinatario apre in un browser. Nessuna CLI richiesta lato destinatario.```bash
enseal share .env --upload
# Secret URL: https://burnurl.dev/s/a3f9c2e1...
# Expires: 2026-03-08 19:42:00 UTC (24h)
# Reads: 1 (self-destructs on first open)
Il destinatario apre l'URL in qualsiasi browser — non è necessaria l'installazione di enseal. Aggiungi --passphrase per crittografare lato client prima del caricamento (il server vede solo testo cifrato):```bash
enseal share .env --upload --passphrase # prompts for passphrase
enseal share .env --upload --ttl 4 # 4-hour TTL (max 24)
L'accesso API richiede un piano Pro o Team su burnurl.dev. Imposta `BURNURL_API_KEY` con la tua chiave. Sostituisci l'URL base per istanze self-hosted: `BURNURL_URL=https://burnurl.internal`.
**Modalità identità** — crittografia a chiave pubblica per membri del team conosciuti. Crittografa verso un nome.```bash
enseal keys init # one-time setup
enseal share .env --to sarah # encrypt to sarah's public key
Identity mode supporta tre opzioni di trasporto:```bash
enseal share .env --to sarah
enseal share .env --to sarah --relay wss://relay.enseal.dev
enseal share .env --to sarah --output ./drop/
### Input Flessibile
enseal accetta segreti da più fonti:```bash
# .env file (default)
enseal share .env
enseal share staging.env
# environment profile
enseal share --env staging # resolves to .env.staging
# pipe from stdin
echo "sk_live_abc123" | enseal share
cat secrets.env | enseal share
pass show stripe/key | enseal share --to sarah
# inline (careful — visible in shell history)
enseal share --secret "API_KEY=sk_live_abc123"
# wrap raw string as KEY=VALUE
echo "sk_live_abc123" | enseal share --as STRIPE_KEY
${VAR} I riferimenti vengono risolti prima dell'invio, in modo che i destinatari ricevano valori completamente espansi:```env
DB_HOST=postgres.internal
DB_PORT=5432
DATABASE_URL=postgres://user:pass@${DB_HOST}:${DB_PORT}/myapp
Supporta la sintassi di fallback `${VAR:-default}`. I riferimenti circolari e in avanti vengono rilevati e respinti. Usa `--no-interpolate` per inviare la sintassi grezza `${VAR}`.
### Filtraggio
Controlla quali variabili vengono inviate:```bash
# exclude public/non-secret vars
enseal share .env --exclude "^PUBLIC_|^NEXT_PUBLIC_"
# send only matching vars
enseal share .env --include "^DB_|^API_"
# skip .env parsing entirely (send raw file)
enseal share .env --no-filter
L'output si adatta a ciò che è stato inviato:```bash
enseal receive CODE ok: 14 secrets written to .env
enseal receive CODE --output staging.env
enseal receive CODE sk_live_abc123
enseal receive CODE --clipboard ok: copied to clipboard
enseal receive CODE --no-write
enseal receive ./staging.env.age ok: signature verified, file decrypted ok: 14 secrets written to .env
### Inject
Riceve segreti e li inietta direttamente come variabili d'ambiente in un processo figlio. I segreti non toccano mai il filesystem.```bash
# anonymous mode: inject via wormhole code
enseal inject 7-guitarist-revenge -- npm start
# identity mode: listen for incoming transfer on relay
enseal inject --listen --relay wss://relay.enseal.dev -- docker compose up