Estandariza cómo
tus apps consumen
secretos.

Deja de reinventar la carga de secretos en cada proyecto. Define un contrato de entorno y resuélvelo en todas partes.

Resolución de secretos open source para AWS SSM y Azure Key Vault, para desarrollo local, CI/CD y el runtime de la aplicación.

AWS SSM · Azure Key Vault · GitHub Action · SDKs de runtime
npm install -g envilder
# AWS CLI configurado con permisos a SSM aws sts get-caller-identity{ "UserId": "AROAADALOVELACE1815DC", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/secrets-role/ada.lovelace"} # Sube cada secreto a SSM Parameter Store npx envilder --push --key=OPENAI_API_KEY --value=example-not-a-real-secret --secret-path=/openai/prod/api-key 📤 PUSHING SECRET━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━OPENAI_API_KEY → *****************key ⭐ SECRET PUSHED - OPENAI_API_KEY=*******************secret → *****************key
AWS SSM
Azure Key Vault
GitHub Actions
npm

Por qué la gestión de secretos está rota

Cada equipo, cada etapa, cada runtime gestiona los secretos de forma diferente. Sin estándar. Sin consistencia. Sin confianza.

Fragmentada entre herramientas

El entorno local usa archivos .env. CI/CD lee de integraciones con vaults. Producción tiene su propio método. Misma app, diferentes flujos de configuración.

Secretos compartidos por canales inseguros

Claves API enviadas por Slack, archivos .env en repositorios, páginas wiki con credenciales en texto plano. Un incidente de seguridad esperando a ocurrir.

El desfase de configuración es inevitable

Sin una fuente única de verdad sobre qué secretos necesita una app. Dev, staging y producción se desincronizan. Los despliegues fallan. Nadie sabe qué config es la correcta.

Por qué Envilder?

Envilder es una capa de resolución sobre tu gestor de secretos existente. Los secretos se quedan en tu nube. El mapeo JSON es solo el contrato que mantiene cada entorno consistente.

Cero infraestructura

Sin servidores, sin proxies, sin SaaS intermediario. Construido sobre AWS SSM y Azure Key Vault, servicios que ya usas y pagas.

Un archivo, todos los secretos

Un solo contrato JSON define cada secreto para cada entorno. Versionado en Git, revisable en PRs, comparable. Tu equipo revisa cambios de secretos en el mismo PR que el código.

Rotación de secretos segura

Rota valores en AWS SSM o Azure Key Vault sin cambiar envilder.json. Los archivos .env generados solo se actualizan al volver a ejecutar Envilder; los consumidores de runtime deben reiniciarse o volver a resolver los secretos.

Tu almacén de secretos, un contrato de mapeo

Mantén los secretos en la configuración de AWS SSM o Azure Key Vault que ya utilizas. Envilder preserva el contrato de mapeo envilder.json entre herramientas; las credenciales y la migración de secretos siguen siendo específicas de cada proveedor.

También incluye

GitHub ActionObtiene secretos en workflows CI/CD. Mismo mapeo, cero intervención manual.
Sincronización bidireccionalObtiene en .env o sube valores .env a tu proveedor en la nube vía CLI.
Los secretos no tocan discoSDKs de runtime cargan secretos directamente en memoria al iniciar la app. Sin archivos .env escritos a disco.
IAM y RBAC nativoPolíticas IAM de AWS o RBAC de Azure. Sin capa de auth extra.
Registros de acceso nativos del proveedorCloudTrail o Azure Monitor pueden registrar el acceso al proveedor cuando están configurados. Envilder no crea un registro de auditoría por sí mismo.
Soporte de perfiles AWSCambia entre perfiles AWS CLI para configuraciones multi-cuenta.

Cómo funciona

Define. Resuelve. Despliega.

PASO01

Define el modelo de mapeo

Un archivo JSON que mapea nombres de variables de entorno a rutas de secretos en la nube. Haz commit. Revísalo en PRs. Compara entre entornos. Un modelo para cada etapa y runtime.

envilder.jsonjson
{
  "DB_PASSWORD": "/my-app/prod/db-password",
  "API_KEY":     "/my-app/prod/api-key",
  "SECRET_TOKEN": "/my-app/prod/secret-token"
}
PASO02

Resuelve con la CLI

Un comando obtiene cada secreto de tu vault en la nube y los escribe en .env. Úsalo localmente o en scripts. Mismo mapeo, mismo comportamiento.

terminalbash
$ envilder --map=envilder.json --envfile=.env

 Obtenido DB_PASSWORD ···word
 Obtenido API_KEY ···key
 Obtenido SECRET_TOKEN ···oken
 Archivo de entorno escrito en .env
PASO03

Carga en runtime con SDKs

Sáltate el archivo .env por completo. Carga secretos directamente en tu aplicación al iniciar con SDKs nativos: Python, .NET, Node.js y más.

pip install envilder
settings.pypython
from envilder import Envilder, SecretProviderType

# One-liner: load secrets into os.environ
Envilder.load("envilder.json")

