CLI
nrz — официальный CLI для разработки и деплоя на платформе ONREZA. Написан на Rust, включает локальный эмулятор платформенных API (KV, Context) и управление managed PostgreSQL.
LLM-First Design
Заголовок раздела «LLM-First Design»CLI спроектирован для автономного использования LLM-агентами:
--jsonглобальный флаг (NRZ_JSON=1) — машинный вывод в stdout--tokenглобальный флаг (NRZ_TOKEN) — аутентификация без device flow--workspaceглобальный флаг (NRZ_WORKSPACE) — выбор workspace--environmentу Environment-aware команд (NRZ_ENVIRONMENT) — явный контекст исполнения;nrz context useсохраняет контекст репозитория- JSON output: один объект в stdout, ошибки
{"error": "..."}, exit code 1 - Human output: цветной текст в stderr (по умолчанию)
Structured Log Streaming
Заголовок раздела «Structured Log Streaming»В JSON-режиме (--json / NRZ_JSON=1) все команды CLI стримят структурированные log-строки — по одной JSON-строке на каждое сообщение о прогрессе:
{"s":"user","p":"install","l":"info","m":"Installing dependencies: npm install"}{"s":"debug","p":"install","l":"info","m":"npm warn deprecated inflight@1.0.6"}{"s":"user","p":"build","l":"info","m":"✓ Build completed"}| Ключ | Значение | Описание |
|---|---|---|
s |
user / debug |
Целевой стрим: user — для пользователя, debug — внутренний вывод |
p |
auth / build / db / deploy / detect / domains / env / init / install / link / projects / rollback / workspace |
Фаза операции |
l |
info / warn / error |
Уровень сообщения |
m |
string | Текст сообщения |
Фильтрация user-строк с jq:
NRZ_JSON=1 nrz deploy 2>/dev/null | jq -r 'select(.s=="user") | .m'Подробнее: JSON Output
Установка
Заголовок раздела «Установка»Quick Install
Заголовок раздела «Quick Install»Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/ONREZA/nrz-cli/main/install.sh | bashWindows (PowerShell):
iwr -useb https://raw.githubusercontent.com/ONREZA/nrz-cli/main/install.ps1 | iexЧерез пакетный менеджер
Заголовок раздела «Через пакетный менеджер»npm i -g @onreza/nrz# илиpnpm i -g @onreza/nrz# илиbun i -g @onreza/nrzСкачать вручную
Заголовок раздела «Скачать вручную»Скачайте бинарник для вашей платформы из GitHub Releases:
nrz-linux-x64— Linux x86_64nrz-macos-x64— macOS Intelnrz-macos-arm64— macOS Apple Siliconnrz-windows-x64.exe— Windows x86_64
Глобальные флаги
Заголовок раздела «Глобальные флаги»Все команды поддерживают следующие глобальные флаги:
| Флаг | Переменная окружения | Описание |
|---|---|---|
--json |
NRZ_JSON=1 |
Машиночитаемый JSON вывод |
--token <token> |
NRZ_TOKEN |
API токен для аутентификации |
--workspace <slug> |
NRZ_WORKSPACE |
Workspace slug |
Environment не является глобальным флагом. Команды, которым нужен контекст,
принимают --environment <name-or-id> и используют NRZ_ENVIRONMENT либо
gitignored repository context из nrz context use <name-or-id>.
Команды
Заголовок раздела «Команды»nrz init
Заголовок раздела «nrz init»Инициализирует проект: создаёт onreza.toml, определяет фреймворк, опционально создаёт проект на платформе.
nrz init [OPTIONS]| Флаг | Описание |
|---|---|
--name <name> |
Имя проекта (по умолчанию: имя директории) |
--skip-detection |
Пропустить автоопределение фреймворка |
--create |
Создать проект на платформе |
--project-id <id> |
Привязать существующий проект по ID |
# Интерактивная инициализацияnrz init
# Создать проект на платформеnrz init --create --name my-project
# Привязать существующий проектnrz init --project-id proj_abc123nrz link
Заголовок раздела «nrz link»Привязывает текущую директорию к проекту на платформе.
nrz link [dir] [OPTIONS]| Флаг | Описание |
|---|---|
dir |
Путь к директории проекта (по умолчанию: .) |
--project-id <id> |
ID проекта (пропустить интерактивный выбор) |
# Интерактивный выбор проектаnrz link
# Привязка по IDnrz link --project-id proj_abc123nrz dev
Заголовок раздела «nrz dev»Запускает локальный dev-сервер с эмуляцией платформенных API.
nrz dev [dir] [OPTIONS]| Флаг | Описание |
|---|---|
dir |
Путь к директории проекта (по умолчанию: .) |
--alias <name> |
Запустить алиас из [dev.aliases] в onreza.toml |
--command <cmd> |
Команда запуска (переопределяет конфиг) |
--port, -p <port> |
Порт dev-сервера (по умолчанию: 4321) |
--inspect |
Включить Node.js inspector (порт 9229) |
--inspect-brk |
Включить inspector с остановкой на старте |
--db-branch <name> |
Ветка managed PostgreSQL для подключения |
# Автодетект фреймворкаnrz dev
# Использовать алиасnrz dev --alias staging
# Другой порт + inspectornrz dev --port 3000 --inspectnrz build
Заголовок раздела «nrz build»Валидирует build output и манифест проекта.
nrz build [dir] [OPTIONS]| Флаг | Описание |
|---|---|
dir |
Путь к директории проекта (по умолчанию: .) |
--skip-validation |
Пропустить валидацию манифеста |
nrz buildnrz build ./my-app --skip-validationnrz deploy
Заголовок раздела «nrz deploy»Деплоит проект на платформу ONREZA.
nrz deploy [dir] [OPTIONS]| Флаг | Описание |
|---|---|
dir |
Путь к директории проекта (по умолчанию: .) |
--prod |
Production деплой |
--project-id <id> |
ID проекта (пропустить автоопределение) |
--skip-build |
Пропустить шаг сборки |
--build-command <cmd> |
Кастомная команда сборки |
--skip-env-check |
Пропустить проверку env переменных |
# Деплой previewnrz deploy
# Production деплойnrz deploy --prod
# С кастомной сборкойnrz deploy --build-command "npm run build:staging"nrz projects
Заголовок раздела «nrz projects»Управление проектами.
nrz projects <subcommand>| Субкоманда | Описание |
|---|---|
list [--limit <n>] |
Список проектов |
create --name <name> |
Создать проект |
info <id> |
Информация о проекте |
update <id> |
Обновить настройки проекта |
delete <id> |
Удалить проект |
Create флаги:
| Флаг | Описание |
|---|---|
--name <name> |
Обязательно — имя проекта |
--display-name <name> |
Отображаемое имя |
--git-url <url> |
URL Git репозитория |
--branch <branch> |
Git ветка (по умолчанию: main) |
--framework <fw> |
Фреймворк (astro, nuxt, sveltekit, nitro) |
--install-command <cmd> |
Команда установки зависимостей |
--build-command <cmd> |
Команда сборки |
--output-directory <dir> |
Директория сборки |
--link |
Привязать к текущей директории |
Delete флаги:
| Флаг | Описание |
|---|---|
id |
Обязательно — ID проекта |
--force |
Пропустить подтверждение |
Update флаги:
| Флаг | Описание |
|---|---|
--display-name <name> |
Отображаемое имя |
--git-url <url> |
URL Git репозитория |
--branch <branch> |
Git ветка |
--framework <fw> |
Фреймворк |
--install-command <cmd> |
Команда установки |
--build-command <cmd> |
Команда сборки |
--output-directory <dir> |
Директория сборки |
--root-directory <dir> |
Корневая директория |
--node-version <ver> |
Версия Node.js |
# Список проектовnrz projects list
# Создать и привязатьnrz projects create --name my-app --framework astro --link
# Информацияnrz projects info proj_abc123
# Обновитьnrz projects update proj_abc123 --build-command "npm run build"
# Удалитьnrz projects delete proj_abc123 --forcenrz deployments
Заголовок раздела «nrz deployments»Список деплоев проекта.
nrz deployments [OPTIONS]| Флаг | Описание |
|---|---|
--limit <n> |
Максимальное количество (по умолчанию: 10) |
--project-id <id> |
ID проекта |
nrz deploymentsnrz deployments --limit 20nrz logs
Заголовок раздела «nrz logs»Просмотр runtime логов проекта.
nrz logs [OPTIONS]| Флаг | Описание |
|---|---|
--deployment-id <id> |
Фильтр по ID деплоя |
--project-id <id> |
ID проекта |
--limit <n> |
Количество записей (по умолчанию: 50) |
--search <query> |
Поисковый запрос |
nrz logsnrz logs --search "error" --limit 100nrz rollback
Заголовок раздела «nrz rollback»Откат к предыдущему деплою.
nrz rollback [OPTIONS]| Флаг | Описание |
|---|---|
--deployment-id <id> |
ID деплоя для отката (по умолчанию: текущий live) |
--project-id <id> |
ID проекта |
nrz rollbacknrz rollback --deployment-id dep_xyz789Управление managed PostgreSQL базами данных.
nrz db <subcommand> [OPTIONS]Глобальный флаг --project-id <id> доступен для всех субкоманд.
| Субкоманда | Описание |
|---|---|
list |
Список баз данных проекта |
create |
Создать новую базу данных |
info [database] |
Информация о БД |
delete <database> |
Удалить базу данных |
start [database] |
Запустить остановленную БД |
stop [database] |
Остановить БД |
connection [database] |
Строка подключения |
query [sql] |
Выполнить SQL запрос |
schema [database] |
Показать структуру БД (таблицы, колонки) |
branches |
Управление ветками БД |
config [database] |
Настройки auto-inject |
Если [database] не указан — используется значение из [db] database в onreza.toml, или первая БД с включённым auto-inject.
Create флаги:
| Флаг | Описание |
|---|---|
--name <name> |
Имя базы данных |
--cu-size <size> |
Размер CU (0.25, 0.5, 1.0, 2.0, 4.0, 8.0) |
--wait |
Дождаться активации перед возвратом |
Query флаги:
| Флаг | Описание |
|---|---|
sql |
SQL запрос |
--file <path> |
Прочитать SQL из файла |
--database <id> |
ID или имя БД |
--branch <name> |
Ветка БД для выполнения |
Connection флаги:
| Флаг | Описание |
|---|---|
--branch <name> |
Получить строку подключения ветки |
Branches субкоманды:
| Субкоманда | Описание |
|---|---|
branches |
Список веток (по умолчанию) |
branches create <name> |
Создать ветку |
branches delete <branch> |
Удалить ветку |
branches connection <branch> |
Строка подключения ветки |
Config флаги:
| Флаг | Описание |
|---|---|
--auto-inject <true|false> |
Включить/выключить auto-inject DATABASE_URL |
--env-var <NAME> |
Имя переменной для auto-inject |
--preview-branches <true|false> |
Автосоздание веток для preview-деплоев |
# Список баз данныхnrz db list
# Создать БД и дождаться активацииnrz db create --name my-app-db --wait
# Информацияnrz db info
# Строка подключенияnrz db connectionnrz db connection --branch dev
# Выполнить SQLnrz db query "SELECT * FROM users LIMIT 10"nrz db query --file ./query.sql --branch staging
# Структура БД (для LLM-агентов)nrz db schema --json
# Управление веткамиnrz db branchesnrz db branches create feature-authnrz db branches delete feature-auth
# Настройки auto-injectnrz db config --auto-inject true --env-var DATABASE_URL --preview-branches true
# Остановить / запуститьnrz db stopnrz db start
# Удалить (требует --force в non-interactive режиме)nrz db delete my-app-db --forceУправление локальным KV Store.
nrz kv <subcommand>| Субкоманда | Описание |
|---|---|
get <key> |
Получить значение |
set <key> <value> |
Установить значение |
remove <key> |
Удалить ключ |
list [--prefix <p>] [--limit <n>] |
Список ключей |
clear [--force] |
Очистить все данные |
# Установить значениеnrz kv set user:123 '{"name": "John"}'
# С TTL (1 час)nrz kv set session:abc token123 --ttl 3600
# Получитьnrz kv get user:123
# Список с префиксомnrz kv list --prefix user: --limit 50
# Удалитьnrz kv remove user:123
# Очиститьnrz kv clear --forcenrz env
Заголовок раздела «nrz env»Управление переменными окружения проекта.
nrz env <subcommand>| Субкоманда | Описание |
|---|---|
list |
Список переменных |
set <key> |
Установить переменную из безопасного input |
delete <key> |
Удалить project-wide definition |
validate |
Проверить по декларациям в onreza.toml |
exec -- <command> |
Запустить команду с эфемерно materialized context |
Set флаги:
| Флаг | Описание |
|---|---|
--value <value> |
Plain value; не использовать для секретов из-за shell history |
--stdin / --from-file <path> |
Безопасный input, обязательный для secret |
--plain / --secret |
Категория, если она не задана декларацией |
--environment <name-or-id> / --all |
Exact scope |
--replace-scope |
Явно разрешить изменение существующего scope |
--change-category |
Явно разрешить plain/secret conversion |
# Списокnrz env list
# Установить plain и secretnrz env set API_URL --value https://api.example.com --plain --environment previewprintf %s "$API_KEY" | nrz env set API_KEY --stdin --secret --environment preview
# Удалить единственную project-wide definitionnrz env delete API_URL --all
# Выполнить локально без записи plaintext dotenvnrz env exec --environment preview -- npm run dev
# Валидацияnrz env validate --environment previewnrz context
Заголовок раздела «nrz context»Управляет gitignored Environment context текущего checkout:
nrz context use previewnrz context shownrz context clearnrz domains
Заголовок раздела «nrz domains»Управление custom domain hostname bindings проекта. Parent workspace domain zone создается или переиспользуется сервером автоматически.
nrz domains <subcommand>| Флаг | Описание |
|---|---|
--project-id <id> |
ID проекта (пропустить автоопределение) |
| Субкоманда | Описание |
|---|---|
list |
Список hostname bindings проекта |
add <domain> |
Привязать hostname к окружению |
remove <domain_id> |
Удалить hostname binding |
verify <domain_id> |
Проверить parent workspace domain zone |
Add флаги:
| Флаг | Описание |
|---|---|
--environment <name-or-id> |
Exact Environment; иначе используется сохранённый context |
nrz domains listnrz domains add example.comnrz domains verify dom_abc123nrz domains remove dom_abc123nrz workspace
Заголовок раздела «nrz workspace»Управление workspaces.
nrz workspace <subcommand>| Субкоманда | Описание |
|---|---|
list |
Список workspaces |
switch <slug> |
Переключить default workspace |
nrz workspace listnrz workspace switch my-teamnrz login
Заголовок раздела «nrz login»Аутентификация через OAuth 2.0 Device Flow.
nrz loginКоманда автоматически:
- Создаёт device flow запрос
- Открывает браузер с URL для подтверждения
- Ожидает подтверждения пользователя
- Сохраняет токен в
~/.config/nrz/credentials.json
nrz logout
Заголовок раздела «nrz logout»Выход из платформы.
nrz logout [OPTIONS]| Флаг | Описание |
|---|---|
--all |
Выйти из всех workspaces |
nrz logoutnrz logout --allnrz whoami
Заголовок раздела «nrz whoami»Информация о текущем пользователе.
nrz whoaminrz upgrade
Заголовок раздела «nrz upgrade»Обновление CLI до последней версии.
nrz upgrade [OPTIONS]| Флаг | Описание |
|---|---|
--force |
Обновить даже если уже последняя версия |
--version <tag> |
Конкретная версия (например, v0.1.5) |
nrz upgradenrz upgrade --version v0.1.5Конфигурация onreza.toml
Заголовок раздела «Конфигурация onreza.toml»onreza.toml — единый конфиг проекта, коммитится в git.
#:schema https://raw.githubusercontent.com/onreza/nrz-cli/main/onreza.schema.json
[project]id = "proj_abc123"name = "my-project"workspace = "my-team"
[dev]command = "npm run dev"port = 4321host = "127.0.0.1"data_dir = ".onreza/data"
[dev.aliases]network = "npm run dev -- --host 0.0.0.0"staging = "npm run dev -- --host 0.0.0.0 --port 3001"
[build]command = "npm run build"output_dirs = ["dist", ".output", "build"]
[db]# database = "my-db" # ID или имя managed PostgreSQL (auto-resolved если не указано)# branch = "dev" # Ветка для nrz dev (main если не указано)
[env][env.declarations]DATABASE_URL = "sensitive"PUBLIC_API_URL = "plain"OPTIONAL_VAR = { visibility = "plain", required = false }Секция [env]
Заголовок раздела «Секция [env]»Декларирует переменные окружения проекта:
- Строка
"sensitive"/"plain"— shorthand, переменная обязательна - Table
{ visibility = "...", required = false }— для необязательных переменных
Используется в:
nrz env set— определяет plain/secret category, если флаг не переданnrz env validate— проверяет required переменныеnrz deploy— pre-flight проверка перед деплоем
Для использования в CI/CD передайте токен через переменную окружения:
export NRZ_TOKEN="nrz_xxx"nrz deploy --prodПример для GitHub Actions:
- name: Deploy to ONREZA env: NRZ_TOKEN: ${{ secrets.ONREZA_TOKEN }} run: | nrz deploy --prodDevice Flow API
Заголовок раздела «Device Flow API»OAuth 2.0 Device Authorization Grant (RFC 8628) — механизм аутентификации CLI.
Инициация
Заголовок раздела «Инициация»POST /v1/deviceОтвет:
{ "device_code": "abc123def456...", "user_code": "ABCD-1234", "verification_uri": "https://app.onreza.ru/device", "verification_uri_complete": "https://app.onreza.ru/device?code=ABCD-1234", "expires_in": 300, "interval": 5}Получение токена
Заголовок раздела «Получение токена»POST /v1/device/tokenУспешный ответ (200):
{ "access_token": "nrz_xxxxxxxxxxxxxxxx", "token_type": "Bearer", "workspace_slug": "my-workspace", "workspace_name": "My Workspace"}Ошибки:
| Статус | Ошибка | Описание |
|---|---|---|
| 400 | authorization_pending |
Пользователь ещё не подтвердил |
| 400 | slow_down |
Слишком частый polling |
| 400 | expired_token |
Device code истёк |
| 400 | invalid_grant |
Device code не найден |
Коды ошибок API
Заголовок раздела «Коды ошибок API»| Код | Описание |
|---|---|
| 200 | Успешный запрос |
| 400 | Некорректный запрос |
| 401 | Не авторизован |
| 403 | Доступ запрещён |
| 404 | Ресурс не найден |
| 409 | Конфликт (например, параллельный деплой) |
| 429 | Rate limit |
Rate Limits
Заголовок раздела «Rate Limits»| Endpoint | Limit |
|---|---|
/v1/device |
10 запросов/минуту с одного IP |
/v1/device/token |
Polling с интервалом из поля interval (5 c); при слишком частых запросах возвращается slow_down |
| API с аутентификацией по API key | 5000 запросов/час на ключ |
При превышении лимита возвращается статус 429 с заголовком Retry-After.