v0.10.0 Codi obert · MIT

El fitxer .env és
un incident de seguretat
esperant a passar.

Envilder llegeix els teus secrets directament d'AWS o Azure cap a la teva app. Sense fitxers, sense SaaS, sense filtracions.

$ npm install -g envilder
# 1. Un model de mapeig per a cada entorn $ cat envilder.json { "DB_PASSWORD": "/app/prod/db-pass", "API_KEY": "/app/prod/api-key" }   # 2. Resol secrets amb la CLI $ envilder --map=envilder.json --envfile=.env   Obtingut DB_PASSWORD → ···pass Obtingut API_KEY → ···key Fitxer d'entorn escrit a .env   $
AWS SSM
Azure Key Vault
GitHub Actions
npm

Sponsors

Per què la gestió de secrets està trencada

Cada equip, cada etapa, cada runtime gestiona els secrets de forma diferent. Sense estàndard. Sense consistència. Sense confiança.

💀

Fragmentada entre eines

L'entorn local utilitza fitxers .env. CI/CD llegeix d'integracions amb vaults. Producció té el seu propi mètode. Mateixa app, diferents fluxos de configuració a tot arreu.

📨

Secrets compartits per canals insegurs

Claus API enviades per Slack, fitxers .env als repositoris, pàgines wiki amb credencials en text pla. Un incident de seguretat esperant a passar.

🐌

El desfasament de configuració és inevitable

Sense una font única de veritat sobre quins secrets necessita una app. Dev, staging i producció es desincronitzen. Els desplegaments fallen. Ningú sap quina config és la correcta.

▼ envilder ho soluciona ▼
🛡️

Un model, una font de veritat

Un únic fitxer de mapeig defineix quins secrets necessita la teva app. Versionat a Git. Revisable en PRs. El mateix contracte a cada entorn.

Resolució consistent a tot arreu

CLI per a desenvolupament local, GitHub Action per a CI/CD, SDKs de runtime per a l'inici de l'app. Mateix mapeig, mateix comportament, mateix resultat.

🤖

El teu núvol, sense intermediaris

AWS SSM, Azure Key Vault o GCP. Sense proxy SaaS. Els secrets es queden a la teva infraestructura. Control d'accés natiu IAM/RBAC.

Fet per a equips reals

Un sistema de resolució de configuració dissenyat per a seguretat, consistència i execució multi-runtime.

📋

Model de mapeig únic

Un contracte JSON defineix tots els secrets. Versionat a Git, revisable en PRs, comparable entre entorns. El model és el producte.

🔌

SDKs de runtime

Carrega secrets directament a memòria a l'inici de l'app: Python, .NET, Node.js, Go, Java. Sense fitxers .env a disc. Sense secrets residuals.

☁️

Multi-Proveïdor

AWS SSM, Azure Key Vault i GCP Secret Manager (pròximament). El teu núvol, les teves regles. Sense dependència de proveïdor.

⚙️

GitHub Action

Obté secrets en workflows CI/CD. Mateix mapeig, zero intervenció manual. Integració directa.

🔄

Sincronització bidireccional

Obté secrets a fitxers .env o puja valors .env al teu proveïdor al núvol. Suport complet d'anada i tornada via CLI.

🔒

Accés IAM i RBAC

Control d'accés natiu del núvol. Les polítiques IAM d'AWS o RBAC d'Azure defineixen qui llegeix què. Sense capa d'auth extra.

📊

Totalment auditable

Cada lectura i escriptura queda registrada a AWS CloudTrail o Azure Monitor. Traçabilitat completa de qui ha accedit a què i quan.

🧱

Zero infraestructura

Sense servidors, sense proxies, sense SaaS. Construït sobre serveis natius del núvol que ja utilitzes i pagues.

👤

Suport de perfils AWS

Configuració multi-compte? Utilitza --profile per canviar entre perfils AWS CLI. Perfecte per a entorns multi-etapa.

Com funciona

Defineix. Resol. Desplega.

PAS 01

Defineix el model de mapeig

Un fitxer JSON que mapeja noms de variables d'entorn a rutes de secrets al núvol. Fes-ne commit. Revisa'l en PRs. Compara entre entorns. Un model per a cada etapa i runtime.

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

