env-master
ENСоздать аккаунт
Разделы документации

CLI envmaster

Тонкая обёртка над SDK: та же расшифровка на клиенте, те же гарантии.

Установка

npm i -g envmaster      # или bun add -g envmaster
envmaster --help

Разово, без установки:

npx envmaster export --project billing-api --env production

Пакет называется envmaster — без скоупа, как и команда. Нужен Node 20+ или Bun.

Команды

Команд ровно пять:

envmaster login    --url <url> --client-id <id> --client-secret <secret>
envmaster export   --project <slug> --env <slug> [--file out.env]
envmaster run      --project <slug> --env <slug> [--mask] -- <cmd...>
envmaster validate --project <slug> --env <slug> [--schema env.schema.yml] [--warn-undeclared]
envmaster import   [file] --project <slug> --env <slug> [--dry-run] [--overwrite] [--all-secrets]

Откуда берутся учётные данные

По убыванию приоритета: флаги → переменные окружения → ~/.envmaster/config.json (его пишет envmaster login, права 0600). В конфиге лежат машинные учётные данные, а не значения записей: секреты на диск не попадают ни на одном шаге.

ПеременнаяДля чего
ENVMASTER_URLадрес API
ENVMASTER_CLIENT_IDclient ID identity
ENVMASTER_CLIENT_SECRETclient secret identity
ENVMASTER_PROJECTslug проекта
ENVMASTER_ENVIRONMENTslug окружения
ENVMASTER_TOKENпользовательский access-токен, только для import

login проверяет учётные данные реальным входом и только потом сохраняет.

run вместо export

export пишет файл, run передаёт значения дочернему процессу — и ничего не оставляет на диске:

envmaster run --project billing-api --env production --mask -- ./deploy.sh

Дочерний процесс получает все записи окружения и не получает ваши ENVMASTER_* — они вычищаются из его окружения. С --mask вывод процесса фильтруется построчно: маскируются значения секретов и сами учётные данные. Код возврата проксируется.

export печатает dotenv на stdout (в терминале — с предупреждением в stderr) или в --file с правами 0600. Реальные значения — это единственная команда, которая оставляет их на диске, и только по явному запросу.

validate: проверка до деплоя

envmaster validate сверяет локальную схему (--schema, по умолчанию env.schema.yml) с тем, что реально лежит в окружении: чего не хватает, что не того типа, что истекло. Найденное — код возврата 1, пайплайн падает до деплоя. Ключи, которых нет в схеме, по умолчанию молчат; --warn-undeclared печатает их, не влияя на код возврата. Проверка идёт по именам, значения не раскрываются.

import для переезда

ENVMASTER_TOKEN=<access-токен из кабинета> \
  envmaster import .env --project billing-api --env production --dry-run

Ключи с SECRET, PASSWORD, TOKEN, KEY, CREDENTIAL, PRIVATE, DSN, AUTH, SALT или CERT в имени становятся секретами (masked), остальные — переменными (plain); --all-secrets переключает всё в секреты. Существующие ключи пропускаются, пока не передан --overwrite. --dry-run печатает решение по каждому ключу, ничего не записывая. Значения не печатаются никогда — только имена и решения.

Команда пишет, поэтому требует пользовательский access-токен, а не машинные учётные данные — те read-only по дизайну.