@airlok/cli
v0.5.0
Published
Выкатка проекта на хостинг airlok из терминала, подключение своего сервера и ИИ-агентов: npx @airlok/cli setup
Readme
@airlok/cli
Выкатка папки проекта на хостинг airlok из терминала — без GitHub и без своего сервера. И подключение своего сервера одной командой, не заходя на него.
npx @airlok/cli login # вход через браузер
npx @airlok/cli deploy # собрать и выкатить текущую папкуНужен Node.js 18.17 или новее. Устанавливать ничего не нужно: npx скачает CLI сам.
ИИ-агенты: один раз и навсегда
npx @airlok/cli setupКоманда входит в airlok (если ещё не вошли) и подключает найденных агентов — Claude Code, Codex, Antigravity, Cursor:
- прописывает им MCP-сервер airlok с вашим токеном — через него агент видит приложения, статус и лог сборки, логи, переменные, базу, домены и настройки;
- кладёт навыки:
airlok— как выкатывать, разбирать упавшую сборку, проверять сайт и что нельзя делать без вашей просьбы;airlok-yml— как подготовитьairlok.ymlпроекта с полным списком переменных окружения и их описаниями.
После перезапуска агента достаточно сказать «выкати на airlok» или «почему сайт отдаёт 500». Выбрать агентов:
--agents claude,codex, без вопросов: --yes. Повторный запуск ничего не дублирует; прежние файлы настроек остаются
рядом с суффиксом .airlok-backup. Токен хранится в файлах настроек агентов открытым текстом, отозвать его можно в
дашборде: Настройки → токены.
Свой сервер: одна команда с вашего компьютера
npx @airlok/cli server connect root@IP-СЕРВЕРА --letsencryptЗаходить на сервер не нужно: CLI заводит его в дашборде, ставит airlok по SSH (Docker, nginx, файрвол, агент) и ждёт, когда агент выйдет на связь. То же можно поручить ИИ-агенту — промпт для него есть в дашборде: Серверы → «Добавить».
- Если сервер ещё не пускает по ключу, CLI создаёт ключ
~/.ssh/airlok_ed25519и кладёт его на сервер. Пароль от сервера спрашивает сам ssh — один раз и только в настоящем терминале; ИИ-агент попросит вас выполнить команду у себя. - Токен агента CLI получает под вашим входом и передаёт на сервер через stdin ssh: он не печатается и не попадает в промпт ИИ-агента.
--ssh-keys-onlyзакрывает вход по паролю; CLI сам проверяет вход по ключу новым соединением и подтверждает его.--name— имя в дашборде (по умолчанию — адрес),--port— порт SSH,--email— почта для Let's Encrypt,--json— итог одной строкой. Пользователь не root должен иметь sudo без пароля.- Повторный запуск безопасен: если прошлая попытка не дошла до конца, CLI продолжит её с тем же сервером.
Нужен OpenSSH-клиент: на macOS и Linux он есть, на Windows 10/11 — тоже (PowerShell).
Как это работает
loginпечатает ссылку с кодом. Откройте её, сверьте код и нажмите «Разрешить» — CLI получит токен с правом выкатывать. Токен лежит в~/.config/airlok/config.json, его видно и можно отозвать в дашборде: Настройки → токены.deployспрашивает, в какое приложение выкатывать (или создаёт новое), и запоминает выбор в.airlok/project.jsonвнутри папки. Дальше хватаетnpx @airlok/cli deploy.- Папка пакуется в архив. В git-репозитории берутся файлы по
.gitignore;node_modules,.git,.env*(кроме.env.example) и сборки не уходят никогда — airlok соберёт проект сам. Предел архива — 50 МБ. - CLI показывает этапы сборки и в конце печатает адрес сайта. Если сборка упала — причину и конец лога; код выхода тогда 1.
Проверка проекта
npx @airlok/cli check [папка] [--json]Показывает, что airlok сделает с проектом, ничего не собирая: стек, команды установки, сборки и запуска, адрес проверки,
базу, загрузки и все переменные окружения — и что помешает выкатке, включая опечатки в airlok.yml. Папка пакуется так
же, как для deploy, проверяется на сервере airlok тем же кодом, что и сборка, и сразу удаляется. Код выхода 1 — с
такими файлами выкатка не пройдёт.
Подсказки в редакторе даёт схема — первая строка airlok.yml:
# yaml-language-server: $schema=https://raw.githubusercontent.com/airlok-sh/airlok/main/schema/airlok.schema.jsonПеременные окружения
npx @airlok/cli env list --app shop # имена, без значений
npx @airlok/cli env set OPENAI_API_KEY --app shop # значение спросит, не показывая на экране
printf %s "$VALUE" | npx @airlok/cli env set OPENAI_API_KEY --app shop # или из stdin
npx @airlok/cli env set --app shop --from .env # все переменные из файла
npx @airlok/cli env rm OPENAI_API_KEY --app shopУ приложения на своём сервере значения шифруются здесь, на вашем компьютере, под ключ агента этого сервера: airlok
хранит только шифротекст и прочитать его не может. CLI печатает отпечаток ключа — тот же агент пишет в журнал сервера
(journalctl -u airlok-agent | grep ключ). На сервер значения попадут при следующей выкатке. У приложения на хостинге
их шифрует дашборд, и они применяются со следующего запроса к сайту. Если имя приложения есть на нескольких серверах —
--app <сервер>/<имя>, хостинг — hosting/<имя>.
Свой домен на своём сервере
npx @airlok/cli domain add shop.example.ru --app shop # подключить или заменить: покажет A-запись на IP сервера
npx @airlok/cli domain check --app shop # проверить DNS сейчас
npx @airlok/cli domain show --app shop # что с доменом
npx @airlok/cli domain rm --app shop # отключитьУ регистратора заводится A-запись домена на IP сервера; airlok проверяет её сам каждую минуту. Когда DNS указывает на
сервер, домен включается следующей выкаткой и главнее app.domain в airlok.yml. На хостинге свои домены подключаются
в дашборде или через ИИ-агента.
Флаги
| Флаг | Что делает |
| --- | --- |
| --app <имя> | выкатить в существующее приложение |
| --new <имя> | создать приложение и выкатить |
| --title <текст> | название выкатки; по умолчанию — последний коммит |
| --no-wait | не ждать конца сборки |
| --json | итог одной строкой JSON: удобно для скриптов и ИИ-агентов |
CI и ИИ-агенты
Без браузера CLI работает с токеном из переменной окружения:
AIRLOK_TOKEN=airlok_pat_… npx @airlok/cli deploy --app shop --jsonТокен с правом выкатывать создаётся в дашборде: Настройки → токены. AIRLOK_URL задаёт адрес дашборда, если он не https://app.airlok.ru.
Разработка
npm testЗависимостей нет: только стандартная библиотека Node.js.
