
Herramienta CLI segura para gestionar secretos de entorno utilizando almacenes de credenciales nativos del SO (macOS Keychain, Linux Secret Service, Windows Credential Manager)
Gestión segura de secretos de entorno mediante almacenes de credenciales nativos del sistema operativo.

myapp.dev, stripe-api.prod, work.staging)cmd (buscar, listar, ejecutar, eliminar).env (con seguimiento de generación mediante audit)eval $(envsec env)).env (con detección de conflictos)envsec tui) para gestionar secretos sin memorizar comandosEste es un monorepo que contiene los siguientes paquetes:
| Paquete | Descripción | npm |
|---|---|---|
envsec | Herramienta CLI para gestionar secretos | |
@envsec/sdk | SDK de Node.js / Bun para cargar secretos programáticamente | |
@envsec/core | Motor principal: adaptadores de almacén de credenciales del SO + base de datos de metadatos | |
@envsec/tui | Interfaz de terminal interactiva para la gestión de secretos |
Para acceso programático a secretos desde Node.js o Bun, usa @envsec/sdk:```bash
npm install @envsec/sdk
Aquí tienes la traducción al español del chunk 3 de 85:
---
**Nota:** El texto original no fue proporcionado en el mensaje. Para traducir el contenido, necesito el texto del chunk 3. Por favor, proporciona el contenido del chunk 3 para poder traducirlo.```typescript
import { loadSecrets } from "@envsec/sdk";
// Load and inject into process.env
await loadSecrets({ context: "myapp.dev", inject: true });
// Or use the client for full control
import { EnvsecClient } from "@envsec/sdk";
const client = await EnvsecClient.create({ context: "myapp.dev" });
const apiKey = await client.get("api.key");
await client.close();
Consulta la documentación completa del SDK para todas las APIs, soporte multi-contexto y opciones.
Sin dependencias adicionales. Utiliza el Llavero integrado mediante la herramienta CLI security.
Requiere libsecret-tools (proporciona el comando secret-tool), que se comunica con GNOME Keyring, KDE Wallet o cualquier proveedor de la API Secret Service a través de D-Bus.```bash
sudo apt install libsecret-tools
sudo dnf install libsecret
sudo pacman -S libsecret
Debe estar activa una sesión D-Bus en ejecución y un demonio de llavero (por ejemplo, `gnome-keyring-daemon`). La mayoría de los entornos de escritorio gestionan esto automáticamente.
### Windows
Sin dependencias adicionales. Utiliza el Administrador de credenciales integrado de Windows mediante `cmdkey` y PowerShell.
## Instalación
### Homebrew (macOS / Linux)```bash
brew tap davidnussio/homebrew-tap
brew install envsec
npm install -g envsec
### npx (sin instalación)```bash
npx envsec
mise use -g npm:envsec
## Uso
La mayoría de los comandos requieren un contexto especificado con `--context` (o `-c`).
Un contexto es una etiqueta de forma libre para agrupar secretos — p. ej. `myapp.dev`, `stripe-api.prod`, `work.staging`.
### Opciones globales
Estas opciones están disponibles en todos los comandos:
- `--context`, `-c` — Nombre del contexto (p. ej. `myapp.dev`, `stripe-api.prod`). También lee la variable de entorno `ENVSEC_CONTEXT`
- `--debug`, `-d` — Habilita el registro de depuración
- `--json` — Salida en formato JSON para scripting
- `--db` — Ruta al archivo de base de datos SQLite (predeterminado: `~/.envsec/store.sqlite`). También lee la variable de entorno `ENVSEC_DB`
### Ruta de base de datos personalizada
De forma predeterminada, los metadatos se almacenan en `~/.envsec/store.sqlite`. Puedes sobrescribir esto con `--db` o la variable de entorno `ENVSEC_DB`:```bash
# Use a project-local database
envsec --db ./local-store.sqlite -c myapp.dev list
# Or via environment variable
export ENVSEC_DB=/shared/team/envsec.sqlite
envsec -c myapp.dev list
El flag --db tiene prioridad sobre ENVSEC_DB. Los casos de uso incluyen bases de datos por proyecto, bases de datos compartidas por equipos en unidades de red y CI/CD con almacenamiento efímero.
Almacena un secreto en el almacén de credenciales del sistema operativo.
<key> — Nombre de la clave del secreto (p. ej. api.key, db.password)--value, -v — Valor a almacenar (omitir para un prompt interactivo enmascarado)--expires, -e — Duración de expiración (p. ej. 30m, 2h, 7d, 4w, 3mo, 1y)```bashenvsec -c myapp.dev add api.key --value "sk-abc123"
envsec -c myapp.dev add api.key -v "sk-abc123"
envsec -c myapp.dev add api.key
envsec -c myapp.dev add api.key -v "sk-abc123" --expires 30d
envsec -c myapp.dev add api.key -v "sk-abc123" -e 6mo
### Obtener un secreto
Recupera un valor de secreto del almacén de credenciales del sistema operativo.
- `<key>` — Nombre de la clave del secreto a recuperar
- `--quiet`, `-q` — Imprime solo el valor bruto (sin advertencias ni salida adicional)
- `--json` — Salida en formato JSON (incluye contexto, clave, valor, expires_at)```bash
envsec -c myapp.dev get api.key
# Print only the raw value (no warnings or extra output)
envsec -c myapp.dev get api.key --quiet
envsec -c myapp.dev get api.key -q
Elimina un secreto del almacén de credenciales del sistema operativo.
<key> — Nombre de la clave del secreto a eliminar (opcional si se usa --all)--yes, -y — Omitir la solicitud de confirmación--all — Eliminar todos los secretos en el contexto```bash
envsec -c myapp.dev delete api.keyenvsec -c myapp.dev del api.key
### Renombrar un secreto
Renombra una clave de secreto dentro del mismo contexto. Se conservan el valor y los metadatos de caducidad.
- `<old-key>` — Nombre actual de la clave de secreto
- `<new-key>` — Nuevo nombre de la clave de secreto
- `--force`, `-f` — Sobrescribe el destino si ya existe```bash
# Rename a key
envsec -c myapp.dev rename old.key new.key
# Overwrite target if it already exists
envsec -c myapp.dev rename old.key existing.key --force
Lista todas las claves secretas y metadatos en un contexto.