
開発者向けのセキュアで一時的な機密情報共有。
開発者向けの安全で一時的な秘密情報共有ツール。
Slackに秘密情報を貼り付けるのはやめましょう。enseal は安全な方法を不安全な方法よりも高速にします — 暗号化された使い捨てチャネルを通じて、.env ファイルや秘密情報をワンコマンド、セットアップ不要で共有できます。```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
## インストール
### crates.io から```bash
cargo install enseal
git clone https://github.com/FlerAlex/enseal.git cd enseal cargo build --release
### Prebuilt binaries
[GitHub Releases](https://github.com/FlerAlex/enseal/releases) からダウンロード (Linux (x86_64, aarch64)、macOS (Intel, Apple Silicon)、Windows 対応)
## Quick Start
### Anonymous mode (zero setup)
ワンタイムコードを使用して機密情報を共有します。キーもアカウントも不要です。すぐに使用できます。```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
単一のシークレットでも動作します:```bash
echo "my-api-token" | enseal share --label "API key" Share code: 4-orbital-hammock
enseal receive 4-orbital-hammock my-api-token
両方の端末を同時に開く必要があります — 送信側は受信側が接続するまで待機します。
### 識別モード(鍵ベース、コードなし)
鍵の信頼関係が確立されたチーム向け。名前で暗号化、調整は不要。```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
機密情報は子プロセスのメモリ内にのみ存在します。子プロセスが終了すると、それらは消えます。
## 機能
### 3つの共有モード
**匿名モード**(デフォルト)— wormholeベース、セットアップ不要。人間が読めるコードだけで十分です。SPAKE2 相互認証により MITM 攻撃を防ぎます。```bash
enseal share .env # generates wormhole code
enseal receive 7-guitarist-revenge # uses code
--relayを使用すると、匿名モードはワームホールをバイパスし、代わりにensealリレートランスポートを使用します。両側で同じリレーを使用する必要があります:```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`)** — 送信者のみ。ローカルで暗号化し、[burnurl.dev](https://burnurl.dev) に投稿します。受信者がブラウザで開く自己破壊URLを返します。受信者側にCLIは不要です。```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)
受信者は任意のブラウザでURLを開きます — ensealのインストールは不要です。アップロード前にクライアントサイドで暗号化するには --passphrase を追加します(サーバーは暗号文のみを認識します):```bash
enseal share .env --upload --passphrase # prompts for passphrase
enseal share .env --upload --ttl 4 # 4-hour TTL (max 24)
APIアクセスには、burnurl.devのProまたはTeamプランが必要です。`BURNURL_API_KEY` をあなたのキーに設定してください。セルフホストインスタンスのベースURLをオーバーライドします: `BURNURL_URL=https://burnurl.internal`。
**アイデンティティモード** — 既知のチームメイトのための公開鍵暗号化。名前で暗号化します。```bash
enseal keys init # one-time setup
enseal share .env --to sarah # encrypt to sarah's public key
Identity mode は3つのトランスポートオプションをサポートしています:```bash
enseal share .env --to sarah
enseal share .env --to sarah --relay wss://relay.enseal.dev
enseal share .env --to sarah --output ./drop/
### 柔軟な入力
ensealは複数のソースからシークレットを受け付けます:```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} 参照は送信前に解決されるため、受信者は完全に展開された値を受け取ります:```env
DB_HOST=postgres.internal
DB_PORT=5432
DATABASE_URL=postgres://user:pass@${DB_HOST}:${DB_PORT}/myapp
Supports `${VAR:-default}` fallback syntax. Circular and forward references are detected and rejected. Use `--no-interpolate` to send raw `${VAR}` syntax.
### フィルタリング
送信する変数を制御します:```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
出力は送信された内容に適応します:```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
シークレットを受け取り、子プロセスに直接環境変数として注入します。シークレットはファイルシステムに触れることはありません。```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
# from encrypted file drop
enseal inject ./staging.env.age -- python manage.py runserver
--listen を使用すると、受信側はリレーに接続して待機します。送信側は enseal share .env --to alex --relay wss://relay.enseal.dev でプッシュします。コードの交換は不要で、調整も一切必要ありません。
共有だけでなく、enseal は完全な .env セキュリティツールキットです。```bash
enseal check error: missing from .env (present in .env.example): JWT_SECRET, REDIS_URL
enseal diff .env.development .env.staging
enseal redact .env DATABASE_URL= API_KEY= PORT=
enseal validate .env error: missing required: JWT_SECRET error: PORT value "abc" is not an integer ok: 11/14 variables passed validation
enseal template .env
### 保存時暗号化
age暗号化を使用して、安全なgit保存のために`.env`ファイルを暗号化します:```bash
# whole-file encryption
enseal encrypt .env
ok: .env encrypted in-place (14 variables, age key)
enseal decrypt .env