Перейти к содержимому

CLI

nrz — официальный CLI для разработки и деплоя на платформе ONREZA. Написан на Rust, включает локальный эмулятор платформенных API (KV, Context) и управление managed PostgreSQL.

CLI спроектирован для автономного использования LLM-агентами:

  • --json глобальный флаг (NRZ_JSON=1) — машинный вывод в stdout
  • --token глобальный флаг (NRZ_TOKEN) — аутентификация без device flow
  • --workspace глобальный флаг (NRZ_WORKSPACE) — выбор workspace
  • --env глобальный флаг (NRZ_ENV) — выбор окружения
  • JSON output: один объект в stdout, ошибки {"error": "..."}, exit code 1
  • Human output: цветной текст в stderr (по умолчанию)

В 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"}
КлючЗначениеОписание
suser / debugЦелевой стрим: user — для пользователя, debug — внутренний вывод
pauth / build / db / deploy / detect / domains / env / init / install / link / projects / rollback / workspaceФаза операции
linfo / warn / errorУровень сообщения
mstringТекст сообщения

Фильтрация user-строк с jq:

Окно терминала
NRZ_JSON=1 nrz deploy 2>/dev/null | jq -r 'select(.s=="user") | .m'

Подробнее: JSON Output

Linux/macOS:

Окно терминала
curl -fsSL https://raw.githubusercontent.com/ONREZA/nrz-cli/main/install.sh | bash

