
envsec v1.0.0-rc.2
पर्यावरण रहस्यों को प्रबंधित करने के लिए सुरक्षित CLI उपकरण, जो देशी OS क्रेडेंशियल स्टोर (macOS Keychain, Linux Secret Service, Windows Credential Manager) का उपयोग करता है।
envsec
मूल OS क्रेडेंशियल स्टोर का उपयोग करके सुरक्षित पर्यावरण रहस्य प्रबंधन।
डेमो

विशेषताएँ
- अपने OS के मूल क्रेडेंशियल स्टोर में रहस्य संग्रहीत करें (सादे टेक्स्ट फ़ाइलों में नहीं)
- क्रॉस-प्लेटफ़ॉर्म: macOS, Linux, Windows
- संदर्भ के अनुसार रहस्यों को व्यवस्थित करें (जैसे
myapp.dev,stripe-api.prod,work.staging) - SQLite के माध्यम से रहस्य मेटाडेटा (कुंजी नाम, टाइमस्टैम्प) ट्रैक करें
- glob पैटर्न के साथ संदर्भों और रहस्यों को खोजें
- रहस्य इंटरपोलेशन के साथ कमांड चलाएँ
cmdके साथ कमांड सहेजें और पुनः चलाएँ (खोजें, सूचीबद्ध करें, चलाएँ, हटाएँ)- रहस्यों को
.envफ़ाइलों में निर्यात करें (auditके माध्यम से जनरेशन ट्रैकिंग के साथ) - रहस्यों को शेल पर्यावरण चर के रूप में निर्यात करें (
eval $(envsec env)) .envफ़ाइलों से रहस्य लोड करें (संघर्ष का पता लगाने के साथ)- टीम के सदस्यों के लिए GPG के साथ एन्क्रिप्ट किए गए रहस्य साझा करें
- कमांड याद किए बिना रहस्यों के प्रबंधन के लिए इंटरैक्टिव टर्मिनल UI (
envsec tui)
पैकेज
यह एक मोनोरेपो है जिसमें निम्नलिखित पैकेज शामिल हैं:
| पैकेज | विवरण | npm |
|---|---|---|
envsec | रहस्यों के प्रबंधन के लिए CLI टूल | |
@envsec/sdk | प्रोग्रामेटिक रूप से रहस्य लोड करने के लिए Node.js / Bun SDK | |
@envsec/core | कोर इंजन — OS क्रेडेंशियल स्टोर एडाप्टर + मेटाडेटा DB | |
@envsec/tui | रहस्य प्रबंधन के लिए इंटरैक्टिव टर्मिनल UI |
SDK त्वरित शुरुआत
Node.js या Bun से रहस्यों तक प्रोग्रामेटिक पहुँच के लिए, @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();
सभी APIs, multi-context समर्थन, और विकल्पों के लिए पूर्ण SDK दस्तावेज़ीकरण देखें।
आवश्यकताएँ
- Node.js >= 22
macOS
कोई अतिरिक्त निर्भरता नहीं। security CLI टूल के माध्यम से अंतर्निहित Keychain का उपयोग करता है।
Linux
libsecret-tools (जो secret-tool कमांड प्रदान करता है) की आवश्यकता होती है, जो D-Bus के माध्यम से GNOME Keyring, KDE Wallet, या किसी भी Secret Service API प्रदाता से बात करता है।
# Debian / Ubuntu
sudo apt install libsecret-tools
# Fedora
sudo dnf install libsecret
# Arch
sudo pacman -S libsecret
एक चालू D-Bus सत्र और एक keyring daemon (जैसे gnome-keyring-daemon) सक्रिय होना चाहिए। अधिकांश डेस्कटॉप वातावरण इसे स्वचालित रूप से संभाल लेते हैं।
Windows
कोई अतिरिक्त निर्भरता नहीं। cmdkey और PowerShell के माध्यम से अंतर्निहित Windows Credential Manager का उपयोग करता है।
Installation
Homebrew (macOS / Linux)
brew tap davidnussio/homebrew-tap
brew install envsec
npm
npm install -g envsec
npx (इंस्टॉल के बिना)
npx envsec
mise
mise use -g npm:envsec
उपयोग
अधिकांश कमांड के लिए --context (या -c) के साथ निर्दिष्ट एक context आवश्यक होता है। एक context secrets को समूहित करने के लिए एक free-form लेबल है — जैसे myapp.dev, stripe-api.prod, work.staging।
वैश्विक विकल्प
ये विकल्प सभी कमांड पर उपलब्ध हैं:
--context,-c— Context नाम (जैसेmyapp.dev,stripe-api.prod)।ENVSEC_CONTEXTenv var भी पढ़ता है--debug,-d— Debug logging सक्षम करें--json— scripting के लिए JSON format में आउटपुट दें--db— SQLite database फ़ाइल का पथ (डिफ़ॉल्ट:~/.envsec/store.sqlite)।ENVSEC_DBenv var भी पढ़ता है
कस्टम database पथ
डिफ़ॉल्ट रूप से, metadata ~/.envsec/store.sqlite पर संग्रहीत होता है। आप इसे --db या ENVSEC_DB environment variable के साथ override कर सकते हैं:
# 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
--db फ़्लैग ENVSEC_DB पर प्राथमिकता लेता है। उपयोग के मामलों में प्रति-प्रोजेक्ट डेटाबेस, नेटवर्क ड्राइव पर टीम-साझा डेटाबेस, और अल्पकालिक स्टोरेज वाले CI/CD शामिल हैं।
एक सीक्रेट जोड़ें
OS क्रेडेंशियल स्टोर में एक सीक्रेट संग्रहीत करें।
<key>— सीक्रेट कुंजी का नाम (जैसेapi.key,db.password)--value,-v— संग्रहीत करने का मान (इंटरैक्टिव मास्क्ड प्रॉम्प्ट के लिए छोड़ दें)--expires,-e— समाप्ति अवधि (जैसे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
सीक्रेट प्राप्त करें
OS क्रेडेंशियल स्टोर से एक सीक्रेट मान प्राप्त करें।
<key>— प्राप्त करने के लिए सीक्रेट कुंजी का नाम--quiet,-q— केवल कच्चा मान प्रिंट करें (कोई चेतावनी या अतिरिक्त आउटपुट नहीं)--json— JSON प्रारूप में आउटपुट (इसमें 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
सीक्रेट हटाएँ
OS क्रेडेंशियल स्टोर से एक सीक्रेट हटाएँ।
<key>— हटाने के लिए सीक्रेट कुंजी का नाम (यदि--allका उपयोग किया जाता है तो वैकल्पिक)--yes,-y— पुष्टिकरण प्रॉम्प्ट छोड़ें--all— कॉन्टेक्स्ट में सभी सीक्रेट हटाएँ
envsec -c myapp.dev delete api.key
# or use the alias
envsec -c myapp.dev del api.key
सीक्रेट का नाम बदलें
एक ही संदर्भ में सीक्रेट कुंजी का नाम बदलें। मान और समाप्ति मेटाडेटा संरक्षित रहते हैं।
<old-key>— वर्तमान सीक्रेट कुंजी का नाम<new-key>— नई सीक्रेट कुंजी का नाम--force,-f— यदि लक्ष्य पहले से मौजूद है तो उसे अधिलेखित करें
# 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
किसी context में सभी secrets की सूची बनाएं
किसी context में सभी secret keys और metadata की सूची बनाएं।
--json— JSON format में आउटपुट दें
envsec -c myapp.dev list
सभी कॉन्टेक्स्ट की सूची बनाएं
सीक्रेट गणनाओं के साथ सभी उपलब्ध कॉन्टेक्स्ट की सूची बनाएं।
--json— JSON प्रारूप में आउटपुट दें
# Without --context, lists all available contexts with secret counts
envsec list
सीक्रेट्स खोजें
ग्लोब पैटर्न का उपयोग करके सीक्रेट्स या कॉन्टेक्स्ट खोजें।
<pattern>— खोजने के लिए ग्लोब पैटर्न (जैसेapi.*,myapp.*)--json— JSON प्रारूप में आउटपुट
# Search secrets within a context
envsec -c myapp.dev search "api.*"
# Search contexts by pattern (without --context)
envsec search "myapp.*"