@airlok/cli

中文文档
0.7.6发布于 2026/11/04ES Module零依赖近 30 天下载 3143

Публикация проекта на хостинге Airlok из терминала, подключение своего сервера и ИИ-агентов: npx @airlok/cli setup

原始使用文档
文档目录10 节
  1. ИИ-агенты: один раз и навсегда
  2. Свой сервер: одна команда с вашего компьютера
  3. Устройства: доступ к серверам по SSH
  4. Как это работает
  5. Проверка проекта
  6. Переменные окружения
  7. Свой домен на своём сервере
  8. Флаги
  9. CI и ИИ-агенты
  10. Разработка

@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 смотрит, сколько на сервере неустановленных обновлений системы, и в терминале предлагает их поставить; без терминала (ИИ-агент, скрипт) сообщает об этом и пишет сводку в os_updates в --json. Поставить позже: server upgrade <имя>, перезагрузить, если нужно: server reboot <имя>. Сам CLI ничего не ставит и не перезагружает.
  • Повторный запуск безопасен: если прошлая попытка не дошла до конца, CLI продолжит её с тем же сервером.
  • Ключ, с которым CLI зашёл на сервер, становится устройством в дашборде (имя — по компьютеру): там видно, у кого есть доступ к серверу, и там же его закрывают.

Нужен OpenSSH-клиент: на macOS и Linux он есть, на Windows 10/11 — тоже (PowerShell).

Устройства: доступ к серверам по SSH

npx @airlok/cli device add --name "Рабочий макбук" --server prod,stage
npx @airlok/cli device list

device add берёт открытый ключ этого компьютера (~/.ssh/id_ed25519.pub или другой найденный, --key — свой файл .pub) и добавляет его в «Устройства» дашборда. Агент кладёт ключ в authorized_keys root на отмеченных серверах за несколько секунд; галочки, отключение и удаление устройства — в дашборде. Закрытый ключ CLI не читает. Если ключ уже добавлен, --server просто открывает ему ещё серверы.

Как это работает

  1. login печатает ссылку с кодом. Откройте её, сверьте код и нажмите «Разрешить» — CLI получит токен с правом публиковать. Токен лежит в ~/.config/airlok/config.json, его видно и можно отозвать в дашборде: Настройки → токены.
  2. deploy спрашивает, в какое приложение публиковать (или создаёт новое), и запоминает выбор в .airlok/project.json внутри папки. Дальше хватает npx @airlok/cli deploy.
  3. Папка пакуется в архив. В git-репозитории берутся файлы по .gitignore; node_modules, .git, .env* (кроме .env.example) и сборки не уходят никогда — Airlok соберёт проект сам. Предел архива — 50 МБ.
  4. 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.

版本与发布记录

@airlok/cli 共发布 19 个版本,首次发布于 2026/10/26;过去 12 个月发布了 19 个版本。

版本发布日期距今
0.7.6latest2026/11/043 天前
0.7.52026/11/044 天前
0.7.42026/11/035 天前
0.7.32026/11/035 天前
0.7.22026/11/035 天前
0.7.12026/11/025 天前

关于 @airlok/cli 的常见问题

@airlok/cli 是什么?

Публикация проекта на хостинге Airlok из терминала, подключение своего сервера и ИИ-агентов: npx @airlok/cli setup

如何安装 @airlok/cli?

在项目目录运行 npm install @airlok/cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 airlok,可以用 npx airlok 直接运行。

@airlok/cli 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/airlok__cli 是否存在。

@airlok/cli 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@airlok/cli 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.17。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@airlok/cli 可以商用吗?

@airlok/cli 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@airlok/cli 的下载量有多少?

根据 npm 官方下载统计,@airlok/cli 在 2026/10/05 – 2026/11/03 这 30 天内被下载 3,143 次,日均约 105 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@airlok/cli 还在维护吗?

最新版本 0.7.6 发布于 2026/11/04(3 天前);至今共发布 19 个版本,其中过去 12 个月发布了 19 个;首次发布于 2026/10/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。