
Sicherer, ephemerer Geheimnisaustausch für Entwickler.
Sicheres, flüchtiges Teilen von Geheimnissen für Entwickler.
Hör auf, Geheimnisse in Slack zu kopieren. enseal macht den sicheren Weg schneller als den unsicheren — teile .env-Dateien und Geheimnisse über verschlüsselte, einmalig nutzbare Kanäle mit einem Befehl und ohne Einrichtung.```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
### Von crates.io```bash
cargo install enseal
git clone https://github.com/FlerAlex/enseal.git cd enseal cargo build --release
### Vorgefertigte Binärdateien
Herunterladen von [GitHub Releases](https://github.com/FlerAlex/enseal/releases) für Linux (x86_64, aarch64), macOS (Intel, Apple Silicon) und Windows.
## Schnellstart
### Anonymer Modus (keine Einrichtung)
Teilen Sie Geheimnisse mit einem Einmalcode. Keine Schlüssel, keine Konten – funktioniert sofort.```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
Funktioniert auch mit einzelnen Geheimnissen:```bash
echo "my-api-token" | enseal share --label "API key" Share code: 4-orbital-hammock
enseal receive 4-orbital-hammock my-api-token
Beide Terminals müssen gleichzeitig geöffnet sein — der Sender wartet, bis der Empfänger eine Verbindung herstellt.
### Identitätsmodus (schlüsselbasiert, keine Codes)
Für Teams mit etabliertem Schlüsselvertrauen. Verschlüsseln Sie auf einen Namen, keine Koordination erforderlich.```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
Geheimnisse existieren nur im Speicher des untergeordneten Prozesses. Wenn er endet, sind sie verschwunden.
## Funktionen
### Drei Freigabemodi
**Anonymer Modus** (Standard) — wormhole-basiert, keine Einrichtung erforderlich. Ein lesbarer Code ist alles, was Sie brauchen. Gegenseitige SPAKE2-Authentifizierung verhindert MITM-Angriffe.```bash
enseal share .env # generates wormhole code
enseal receive 7-guitarist-revenge # uses code
Mit --relay umgeht der anonyme Modus das Wormhole und verwendet stattdessen den enseal-Relay-Transport. Beide Seiten müssen dasselbe Relay verwenden:```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`)** — nur für den Sender. Verschlüsselt lokal und veröffentlicht auf [burnurl.dev](https://burnurl.dev) und gibt eine selbstzerstörende URL zurück, die der Empfänger in einem Browser öffnet. Auf der Empfängerseite ist keine CLI erforderlich.```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)
Der Empfänger öffnet die URL in einem beliebigen Browser – keine enseal-Installation erforderlich. Fügen Sie --passphrase hinzu, um vor dem Hochladen clientseitig zu verschlüsseln (der Server sieht nur den Chiffretext):```bash
enseal share .env --upload --passphrase # prompts for passphrase
enseal share .env --upload --ttl 4 # 4-hour TTL (max 24)
API-Zugriff erfordert einen Pro- oder Team-Tarif auf burnurl.dev. Setzen Sie `BURNURL_API_KEY` auf Ihren Schlüssel. Überschreiben Sie die Basis-URL für selbst gehostete Instanzen: `BURNURL_URL=https://burnurl.internal`.
**Identitätsmodus** — Public-Key-Verschlüsselung für bekannte Teammitglieder. Verschlüsseln an einen Namen.```bash
enseal keys init # one-time setup
enseal share .env --to sarah # encrypt to sarah's public key
Der Identitätsmodus unterstützt drei Transportoptionen:```bash
enseal share .env --to sarah
enseal share .env --to sarah --relay wss://relay.enseal.dev
enseal share .env --to sarah --output ./drop/
### Flexible Eingabe
enseal akzeptiert Geheimnisse aus mehreren Quellen:```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}-Referenzen werden vor dem Senden aufgelöst, sodass die Empfänger vollständig erweiterte Werte erhalten:```env
DB_HOST=postgres.internal
DB_PORT=5432
DATABASE_URL=postgres://user:pass@${DB_HOST}:${DB_PORT}/myapp
Unterstützt die Fallback-Syntax `${VAR:-default}`. Zirkuläre und Vorwärtsreferenzen werden erkannt und zurückgewiesen. Verwenden Sie `--no-interpolate`, um die rohe `${VAR}`-Syntax zu senden.
### Filtern
Steuern Sie, welche Variablen gesendet werden:```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
Die Ausgabe passt sich an das Gesendete an:```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
### Injizieren
Empfange Geheimnisse und injiziere sie direkt als Umgebungsvariablen in einen Kindprozess. Geheimnisse berühren niemals das Dateisystem.```bash
# anonymous mode: inject via wormhole code
enseal inject 7-guitarist-revenge -- npm start