
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)
Gestion sécurisée des secrets d'environnement à l'aide des magasins d'identifiants natifs du système d'exploitation.

myapp.dev, stripe-api.prod, work.staging)cmd (recherche, liste, exécution, suppression).env (avec suivi de génération via audit)eval $(envsec env)).env (avec détection de conflits)envsec tui) pour gérer les secrets sans mémoriser de commandesIl s'agit d'un monorepo contenant les paquets suivants :
| Paquet | Description | npm |
|---|---|---|
envsec | Outil CLI pour gérer les secrets | |
@envsec/sdk | SDK Node.js / Bun pour charger les secrets par programmation | |
@envsec/core | Moteur principal — adaptateurs de magasin d'identifiants OS + base de données de métadonnées | |
@envsec/tui | Interface utilisateur terminal interactive pour la gestion des secrets |
Pour un accès programmatique aux secrets depuis Node.js ou Bun, utilisez @envsec/sdk :```bash
npm install @envsec/sdk
pip install kitploit
git clone https://github.com/kitploit/kitploit.git
cd kitploit
python setup.py install
docker pull kitploit/kitploit
docker run -it kitploit/kitploit
kitploit search nmap
kitploit search --category network --sort stars
kitploit interactive
The configuration file is located at ~/.kitploit/config.yml. You can customize the following options:
api_key: Your API key for accessing the Kitploit APIlanguage: The language for tool descriptions (default: en)cache_enabled: Whether to enable caching (default: true)cache_ttl: Cache time-to-live in seconds (default: 3600)We welcome contributions! Please read our Contributing Guide for details on how to get started.
This project is licensed under the MIT License - see the LICENSE file for details.
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();
```
Voir la [documentation complète du SDK](https://github.com/davidnussio/envsec/blob/main/packages/sdk/README.md) pour toutes les API, la prise en charge multi-contextes et les options.
## Prérequis
- Node.js >= 22
### macOS
Aucune dépendance supplémentaire. Utilise le Trousseau intégré via l'outil CLI `security`.
### Linux
Nécessite `libsecret-tools` (fournit la commande `secret-tool`), qui communique avec GNOME Keyring, KDE Wallet ou tout fournisseur d'API Secret Service via D-Bus.```bash
# Debian / Ubuntu
sudo apt install libsecret-tools
# Fedora
sudo dnf install libsecret
# Arch
sudo pacman -S libsecret
```
Un session D-Bus active et un démon de trousseau de clés (par ex. `gnome-keyring-daemon`) doivent être en cours d’exécution. 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)```bash
brew tap davidnussio/homebrew-tap
brew install envsec
```
### npm```bash
npm install -g envsec
```
### npx (sans installation)```bash
npx envsec
```
### mise```bash
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 ex. `myapp.dev`, `stripe-api.prod`, `work.staging`.
### Options globales
Ces options sont disponibles sur toutes les commandes :
- `--context`, `-c` — Nom du contexte (par ex. `myapp.dev`, `stripe-api.prod`). Lit également la variable d'environnement `ENVSEC_CONTEXT`
- `--debug`, `-d` — Active la journalisation de débogage
- `--json` — Sortie au format JSON pour les scripts
- `--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 ce chemin avec `--db` ou la variable d'environnement `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
```
Le drapeau `--db` a priorité sur `ENVSEC_DB`. Les cas d'utilisation incluent les bases de données par projet, les bases de données partagées en équipe sur des lecteurs réseau, et l'IC/CD avec stockage éphémère.
### Ajouter un secret
Stockez un secret dans le magasin d'informations d'identification 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 masquée interactive)
- `--expires`, `-e` — Durée d'expiration (par ex. `30m`, `2h`, `7d`, `4w`, `3mo`, `1y`)```bash
# 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
```
### Récupérer un secret
Récupère la valeur d'un secret depuis le magasin d'identifiants du système d'exploitation.
```