
Безопасный CLI-инструмент для управления секретами окружения с использованием встроенных хранилищ учетных данных ОС (связка ключей macOS, Linux Secret Service, диспетчер учетных данных Windows)
Безопасное управление секретами окружения с использованием встроенных хранилищ учетных данных ОС.

myapp.dev, stripe-api.prod, work.staging)cmd (поиск, список, запуск, удаление).env (с отслеживанием поколений через audit)eval $(envsec env)).env (с обнаружением конфликтов)envsec tui) для управления секретами без запоминания командЭто монорепозиторий, содержащий следующие пакеты:
| Пакет | Описание | npm |
|---|---|---|
envsec | CLI-инструмент для управления секретами | |
@envsec/sdk | SDK для Node.js / Bun для программной загрузки секретов | |
@envsec/core | Основной движок — адаптеры хранилищ учетных данных ОС + база метаданных | |
@envsec/tui | Интерактивный терминальный интерфейс для управления секретами |
Для программного доступа к секретам из Node.js или Bun используйте @envsec/sdk:```bash
npm install @envsec/sdk
I'm ready to translate the Kitploit tool content from English to Russian. Please provide chunk 3 of 85.```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();
См. полную документацию SDK для всех API, поддержки нескольких контекстов и параметров.
Никаких дополнительных зависимостей. Использует встроенную связку ключей Keychain через инструмент командной строки security.
Требуется libsecret-tools (предоставляет команду secret-tool), которая взаимодействует с GNOME Keyring, KDE Wallet или любым поставщиком Secret Service API через D-Bus.```bash
sudo apt install libsecret-tools
sudo dnf install libsecret
sudo pacman -S libsecret
Для работы требуется активная D-Bus-сессия и демон хранилища ключей (например, `gnome-keyring-daemon`). Большинство сред рабочего стола обрабатывают это автоматически.
### Windows
Дополнительных зависимостей нет. Используется встроенный диспетчер учётных данных Windows через `cmdkey` и PowerShell.
## Установка
### Homebrew (macOS / Linux)```bash
brew tap davidnussio/homebrew-tap
brew install envsec
npm install -g envsec
### npx (без установки)```bash
npx envsec
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`:```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
Флаг --db имеет приоритет над ENVSEC_DB. Варианты использования включают базы данных для отдельных проектов, общие базы данных команды на сетевых дисках, а также CI/CD с эфемерным хранилищем.
Сохраните секрет в хранилище учётных данных ОС.
<key> — имя ключа секрета (например, api.key, db.password)--value, -v — значение для сохранения (опустите для интерактивного маскированного запроса)--expires, -e — срок действия (например, 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
### Получить секрет
Извлеките значение секрета из хранилища учетных данных ОС.
- `<key>` — имя ключа секрета для извлечения
- `--quiet`, `-q` — выводить только исходное значение (без предупреждений и дополнительного вывода)
- `--json` — вывод в формате JSON (включает context, key, value, 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
Удаляет секрет из хранилища учётных данных ОС.
<key> — имя ключа секрета для удаления (необязательно, если используется --all)--yes, -y — пропустить запрос подтверждения--all — удалить все секреты в контексте```bash
envsec -c myapp.dev delete api.keyenvsec -c myapp.dev del api.key
### Переименование секрета
Переименуйте ключ секрета в том же контексте. Значение и метаданные срока действия сохраняются.
- `<old-key>` — Текущее имя ключа секрета
- `<new-key>` — Новое имя ключа секрета
- `--force`, `-f` — Перезаписать целевой ключ, если он уже существует```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
Выводит все ключи секретов и метаданные в контексте.
--json — вывод в формате JSON```bash
envsec -c myapp.dev list### Список всех контекстов
Выводит список всех доступных контекстов с количеством секретов.
- `--json` — вывод в формате JSON```bash
# Without --context, lists all available contexts with secret counts
envsec list
Поиск секретов или контекстов с использованием glob-шаблонов.