Справочник CLI
TARGET в командах pages — это id деплоя (восемь шестнадцатеричных символов) или имя алиаса. Флаги можно
ставить до или после аргументов. --json выводит JSON везде, где команда показывает данные.
Аккаунт
xvii login
xvii login [DOMAIN]
Вход на инстанс через браузер: показывает код и открывает id, где вы разрешаете эту машину ключом доступа.
Создаёт или обновляет контекст для DOMAIN.
| Флаг |
|
--name NAME |
назвать контекст NAME (по умолчанию — домен) |
--no-browser |
напечатать ссылку и QR-код вместо открытия браузера |
xvii logout
Выходит из текущего инстанса на этой машине.
xvii whoami
Кто вы на текущем инстансе, ваши команды и способ входа. Также xvii me. --json.
xvii tokens
| Команда |
|
tokens list [--team TEAM] |
ваши токены или токены команды (admin) |
tokens create NAME [--scope read|deploy|write] [--team TEAM] [--ttl 90d] |
токен; секрет печатается один раз, в stdout |
tokens revoke ID |
отозвать токен |
xvii tokens create gitlab-ci
xvii tokens create deploy-bot --team frontend --ttl never
Рабочее пространство
xvii teams
| Команда |
|
teams list |
ваши команды и ваша роль в них |
teams create NAME |
новая команда, вы — её владелец |
teams members TEAM |
кто в команде (slug или id) |
teams invite TEAM USER [--role developer] |
пригласить человека с аккаунтом: viewer, developer, admin или owner |
xvii projects
| Команда |
|
projects list [--team TEAM] |
все проекты, которые вы видите |
projects create NAME [--team TEAM] [--description …] [--repository URL] |
проект с окружениями production и preview |
pages
xvii pages deploy
xvii pages deploy [DIR]
Упаковывает папку (по умолчанию dist, build, out или public), загружает её и печатает адрес деплоя, а
с --name — и адрес алиаса. Внутри репозитория записываются данные git.
| Флаг |
|
--name NAME |
также направить алиас NAME на деплой |
--ttl 12h|3d|2w|never |
срок жизни (по умолчанию — серверный) |
--keep |
никогда не удалять автоматически |
--spa |
отдавать index.html на неизвестные пути |
--password PASSWORD |
защитить паролем |
--public |
открыть, даже если у сервера есть пароль по умолчанию |
--team SLUG, --project ID, --env NAME |
куда относится |
--message TEXT |
заметка в панели (по умолчанию — тема последнего коммита) |
--qr |
напечатать QR-код адреса |
--watch |
деплоить заново при каждом изменении, до Ctrl-C |
--json |
вывести деплой в JSON |
Другие команды pages
| Команда |
|
pages list [--mine] [-n N] [--team SLUG] |
деплои, новые первыми (также ls) |
pages open TARGET [--qr] |
открыть деплой или алиас в браузере |
pages qr TARGET |
QR-код адреса сайта |
pages files TARGET [--filter TEXT] |
файлы деплоя |
pages diff TARGET [OTHER] |
добавленные, удалённые и изменённые файлы; без OTHER — против предыдущего деплоя алиаса |
pages rm ID… [--yes] |
удалить деплои; алиасы переходят на предыдущий деплой (также delete) |
pages keep ID [--off] |
исключить деплой из очистки |
pages ttl ID LIFETIME |
новый срок жизни, считая от сейчас |
pages password TARGET [PASSWORD] [--off] [--public] |
защитить, снять защиту или открыть |
pages aliases |
алиасы и куда они указывают |
pages alias NAME ID |
направить алиас на деплой (создаёт его) |
pages rollback NAME |
вернуть алиас к предыдущему деплою |
pages unalias NAME [--yes] |
удалить алиас; деплои остаются |
pages domains ALIAS [add|check|rm|records DOMAIN] [--zone] |
свои домены алиаса |
pages status |
кто вы, квоты ваших команд, последние деплои (также whoami) |
pages log [-n 30] [--filter TEXT] |
недавняя активность (также activity) |
apps
xvii apps create
xvii apps create NAME
| Флаг |
|
--project SLUG, --env ENVIRONMENT |
где (окружение по умолчанию — production) |
--kind web|worker|bot|cron |
по умолчанию web |
--port PORT |
порт веб-приложения (по умолчанию 8080) |
--health PATH |
путь, отвечающий 200, когда приложение готово |
--memory MB |
лимит памяти (по умолчанию 256) |
--schedule "0 3 * * *" |
расписание cron-приложения (UTC) |
--image IMAGE |
сразу задеплоить этот образ |
xvii apps deploy
xvii apps deploy APP
Деплоит образ или папку, собранную на ноде приложения (по её Dockerfile, иначе Railpack). Ждёт, пока релиз
станет живым или упадёт.
| Флаг |
|
--dir FOLDER |
собрать и задеплоить эту папку |
--dockerfile PATH |
путь к Dockerfile в папке |
--image IMAGE |
задеплоить этот образ |
--preview NAME |
задеплоить в превью (создаётся при отсутствии) |
--ttl 7d |
сколько превью живёт без деплоев |
--link URL |
merge request, к которому относится превью |
--message TEXT |
что изменилось (по умолчанию — тема последнего коммита) |
--dotenv FILE |
записать APPS_URL=<адрес> в FILE, когда релиз оживёт |
--project SLUG, --env NAME |
если имена приложений повторяются |
--detach |
не ждать |
Другие команды apps
| Команда |
|
apps ls |
приложения ваших команд |
apps logs APP [-n 200] [-f] [--since 10m] |
последние строки лога приложения |
apps rollback APP [NUMBER] |
снова задеплоить более ранний релиз |
apps stop APP, apps start APP |
остановить или запустить приложение |
apps previews APP [--rm NAME] |
превью приложения или удаление одного из них |
apps templates |
каталог шаблонов |
apps install TEMPLATE --project SLUG [--env …] [--name …] |
установить шаблон |
apps import --compose FILE --project SLUG [--env …] [--deploy] |
превратить compose-проект в приложения |
apps registries [--team NAME] [--add HOST --user NAME] [--rm HOST] |
входы в приватные реестры; пароль из терминала, stdin или XVII_REGISTRY_PASSWORD |
apps nodes |
ноды, на которых работают ваши команды |
apps move NODE --project SLUG [--env …] |
перенести окружение проекта на другую ноду |
env
| Команда |
|
env ls |
наборы ваших команд |
env set NAME=VALUE… [--plain] |
задать переменные (секретные, если не --plain) |
env unset NAME… |
удалить переменные |
env run -- COMMAND [ARGS…] |
запустить команду с переменными; файлы — во временной приватной папке |
env pull [--out .env] [--files] [--force] |
записать переменные в файл, а с --files — и файлы с SSH-ключами |
env export [--format dotenv|json|shell] |
вывести переменные |
Все принимают --project ID|SLUG (по умолчанию XVII_PROJECT), --env NAME (по умолчанию XVII_ENV, затем
CI_ENVIRONMENT_NAME) и --team SLUG, если slug проектов повторяются в разных командах.
eval "$(xvii env export --format shell)"
xvii env run --project api --env preview -- go test ./...
notify
| Команда |
|
notify events [-n 20] [--service S] [--severity warning|critical] [--team SLUG] [--type 'deploy.*'] |
недавние события (также ls) |
notify ack SEQ |
подтвердить событие |
notify send TOPIC [MESSAGE] [--title …] [--priority low|default|high|urgent] [--link URL] [--tags a,b] |
отправить в топик; без сообщения — читается из stdin |
notify topics |
топики ваших команд |
notify topic NAME --team SLUG [--description …] [--project ID] |
создать топик |
notify channels |
куда идут ваши уведомления |
tunnel
xvii tunnel PORT|URL
Открывает https://<name>.tunnel.xvii.network для локального порта или адреса до Ctrl-C.
| Флаг |
|
--name NAME |
зарезервированное или любое свободное имя (по умолчанию — случайное) |
--team ID |
команда, которой он принадлежит |
--password PASSWORD |
спрашивать у посетителей пароль |
--inspect |
печатать каждый запрос по мере прихода |
| Команда |
|
tunnel ls |
живые туннели ваших команд |
tunnel names [--reserve NAME] [--release NAME] [--team ID] |
зарезервированные имена |
hooks
| Команда |
|
hooks ls |
эндпоинты ваших команд |
hooks create [--name NAME] [--verify telegram|github|gitlab|stripe] [--secret SECRET] [--team ID] |
создать эндпоинт |
hooks rm ENDPOINT |
удалить эндпоинт и всё, что он принял |
hooks listen ENDPOINT [--forward PORT|URL] |
передавать его запросы на эту машину; ответ возвращается отправителю |
hooks requests ENDPOINT [-n 20] |
что принял эндпоинт |
hooks replay REQUEST [--to listener|forwards|URL] |
отправить принятый запрос ещё раз |
ai
| Команда |
|
ai keys create [--name NAME] [--own] [--models 'claude-*'] [--daily N] [--budget DOLLARS] [--team ID] |
создать ключ, показывается один раз |
ai keys rm KEY |
удалить ключ |
ai usage [--days 30] |
вызовы, токены и стоимость по моделям и ключам |
ai quota [KEY] |
сколько ключ ещё может потратить (ключ из AI_KEY или аргумента) |
ai accounts add PROVIDER |
подключить подписочный аккаунт (суперпользователи) |
share
xvii share FILE…
Загружает файлы и печатает https://share.xvii.network/<code> с QR-кодом.
| Флаг |
|
--ttl 12h|7d|2w|never |
срок жизни (по умолчанию 7d) |
--password PASSWORD |
сначала спросить пароль |
--downloads N |
удалить после N скачиваний |
--e2e |
сквозное шифрование; ключ только во фрагменте ссылки |
--title TITLE, --team ID |
|
| Команда |
|
share paste [FILE] [--lang go] [--e2e] [--ttl …] [--password …] |
поделиться текстом из файла или stdin |
share link URL [--name NAME] [--ttl never] |
короткая ссылка |
share ls |
чем поделились ваши команды |
share rm CODE |
удалить загрузку |
config
| Команда |
|
config flags [--project SLUG] |
флаги проекта и где они включены |
config set FLAG VALUE [--env production] [--project SLUG] |
on, off или значение типа флага |
server
xvii server install
xvii server install [USER@HOST]
Превращает свежий сервер в инстанс по SSH (или машину, на которой запущен, от root). Повторный запуск
безопасен.
| Флаг |
|
--domain DOMAIN |
домен инстанса |
--email EMAIL |
для Let's Encrypt |
--user NAME |
имя первого суперпользователя |
--source URL |
хранилище релизов, из которого ставить (по умолчанию https://xvii.network/releases) |
--yes |
взять флаги и не спрашивать |
Токен Cloudflare берётся из диалога или из XVII_CLOUDFLARE_TOKEN.
xvii server restore
xvii server restore [USER@HOST] --kit FILE
Восстанавливает инстанс на свежем сервере из его бэкапов с набором для восстановления из панели backups.
--source — для версий, которых нет в бэкапе, --yes — не спрашивать.
Сам CLI
| Команда |
|
context [list|use NAME|add DOMAIN|rm NAME] |
инстансы, с которыми работает CLI (также contexts, ctx) |
completion bash|zsh|fish [--install] |
автодополнение для оболочки |
update [--check] [--force] |
поставить версию, которую предлагает инстанс (также upgrade, self-update) |
mcp |
отдать инструменты всех сервисов AI-клиенту через stdio |
version |
напечатать версию |
help [COMMAND…] |
обзор или флаги и примеры команды |
Агент сервера: xvii-node
На control plane и нодах, от root:
| Команда |
|
xvii-node status |
сервисы, версии, здоровье |
xvii-node install SERVICE [VERSION] |
поставить или обновить сервис (по умолчанию — самый новый в хранилище) |
xvii-node import DIR VERSION |
добавить релиз (манифест, бинарники, SHA256SUMS) в хранилище |
xvii-node logs SERVICE [LINES] |
журнал сервиса |
xvii-node host SERVICE [LABEL] |
обслуживать сервис на <LABEL>.<domain> |
xvii-node recover USER |
ссылка для входа от id, когда никто не может войти |
xvii-node token USER NAME [SCOPE] [LIFETIME] |
API-токен для автоматизации |
xvii-node join URL TOKEN [NAME] [MODE] |
подключиться к apps как нода (edge или relay) |
xvii-node leave |
забыть учётные данные ноды |
xvii-node dns URL TOKEN |
отвечать за собственные зоны domains на порту 53 |
xvii-node edge CONTROL_PLANE_IP |
перенаправлять почтовые порты на control plane |
xvii-node serve |
демон (запускается systemd) |