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--envглобальный флаг (NRZ_ENV) — выбор окружения- 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 |
--env <env> | NRZ_ENV | Окружение (production/preview/development или 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 с остановкой на старте |
# Автодетект фреймворкаnrz dev
# Использовать алиасnrz dev --alias staging
# Другой порт + inspectornrz dev --port 3000 --inspect| --db-branch <name> | Ветка managed PostgreSQL для подключения |
nrz 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 <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 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 on --env-var DATABASE_URL --preview-branches on
# Остановить / запустить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> <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.comnrz env set API_KEY secret123 --secret
# Удалитьnrz env remove API_URL
# Pull/Pushnrz env pullnrz env pull .env.stagingnrz env pushnrz env push --overwrite --dry-run
# Валидацияnrz env validatenrz domains
Заголовок раздела «nrz domains»Управление кастомными доменами.
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 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]strict = false
[env.declarations]DATABASE_URL = "sensitive"PUBLIC_API_URL = "plain"OPTIONAL_VAR = { visibility = "plain", required = false }Секция [env]
Заголовок раздела «Секция [env]»Декларирует переменные окружения проекта:
strict = true—nrz 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 --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.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"}Ошибки:
| Статус | Ошибка | Описание |
|---|---|---|
| 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 | 60 запросов/минуту |
| Остальные API | 1000 запросов/минуту |
При превышении лимита возвращается статус 429 с заголовком Retry-After.