العودة إلى التحديثات
New releaseSep 3, 2026

envsec v1.0.0-rc.2

أداة CLI آمنة لإدارة أسرار البيئة باستخدام مخازن بيانات الاعتماد الأصلية لنظام التشغيل (macOS Keychain, Linux Secret Service, Windows Credential Manager)

مشاركة

envsec

إدارة آمنة لأسرار البيئة باستخدام مخازن بيانات الاعتماد الأصلية لنظام التشغيل.

عرض توضيحي

Image

الميزات

  • تخزين الأسرار في مخزن بيانات الاعتماد الأصلي لنظام التشغيل (وليس في ملفات نصية عادية)
  • متعدد المنصات: macOS، Linux، Windows
  • تنظيم الأسرار حسب السياق (مثل myapp.dev، stripe-api.prod، work.staging)
  • تتبع البيانات الوصفية للأسرار (أسماء المفاتيح، الطوابع الزمنية) عبر SQLite
  • البحث في السياقات والأسرار باستخدام أنماط glob
  • تشغيل الأوامر مع استبدال الأسرار
  • حفظ وإعادة تشغيل الأوامر باستخدام cmd (بحث، عرض، تشغيل، حذف)
  • تصدير الأسرار إلى ملفات .env (مع تتبع التوليد عبر audit)
  • تصدير الأسرار كمتغيرات بيئة shell (eval $(envsec env))
  • تحميل الأسرار من ملفات .env (مع اكتشاف التعارضات)
  • مشاركة الأسرار المشفرة باستخدام GPG لأعضاء الفريق
  • واجهة طرفية تفاعلية (envsec tui) لإدارة الأسرار دون حفظ الأوامر

الحزم

هذا مستودع أحادي يحتوي على الحزم التالية:

الحزمةالوصفnpm
envsecأداة سطر أوامر لإدارة الأسرارnpm
@envsec/sdkSDK لـ Node.js / Bun لتحميل الأسرار برمجياًnpm
@envsec/coreالمحرك الأساسي — محولات مخزن بيانات الاعتماد لنظام التشغيل + قاعدة بيانات البيانات الوصفيةnpm
@envsec/tuiواجهة طرفية تفاعلية لإدارة الأسرارnpm

البدء السريع مع 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();

راجع توثيق SDK الكامل لجميع واجهات API، ودعم السياقات المتعددة، والخيارات.

المتطلبات

  • Node.js >= 22

macOS

لا توجد تبعيات إضافية. يستخدم Keychain المدمج عبر أداة security CLI.

Linux

يتطلب libsecret-tools (الذي يوفر الأمر secret-tool)، والذي يتواصل مع GNOME Keyring أو KDE Wallet أو أي مزود Secret Service API عبر D-Bus.

# 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

لا توجد تبعيات إضافية. يستخدم Windows Credential Manager المدمج عبر cmdkey و PowerShell.

التثبيت

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). السياق هو تسمية حرة لتجميع الأسرار — مثل myapp.dev، stripe-api.prod، work.staging.

الخيارات العامة

هذه الخيارات متاحة في جميع الأوامر:

  • --context، -c — اسم السياق (مثل myapp.dev، stripe-api.prod). يقرأ أيضًا متغير البيئة ENVSEC_CONTEXT
  • --debug، -d — تفعيل تسجيل التصحيح
  • --json — الإخراج بصيغة JSON للبرمجة النصية
  • --db — المسار إلى ملف قاعدة بيانات SQLite (الافتراضي: ~/.envsec/store.sqlite). يقرأ أيضًا متغير البيئة ENVSEC_DB

مسار قاعدة بيانات مخصص

بشكل افتراضي، يتم تخزين البيانات الوصفية في ~/.envsec/store.sqlite. يمكنك تجاوز ذلك باستخدام --db أو متغير البيئة 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

يتقدّم العلم --db على ENVSEC_DB. تشمل حالات الاستخدام قواعد بيانات لكل مشروع، وقواعد بيانات مشتركة بين الفريق على محركات الشبكة، وCI/CD مع تخزين مؤقت.

إضافة سر

تخزين سر في مخزن بيانات الاعتماد الخاص بنظام التشغيل.

  • <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

الحصول على سر

استرجع قيمة سر من مخزن بيانات الاعتماد في نظام التشغيل.

  • <key> — اسم مفتاح السر المراد استرجاعه
  • --quiet، -q — اطبع القيمة الخام فقط (بدون تحذيرات أو مخرجات إضافية)
  • --json — الإخراج بصيغة JSON (يتضمن السياق، المفتاح، القيمة، 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

حذف سر

إزالة سر من مخزن بيانات الاعتماد في نظام التشغيل.

  • <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

عرض جميع الأسرار في سياق

عرض جميع مفاتيح الأسرار والبيانات الوصفية في سياق.

  • --json — الإخراج بصيغة JSON
envsec -c myapp.dev list

عرض جميع السياقات

اعرض جميع السياقات المتاحة مع عدد الأسرار.

  • --json — الإخراج بصيغة JSON
# Without --context, lists all available contexts with secret counts
envsec list

البحث عن الأسرار

ابحث عن الأسرار أو السياقات باستخدام أنماط glob.

  • <pattern> — نمط glob للبحث عنه (مثل api.*، myapp.*)
  • --json — الإخراج بصيغة JSON
# Search secrets within a context
envsec -c myapp.dev search "api.*"

# Search contexts by pattern (without --context)
envsec search "myapp.*"

نقل الأسرار بين السياقات

نقل الأسرار من سياق إلى آخر. تُزال الأسرار المصدر بعد النقل.

  • <pattern> — نمط Glob أو مفتاح محدد للنقل (اختياري إذا تم استخدام --all)
  • --to, -t — السياق الهدف لنقل الأسرار إليه
  • --all — نقل جميع الأسرار من السياق المصدر
  • --force, -f — الكتابة فوق الأسرار الموجودة في السياق الهدف
  • --yes, -y — تخطي مطالبة التأكيد
# Move a single secret
envsec -c myapp.dev move api.token --to myapp.prod

# Move secrets matching a glob pattern
envsec -c myapp.dev move "redis.*" --to myapp.prod -y

الفئات