# Or resolve as a dict without injecting
secrets = Envilder.resolve_file("envilder.json")

# Fluent builder with provider override
secrets = (
    Envilder.from_map_file("envilder.json")
    .with_provider(SecretProviderType.AZURE)
    .with_vault_url("https://my-vault.vault.azure.net")
    .inject()
)
dotnet add package Envilder
Program.cscsharp
using Envilder;

var builder = WebApplication.CreateBuilder(args);

// Load secrets into IConfiguration
builder.Configuration.AddEnvilder("envilder.json");

// Register EnvilderClient in DI
builder.Services.AddEnvilder("envilder.json");

// --- Or standalone (no ASP.NET) ---

// One-liner: resolve + inject into Environment
Env.Load("envilder.json");

// Fluent builder with provider override
Env.FromMapFile("envilder.json")
    .WithProvider(SecretProviderType.Azure)
    .WithVaultUrl("https://my-vault.vault.azure.net")
    .Inject();
npm install @envilder/sdk
config.tstypescript
import { Envilder, SecretProviderType } from '@envilder/sdk';

// One-liner: resolve + inject into process.env
await Envilder.load('envilder.json');

// Or resolve as a Map without injecting
const secrets = await Envilder.resolveFile('envilder.json');

// Fluent builder with provider override
const override = await Envilder.fromMapFile('envilder.json')
  .withProvider(SecretProviderType.Azure)
  .withVaultUrl('https://my-vault.vault.azure.net')
  .inject();
PASO04

Push desde dev al vault

¿Necesitas añadir o rotar un secreto? Sube valores desde tu entorno local al proveedor en la nube. Sin necesidad de consola.

terminalbash
$ envilder --push --envfile=.env --map=envilder.json

 Subido DB_PASSWORD /my-app/prod/db-password
 Subido API_KEY /my-app/prod/api-key
 Subido SECRET_TOKEN /my-app/prod/secret-token
PASO05

Los secretos se quedan en tu vault

Sin intermediarios. Tu nube gestiona el almacenamiento, la rotación y el control de acceso. Envilder resuelve, nunca almacena.

Míralo en acción

Mira cómo Envilder simplifica la gestión de secretos en menos de 2 minutos.

Comando de la demo: envilder --map=envilder.json --envfile=.env. Envilder resuelve los secretos mapeados de tu proveedor en la nube configurado y escribe las variables resultantes en .env.

Tu nube. Tu elección.

Envilder funciona actualmente con AWS SSM Parameter Store y Azure Key Vault. GCP Secret Manager está planificado y aún no está disponible. Configura los proveedores disponibles en envilder.json o con flags CLI.

AWS SSM Parameter Store

envilder.jsonjson
{
  "$config": {
    "provider": "aws",
    "profile": "prod-account"
  },
  "DB_PASSWORD": "/my-app/prod/db-password",
  "API_KEY": "/my-app/prod/api-key"
}
$ envilder --map=envilder.json --envfile=.env
  • ✔ Soporte de GetParameter con WithDecryption
  • ✔ Soporte de perfil AWS para multi-cuenta
  • ✔ Control de acceso basado en políticas IAM
  • ✔ Registro de acceso de CloudTrail cuando está configurado

Azure Key Vault

envilder.jsonjson
{
  "$config": {
    "provider": "azure",
    "vaultUrl": "https://my-vault.vault.azure.net"
  },
  "DB_PASSWORD": "my-app-prod-db-password",
  "API_KEY": "my-app-prod-api-key"
}
$ envilder --provider=azure --vault-url=https://my-vault.vault.azure.net --map=envilder.json --envfile=.env
  • ✔ Auto-normaliza nombres de secretos (barras → guiones)
  • ✔ Autenticación DefaultAzureCredential
  • ✔ Control de acceso Azure RBAC
  • ✔ Registro de acceso de Azure Monitor cuando está configurado

GCP Secret Manager

Planificado
  • → Integración planificada con GCP Secret Manager
  • → No disponible en la CLI, la GitHub Action ni los SDKs de runtime
Ver roadmap →

Empieza ahora

En funcionamiento en menos de un minuto.

Prerrequisitos

  • Node.js v22.12+
  • Elige un proveedor en la nube:
  • AWS SSM: credenciales AWS con ssm:GetParameter; añade ssm:PutParameter para --push
  • Azure Key Vault: credenciales Azure con acceso Get a secretos; añade acceso Set para --push

Instalar

npx
npm
pnpm

Inicio rápido

  1. Crea un envilder.json que mapee variables de entorno a rutas de secretos
  2. Ejecuta npx envilder --map=envilder.json --envfile=.env
  3. Tu archivo .env está listo ✔
# Crear archivo de mapeo$ echo '{"API_KEY": "/app/api-key"}' > envilder.json # Subir un secreto$ npx envilder --push --key=API_KEY --value=example-not-a-real-secret --secret-path=/app/api-key
app.pypython
import os

from envilder import Envilder

Envilder.load("envilder.json")

# Los secretos ya están en os.environ
api_key = os.environ["API_KEY"]
Ver más ejemplos en GitHub →