CLI
nrz — официальный CLI для разработки и деплоя на платформе ONREZA. Написан на Rust, включает локальный эмулятор платформенных API (KV, D1, Context).
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 (по умолчанию)
Установка
Заголовок раздела «Установка»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 --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-migrations | Пропустить миграции БД |
--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Управление локальной D1-совместимой SQLite базой данных.
nrz db <subcommand>| Субкоманда | Описание |
|---|---|
shell | Интерактивная SQLite консоль |
execute <sql> | Выполнить SQL запрос |
info | Информация о БД (таблицы, размер) |
reset | Сброс БД |
push | Выполнить SQL на удалённой D1 |
migrate | Управление миграциями |
Execute флаги:
| Флаг | Описание |
|---|---|
sql | SQL запрос (используйте - для чтения из stdin) |
--file <path> | Прочитать SQL из файла |
Reset флаги:
| Флаг | Описание |
|---|---|
--force | Пропустить подтверждение |
--remote | Сбросить удалённую D1 БД |
--project-id <id> | ID проекта |
Push флаги:
| Флаг | Описание |
|---|---|
sql | SQL запрос (используйте - для чтения из stdin) |
--file <path> | Прочитать SQL из файла |
--project-id <id> | ID проекта |
Migrate субкоманды:
| Субкоманда | Описание |
|---|---|
create <name> | Создать новый файл миграции |
apply | Применить pending миграции |
status | Статус миграций |
Migrate apply флаги:
| Флаг | Описание |
|---|---|
--remote | Применить на удалённой D1 |
--dry-run | Показать SQL без выполнения |
--project-id <id> | ID проекта |
Migrate status флаги:
| Флаг | Описание |
|---|---|
--remote | Проверить удалённую D1 |
--project-id <id> | ID проекта |
# Интерактивная консольnrz db shell
# Выполнить запросnrz db execute "SELECT * FROM users"nrz db execute --file ./query.sql
# Информация о БДnrz db info
# Сброс локальной БДnrz db reset --force
# Сброс удалённой БДnrz db reset --remote --force --project-id proj_abc123
# Миграцииnrz db migrate create add_users_tablenrz db migrate applynrz db migrate apply --remotenrz db migrate status
# Push на удалённую БДnrz db push "ALTER TABLE users ADD COLUMN email TEXT"Управление локальным 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"db_name = "dev.db"
[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"]
[deploy]skip_migrations = false
[migrations]dir = "migrations"
[db]default_env = "development"
[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.