
Partage de secrets sécurisé et éphémère pour développeurs.
Partage sécurisé et éphémère de secrets pour développeurs.
Arrêtez de coller des secrets dans Slack. enseal rend la voie sécurisée plus rapide que la voie non sécurisée — partagez des fichiers .env et des secrets via des canaux cryptés à usage unique en une seule commande et sans configuration.```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
## Installation
### Depuis crates.io```bash
cargo install enseal
git clone https://github.com/FlerAlex/enseal.git cd enseal cargo build --release
### Binaires préconstruits
Téléchargez depuis [GitHub Releases](https://github.com/FlerAlex/enseal/releases) pour Linux (x86_64, aarch64), macOS (Intel, Apple Silicon), et Windows.
## Démarrage rapide
### Mode anonyme (zéro configuration)
Partagez des secrets en utilisant un code à usage unique. Pas de clés, pas de comptes — fonctionne immédiatement.```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
Fonctionne aussi avec des secrets uniques :```bash
echo "my-api-token" | enseal share --label "API key" Share code: 4-orbital-hammock
enseal receive 4-orbital-hammock my-api-token
Les deux terminaux doivent être ouverts en même temps — l'expéditeur attend que le destinataire se connecte.
### Mode d'identité (basé sur des clés, sans codes)
Pour les équipes ayant une confiance établie dans les clés. Chiffrez vers un nom, aucune coordination nécessaire.```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
Les secrets n'existent que dans la mémoire du processus enfant. Lorsqu'il se termine, ils disparaissent.
## Fonctionnalités
### Trois modes de partage
**Mode anonyme** (par défaut) — basé sur un wormhole, aucune configuration. Un code lisible par l'homme est tout ce dont vous avez besoin. L'authentification mutuelle SPAKE2 empêche les attaques MITM.```bash
enseal share .env # generates wormhole code
enseal receive 7-guitarist-revenge # uses code
Avec --relay, le mode anonyme contourne le wormhole et utilise le transport de relais enseal à la place. Les deux côtés doivent utiliser le même relais :```bash
enseal share .env --relay ws://relay.internal:4443 # generates channel code
enseal receive 3421-amber-frost --relay ws://relay.internal:4443
**Async upload (`--upload`)** — réservé à l'expéditeur. Chiffre localement et publie sur [burnurl.dev](https://burnurl.dev), renvoyant une URL autodestructible que le destinataire ouvre dans un navigateur. Aucune CLI requise du côté destinataire.```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)
Le destinataire ouvre l'URL dans n'importe quel navigateur — aucune installation d'enseal nécessaire. Ajoutez --passphrase pour chiffrer côté client avant le téléversement (le serveur ne voit que le texte chiffré) :```bash
enseal share .env --upload --passphrase # prompts for passphrase
enseal share .env --upload --ttl 4 # 4-hour TTL (max 24)
L'accès à l'API nécessite un plan Pro ou Team sur burnurl.dev. Définissez `BURNURL_API_KEY` avec votre clé. Remplacez l'URL de base pour les instances auto-hébergées : `BURNURL_URL=https://burnurl.internal`.
**Identity mode** — chiffrement à clé publique pour les coéquipiers connus. Chiffrer à un nom.```bash
enseal keys init # one-time setup
enseal share .env --to sarah # encrypt to sarah's public key
Le mode identité prend en charge trois options de transport :```bash
enseal share .env --to sarah
enseal share .env --to sarah --relay wss://relay.enseal.dev
enseal share .env --to sarah --output ./drop/
### Entrée flexible
enseal accepte les secrets de multiples sources :```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
Les références ${VAR} sont résolues avant l'envoi afin que les destinataires reçoivent des valeurs entièrement développées :```env
DB_HOST=postgres.internal
DB_PORT=5432
DATABASE_URL=postgres://user:pass@${DB_HOST}:${DB_PORT}/myapp
Prend en charge la syntaxe de secours `${VAR:-default}`. Les références circulaires et anticipées sont détectées et rejetées. Utilisez `--no-interpolate` pour envoyer la syntaxe brute `${VAR}`.
### Filtrage
Contrôlez quelles variables sont envoyées :```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
La sortie s'adapte à ce qui a été envoyé :```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
Recevoir des secrets et les injecter directement en tant que variables d'environnement dans un processus fils. Les secrets ne touchent jamais le système de fichiers.```bash
# anonymous mode: inject via wormhole code
enseal inject 7-guitarist-revenge -- npm start