Resol amb la CLI

Una comanda obté cada secret del teu vault al núvol i els escriu a .env. Utilitza'l localment o en scripts. Mateix mapeig, mateix comportament.

terminal bash
$ envilder --map=envilder.json --envfile=.env

 Obtingut DB_PASSWORD ···word
 Obtingut API_KEY ···key
 Obtingut SECRET_TOKEN ···oken
 Fitxer d'entorn escrit a .env
PAS 03

Carrega en runtime amb SDKs

Salta't el fitxer .env completament. Carrega secrets directament a la teva aplicació a l'inici amb SDKs natius: Python, .NET, Node.js i més.

settings.py python
from envilder import Envilder

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

# Or resolve as a dict without injecting
secrets = Envilder.from_map_file("envilder.json").resolve()
Program.cs csharp
using Envilder;

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

// Or one-liner: resolve + inject into Environment
Env.Load("envilder.json");
config.ts typescript
import { Envilder } 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.fromMapFile('envilder.json').resolve();
PAS 04

Push des de dev al vault

Necessites afegir o rotar un secret? Puja valors des del teu entorn local al proveïdor al núvol. Sense necessitat de consola.

terminal bash
$ envilder --push --envfile=.env --map=envilder.json

 Pujat DB_PASSWORD /my-app/prod/db-password
 Pujat API_KEY /my-app/prod/api-key
 Pujat SECRET_TOKEN /my-app/prod/secret-token
PAS 05

Els secrets es queden al teu vault

Sense intermediaris. El teu núvol gestiona l'emmagatzematge, la rotació i el control d'accés. Envilder resol, mai emmagatzema.

Mira'l en acció

Mira com Envilder simplifica la gestió de secrets en menys de 2 minuts.

El teu núvol. La teva elecció.

Envilder funciona amb AWS SSM Parameter Store, Azure Key Vault i GCP Secret Manager (pròximament). Configura en línia o amb flags CLI.

AWS SSM Parameter Store

