
Compartilhamento seguro e efêmero de segredos para desenvolvedores.
Compartilhamento seguro e efêmero de segredos para desenvolvedores.
Pare de colar segredos no Slack. enseal torna o caminho seguro mais rápido que o inseguro — compartilhe arquivos .env e segredos por meio de canais criptografados e de uso único com um comando e zero configuração.```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
## Instalação
### De crates.io```bash
cargo install enseal
git clone https://github.com/FlerAlex/enseal.git cd enseal cargo build --release
### Binários pré-compilados
Baixe de [GitHub Releases](https://github.com/FlerAlex/enseal/releases) para Linux (x86_64, aarch64), macOS (Intel, Apple Silicon) e Windows.
## Início Rápido
### Modo anônimo (sem configuração)
Compartilhe segredos usando um código único. Sem chaves, sem contas — funciona imediatamente.```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
Funciona também com segredos únicos:```bash
echo "my-api-token" | enseal share --label "API key" Share code: 4-orbital-hammock
enseal receive 4-orbital-hammock my-api-token
Ambos os terminais devem estar abertos ao mesmo tempo — o remetente aguarda até que o destinatário se conecte.
### Modo de identidade (baseado em chave, sem códigos)
Para equipes com confiança de chave estabelecida. Criptografe para um nome, sem necessidade de coordenação.```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
Segredos existem apenas na memória do processo filho. Quando ele termina, eles desaparecem.
## Funcionalidades
### Três Modos de Compartilhamento
**Modo anônimo** (padrão) — baseado em wormhole, zero configuração. Um código legível por humanos é tudo que você precisa. A autenticação mútua SPAKE2 previne ataques MITM.```bash
enseal share .env # generates wormhole code
enseal receive 7-guitarist-revenge # uses code
Com --relay, o modo anônimo contorna o wormhole e usa o transporte de relay enseal em vez disso. Ambos os lados devem usar o mesmo relay:```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`)** — apenas do remetente. Criptografa localmente e publica em [burnurl.dev](https://burnurl.dev), retornando uma URL autodestrutiva que o destinatário abre no navegador. Nenhuma CLI é necessária do lado do destinatário.```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)
O destinatário abre o URL em qualquer navegador — nenhuma instalação do enseal necessária. Adicione --passphrase para criptografar no lado do cliente antes do upload (o servidor vê apenas o texto cifrado):```bash
enseal share .env --upload --passphrase # prompts for passphrase
enseal share .env --upload --ttl 4 # 4-hour TTL (max 24)
O acesso à API requer um plano Pro ou Team no burnurl.dev. Defina `BURNURL_API_KEY` com sua chave. Substitua a URL base para instâncias auto-hospedadas: `BURNURL_URL=https://burnurl.internal`.
**Modo de identidade** — criptografia de chave pública para colegas conhecidos. Criptografe para um nome.```bash
enseal keys init # one-time setup
enseal share .env --to sarah # encrypt to sarah's public key
O modo identidade suporta três opções de transporte:```bash
enseal share .env --to sarah
enseal share .env --to sarah --relay wss://relay.enseal.dev
enseal share .env --to sarah --output ./drop/
### Entrada Flexível
enseal aceita segredos de múltiplas fontes:```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
Referências ${VAR} são resolvidas antes do envio, para que os destinatários recebam valores totalmente expandidos:```env
DB_HOST=postgres.internal
DB_PORT=5432
DATABASE_URL=postgres://user:pass@${DB_HOST}:${DB_PORT}/myapp
Suporta a sintaxe de fallback `${VAR:-default}`. Referências circulares e diretas são detectadas e rejeitadas. Use `--no-interpolate` para enviar a sintaxe `${VAR}` bruta.
### Filtragem
Controle quais variáveis são enviadas:```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
A saída se adapta ao que foi enviado:```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
Recebe segredos e os injeta diretamente como variáveis de ambiente em um processo filho. Segredos nunca tocam o sistema de arquivos.```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