Windows (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_64
  • nrz-macos-x64 — macOS Intel
  • nrz-macos-arm64 — macOS Apple Silicon
  • nrz-windows-x64.exe — Windows x86_64

Все команды поддерживают следующие глобальные флаги:

ФлагПеременная окруженияОписание
--jsonNRZ_JSON=1Машиночитаемый JSON вывод
--token <token>NRZ_TOKENAPI токен для аутентификации
--workspace <slug>NRZ_WORKSPACEWorkspace slug
--env <env>NRZ_ENVОкружение (production/preview/development или ID)

Инициализирует проект: создаёт 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_abc123

Привязывает текущую директорию к проекту на платформе.

Окно терминала
nrz link [dir] [OPTIONS]
ФлагОписание
dirПуть к директории проекта (по умолчанию: .)
--project-id <id>ID проекта (пропустить интерактивный выбор)
Окно терминала
# Интерактивный выбор проекта
nrz link
# Привязка по ID
nrz link --project-id proj_abc123

Запускает локальный 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 с остановкой на старте
Окно терминала
# Автодетект фреймворка
nrz dev
# Использовать алиас
nrz dev --alias staging
# Другой порт + inspector
nrz dev --port 3000 --inspect

| --db-branch <name> | Ветка managed PostgreSQL для подключения |

Валидирует build output и манифест проекта.

Окно терминала
nrz build [dir] [OPTIONS]
ФлагОписание
dirПуть к директории проекта (по умолчанию: .)
--skip-validationПропустить валидацию манифеста
Окно терминала
nrz build
nrz build ./my-app --skip-validation

Деплоит проект на платформу ONREZA.

Окно терминала
nrz deploy [dir] [OPTIONS]
ФлагОписание
dirПуть к директории проекта (по умолчанию: .)
--prodProduction деплой
--project-id <id>ID проекта (пропустить автоопределение)
--skip-buildПропустить шаг сборки
--build-command <cmd>Кастомная команда сборки
--skip-env-checkПропустить проверку env переменных
Окно терминала
# Деплой preview
nrz deploy
# Production деплой
nrz deploy --prod
# С кастомной сборкой
nrz deploy --build-command "npm run build:staging"

Управление проектами.

Окно терминала
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 --force

Список деплоев проекта.

Окно терминала
nrz deployments [OPTIONS]
ФлагОписание
--limit <n>Максимальное количество (по умолчанию: 10)
--project-id <id>ID проекта
Окно терминала
nrz deployments
nrz deployments --limit 20

Просмотр runtime логов проекта.

Окно терминала
nrz logs [OPTIONS]
ФлагОписание
--deployment-id <id>Фильтр по ID деплоя
--project-id <id>ID проекта
--limit <n>Количество записей (по умолчанию: 50)
--search <query>Поисковый запрос
Окно терминала
nrz logs
nrz logs --search "error" --limit 100

Откат к предыдущему деплою.

Окно терминала
nrz rollback [OPTIONS]
ФлагОписание
--deployment-id <id>ID деплоя для отката (по умолчанию: текущий live)
--project-id <id>ID проекта
Окно терминала
nrz rollback
nrz 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 флаги:

ФлагОписание
sqlSQL запрос
--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 <on|off>Включить/выключить auto-inject DATABASE_URL
--env-var <NAME>Имя переменной для auto-inject
--preview-branches <on|off>Автосоздание веток для preview-деплоев
Окно терминала
# Список баз данных
nrz db list
# Создать БД и дождаться активации
nrz db create --name my-app-db --wait
# Информация
nrz db info
# Строка подключения
nrz db connection
nrz db connection --branch dev
# Выполнить SQL
nrz db query "SELECT * FROM users LIMIT 10"
nrz db query --file ./query.sql --branch staging
# Структура БД (для LLM-агентов)
nrz db schema --json
# Управление ветками
nrz db branches
nrz db branches create feature-auth
nrz db branches delete feature-auth
# Настройки auto-inject
nrz db config --auto-inject on --env-var DATABASE_URL --preview-branches on
# Остановить / запустить
nrz db stop
nrz 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 --force

Управление переменными окружения проекта.

Окно терминала
nrz env <subcommand>
СубкомандаОписание
listСписок переменных
set <key> <value>Установить переменную
remove <key>Удалить переменную
pull [file]Скачать в файл (по умолчанию: .env.local)
push [file]Загрузить из файла (по умолчанию: .env.local)
validateПроверить по декларациям в onreza.toml

Set флаги:

ФлагОписание
--secretПометить как секретную

Push флаги:

ФлагОписание
--overwriteПерезаписать существующие
--dry-runПоказать что будет загружено
--secretПометить все как секретные
--declared-onlyТолько объявленные в onreza.toml
Окно терминала
# Список
nrz env list
# Установить
nrz env set API_URL https://api.example.com
nrz env set API_KEY secret123 --secret
# Удалить
nrz env remove API_URL
# Pull/Push
nrz env pull
nrz env pull .env.staging
nrz env push
nrz env push --overwrite --dry-run
# Валидация
nrz env validate

Управление кастомными доменами.

Окно терминала
nrz domains <subcommand>
ФлагОписание
--project-id <id>ID проекта (пропустить автоопределение)
СубкомандаОписание
listСписок доменов
add <domain>Добавить домен
remove <domain_id>Удалить домен
verify <domain_id>Проверить DNS

Add флаги:

ФлагОписание
--environment-id <id>ID окружения (по умолчанию: production)
Окно терминала
nrz domains list
nrz domains add example.com
nrz domains verify dom_abc123
nrz domains remove dom_abc123

Управление workspaces.

Окно терминала
nrz workspace <subcommand>
СубкомандаОписание
listСписок workspaces
switch <slug>Переключить default workspace
Окно терминала
nrz workspace list
nrz workspace switch my-team

Аутентификация через OAuth 2.0 Device Flow.

Окно терминала
nrz login

Команда автоматически:

  1. Создаёт device flow запрос
  2. Открывает браузер с URL для подтверждения
  3. Ожидает подтверждения пользователя
  4. Сохраняет токен в ~/.config/nrz/credentials.json

Выход из платформы.

Окно терминала
nrz logout [OPTIONS]
ФлагОписание
--allВыйти из всех workspaces
Окно терминала
nrz logout
nrz logout --all

Информация о текущем пользователе.

Окно терминала
nrz whoami

Обновление CLI до последней версии.

Окно терминала
nrz upgrade [OPTIONS]
ФлагОписание
--forceОбновить даже если уже последняя версия
--version <tag>Конкретная версия (например, v0.1.5)
Окно терминала
nrz upgrade
nrz upgrade --version v0.1.5

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 = 4321
host = "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]
strict = false
[env.declarations]
DATABASE_URL = "sensitive"
PUBLIC_API_URL = "plain"
OPTIONAL_VAR = { visibility = "plain", required = false }

Декларирует переменные окружения проекта:

  • strict = truenrz env push загружает только переменные из [env.declarations]
  • Строка "sensitive" / "plain" — shorthand, переменная обязательна
  • Table { visibility = "...", required = false } — для необязательных переменных

Используется в:

  • nrz env push — определяет is_secret для каждой переменной
  • 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 --prod

OAuth 2.0 Device Authorization Grant (RFC 8628) — механизм аутентификации CLI.

POST /v1/device

Ответ:

{
"device_code": "abc123def456...",
"user_code": "ABCD-1234",
"verification_uri": "https://app.onreza.app/device",
"verification_uri_complete": "https://app.onreza.app/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"
}

Ошибки:

СтатусОшибкаОписание
400authorization_pendingПользователь ещё не подтвердил
400slow_downСлишком частый polling
400expired_tokenDevice code истёк
400invalid_grantDevice code не найден
КодОписание
200Успешный запрос
400Некорректный запрос
401Не авторизован
403Доступ запрещён
404Ресурс не найден
409Конфликт (например, параллельный деплой)
429Rate limit
EndpointLimit
/v1/device10 запросов/минуту с IP
/v1/device/token60 запросов/минуту
Остальные API1000 запросов/минуту

При превышении лимита возвращается статус 429 с заголовком Retry-After.