Retour aux mises à jour
New releaseSep 3, 2026

envsec v1.0.0-rc.2

Outil CLI sécurisé pour gérer les secrets d'environnement en utilisant les magasins d'identifiants natifs du système d'exploitation (macOS Keychain, Linux Secret Service, Windows Credential Manager)

Partager

envsec

Gestion sécurisée des secrets d'environnement à l'aide des magasins d'identifiants natifs du système d'exploitation.

Démo

Image

Fonctionnalités

  • Stockez les secrets dans le magasin d'identifiants natif de votre système d'exploitation (pas dans des fichiers en texte clair)
  • Multiplateforme : macOS, Linux, Windows
  • Organisez les secrets par contexte (par ex. myapp.dev, stripe-api.prod, work.staging)
  • Suivez les métadonnées des secrets (noms de clés, horodatages) via SQLite
  • Recherchez des contextes et des secrets avec des motifs glob
  • Exécutez des commandes avec interpolation de secrets
  • Enregistrez et réexécutez des commandes avec cmd (rechercher, lister, exécuter, supprimer)
  • Exportez les secrets vers des fichiers .env (avec suivi de génération via audit)
  • Exportez les secrets en tant que variables d'environnement du shell (eval $(envsec env))
  • Chargez les secrets depuis des fichiers .env (avec détection de conflits)
  • Partagez des secrets chiffrés avec GPG pour les membres de l'équipe
  • Interface terminal interactive (envsec tui) pour gérer les secrets sans mémoriser les commandes

Paquets

Ceci est un monorepo contenant les paquets suivants :

PaquetDescriptionnpm
envsecOutil CLI pour gérer les secretsnpm
@envsec/sdkSDK Node.js / Bun pour charger les secrets par programmationnpm
@envsec/coreMoteur principal — adaptateurs de magasin d'identifiants du système d'exploitation + base de données de métadonnéesnpm
@envsec/tuiInterface terminal interactive pour la gestion des secretsnpm

Démarrage rapide du SDK

Pour un accès programmatique aux secrets depuis Node.js ou Bun, utilisez @envsec/sdk :

npm install @envsec/sdk
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();

Consultez la documentation complète du SDK pour toutes les API, la prise en charge multi-contexte et les options.

Prérequis

  • Node.js >= 22

macOS

Aucune dépendance supplémentaire. Utilise le Keychain intégré via l'outil CLI security.

Linux

Nécessite libsecret-tools (qui fournit la commande secret-tool), qui communique avec GNOME Keyring, KDE Wallet ou tout fournisseur de l'API Secret Service via D-Bus.

# Debian / Ubuntu
sudo apt install libsecret-tools

# Fedora
sudo dnf install libsecret

# Arch
sudo pacman -S libsecret

Une session D-Bus en cours d'exécution et un démon de trousseau de clés (par exemple gnome-keyring-daemon) doivent être actifs. La plupart des environnements de bureau gèrent cela automatiquement.

Windows

Aucune dépendance supplémentaire. Utilise le Gestionnaire d'informations d'identification Windows intégré via cmdkey et PowerShell.

Installation

Homebrew (macOS / Linux)

brew tap davidnussio/homebrew-tap
brew install envsec

npm

npm install -g envsec

npx (sans installation)

npx envsec

mise

mise use -g npm:envsec

Utilisation

La plupart des commandes nécessitent un contexte spécifié avec --context (ou -c). Un contexte est une étiquette libre pour regrouper les secrets — par exemple myapp.dev, stripe-api.prod, work.staging.

Options globales

Ces options sont disponibles sur toutes les commandes :

  • --context, -c — Nom du contexte (par exemple myapp.dev, stripe-api.prod). Lit également la variable d'environnement ENVSEC_CONTEXT
  • --debug, -d — Activer la journalisation de débogage
  • --json — Sortie au format JSON pour le scripting
  • --db — Chemin vers le fichier de base de données SQLite (par défaut : ~/.envsec/store.sqlite). Lit également la variable d'environnement ENVSEC_DB

Chemin de base de données personnalisé

Par défaut, les métadonnées sont stockées dans ~/.envsec/store.sqlite. Vous pouvez remplacer cela avec --db ou la variable d'environnement ENVSEC_DB :

# 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

Le flag --db est prioritaire sur ENVSEC_DB. Les cas d'utilisation incluent des bases de données par projet, des bases de données partagées en équipe sur des lecteurs réseau, et des CI/CD avec stockage éphémère.

Ajouter un secret

Stockez un secret dans le magasin d'identifiants du système d'exploitation.

  • <key> — Nom de la clé du secret (par ex. api.key, db.password)
  • --value, -v — Valeur à stocker (omettre pour une invite interactive masquée)
  • --expires, -e — Durée d'expiration (par ex. 30m, 2h, 7d, 4w, 3mo, 1y)
# Store a value inline
envsec -c myapp.dev add api.key --value "sk-abc123"

# Or use the short alias
envsec -c myapp.dev add api.key -v "sk-abc123"

# Omit --value for an interactive masked prompt
envsec -c myapp.dev add api.key

# Set an expiry duration with --expires (-e)
envsec -c myapp.dev add api.key -v "sk-abc123" --expires 30d

# Supported duration units: m (minutes), h (hours), d (days), w (weeks), mo (months), y (years)
# Combinable: 1y6mo, 2w3d, 1d12h
envsec -c myapp.dev add api.key -v "sk-abc123" -e 6mo

Obtenir un secret

Récupérer une valeur secrète depuis le magasin d'identifiants du système d'exploitation.

  • <key> — Nom de la clé secrète à récupérer
  • --quiet, -q — Afficher uniquement la valeur brute (sans avertissements ni sortie supplémentaire)
  • --json — Sortie au format JSON (inclut context, key, value, expires_at)
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

Supprimer un secret

Supprime un secret du magasin d'informations d'identification du système d'exploitation.

  • <key> — Nom de la clé du secret à supprimer (facultatif si --all est utilisé)
  • --yes, -y — Ignorer l'invite de confirmation
  • --all — Supprimer tous les secrets dans le contexte
envsec -c myapp.dev delete api.key

# or use the alias
envsec -c myapp.dev del api.key

Renommer un secret

Renommer une clé de secret dans le même contexte. La valeur et les métadonnées d'expiration sont préservées.

  • <old-key> — Nom actuel de la clé de secret
  • <new-key> — Nouveau nom de la clé de secret
  • --force, -f — Écraser la cible si elle existe déjà
# 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

Lister tous les secrets dans un contexte

Lister toutes les clés de secrets et les métadonnées dans un contexte.

  • --json — Sortie au format JSON

Catégories