envilder.json json
{
  "$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
  • ✔ Suport de GetParameter amb WithDecryption
  • ✔ Suport de perfil AWS per a multi-compte
  • ✔ Control d'accés basat en polítiques IAM
  • ✔ Registre d'auditoria CloudTrail

Azure Key Vault

envilder.json json
{
  "$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-normalitza noms de secrets (barres → guions)
  • ✔ Autenticació DefaultAzureCredential
  • ✔ Control d'accés Azure RBAC
  • ✔ Registre d'auditoria Azure Monitor

GCP Secret Manager

Pròximament
envilder.json json
{
  "$config": {
    "provider": "gcp",
    "projectId": "my-project-id"
  },
  "DB_PASSWORD": "my-app-prod-db-password",
  "API_KEY": "my-app-prod-api-key"
}
$ envilder --provider=gcp --map=envilder.json --envfile=.env
  • ✔ Integració amb Google Cloud Secret Manager
  • ✔ Application Default Credentials (ADC)
  • ✔ Control d'accés basat en IAM
  • ✔ Cloud Audit Logs

SDKs en temps d’execució

Carrega secrets directament a la teva aplicació a l’arrencada. Sense fitxers .env, sense intermediaris. Només el teu vault al núvol i el teu codi.

.NET .NET

Disponible

Integració nativa amb IConfiguration. Resol secrets a l’arrencada.

Instal·lar

dotnet add package Envilder

Inici ràpid

Program.cs csharp
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");

var app = builder.Build();

// --- 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();

Python Python

Disponible

Carrega secrets amb una línia. Compatible amb AWS SSM i Azure Key Vault.

Instal·lar

pip install envilder

Inici ràpid

settings.py python
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()
)

Node.js Node.js

Disponible

Carrega secrets directament a Node.js. Mateix map-file, zero dependències del CLI.

Instal·lar

npm install @envilder/sdk

Inici ràpid

config.ts typescript
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();

Go Go

Planificat

Càrrega lleugera de secrets per a serveis Go.

🚧

Properament

Java Java

Planificat

Suport per a Spring Boot i Java standalone.

🚧

Properament

GitHub Action

Obté secrets en el moment del desplegament. Afegeix-lo a qualsevol workflow en minuts.

☁️ AWS SSM

.github/workflows/deploy.yml yaml
- name: 🪙 Configure AWS Credentials
  uses: aws-actions/configure-aws-credentials@v6
  with:
    role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
    aws-region: us-east-1

- name: 🔐 Pull Secrets from AWS SSM
  uses: macalbert/envilder/github-action@v0
  with:
    map-file: envilder.json
    env-file: .env

🔑 Azure Key Vault

.github/workflows/deploy.yml yaml
- name: 🔑 Azure Login
  uses: azure/login@v2
  with:
    client-id: ${{ secrets.AZURE_CLIENT_ID }}
    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

- name: 🔐 Pull Secrets from Azure Key Vault
  uses: macalbert/envilder/github-action@v0
  with:
    map-file: envilder.json
    env-file: .env
    provider: azure
    vault-url: ${{ secrets.AZURE_KEY_VAULT_URL }}

Inputs de l'Action

Input Requerit Descripció
map-file Ruta al fitxer JSON que mapeja variables d'entorn a rutes de secrets
env-file Ruta al fitxer .env a generar
provider No Proveïdor al núvol: aws o azure (per defecte: aws)
vault-url No URL d'Azure Key Vault

Output: env-file-path – Ruta al fitxer .env generat

Què ve ara

Envilder es desenvolupa activament. Aquí és cap on anem.

Descarregar secrets a .env

Mapeja noms de variables d'entorn a rutes de secrets al núvol via JSON i genera fitxers .env automàticament

Mode push (--push)

Puja valors .env o secrets individuals al proveïdor al núvol

GitHub Action

Utilitza Envilder en workflows CI/CD de forma nativa

Multi-proveïdor (AWS + Azure)

Suport d'AWS SSM Parameter Store i Azure Key Vault

📖

Web de documentació

Web de docs dedicada amb guies, exemples i referència API

Python SDK (envilder)

Biblioteca per a Django/FastAPI/pipelines de dades. Publicat a PyPI

.NET SDK (Envilder)

Biblioteca per a apps enterprise i Azure-native. Publicat a NuGet

Node.js SDK (@envilder/sdk)

Biblioteca nativa de runtime: carrega secrets directament a process.env des d’un map-file. Publicat a npm

🐹

Go SDK (envilder)

Pròximament

Biblioteca per a apps cloud-native i eines Kubernetes. Es publicarà com a mòdul Go

Java SDK (envilder)

Pròximament

Biblioteca per a Spring Boot i backends Android. Es publicarà a Maven Central

☁️

GCP Secret Manager

Tercer proveïdor cloud. Completa el trident multi-núvol

Mode exec (--exec)

Injecta secrets en un procés fill sense escriure a disc

🔐

AWS Secrets Manager

Suport de secrets JSON junt amb SSM Parameter Store

✔️

Mode check/sync (--check)

Valida secrets al núvol vs .env local. Falla CI si estan desincronitzats

Comença ara

En funcionament en menys d'un minut.

Prerequisits

  • Node.js v20+
  • AWS CLI configurat (per AWS SSM)
  • Azure CLI configurat (per Azure Key Vault)
  • Permisos IAM: ssm:GetParameter / ssm:PutParameter

Instal·lar

pnpm pnpm add -g envilder
npm npm install -g envilder
npx npx envilder --help

Inici ràpid

  1. Crea un envilder.json que mapegi variables d'entorn a rutes de secrets
  2. Executa envilder --map=envilder.json --envfile=.env
  3. El teu fitxer .env està llest ✔
# Instal·lar globalment $ npm install -g envilder   # Crear fitxer de mapeig $ echo '{"API_KEY": "/app/api-key"}' > envilder.json   # Obtenir secrets $ envilder --map=envilder.json --envfile=.env   Fet! Fitxer .env generat.   # Pujar un secret $ envilder --push --key=API_KEY --value=sk_live_abc123 --secret-path=/app/api-key   Secret pujat correctament.
# Instal·lar l'SDK $ pip install envilder   # Carregar secrets a l'inici from envilder import Envilder   Envilder.load("envilder.json")   # Els secrets ja són a os.environ db_pass = os.environ["DB_PASSWORD"]