Справочник по CLI
CLI cradle — тонкий HTTP-клиент для cradle-server, конфигурация и полный каталог команд.
CLI cradle — это тонкий HTTP-клиент, который общается с cradle-server. Он
никогда не работает с базой данных напрямую и не загружает runner-модели —
каждая команда делает HTTP-запрос к admin API.
cradle <subcommand>Файл конфигурации
Конфигурация хранится в ~/.cradle/cli-config.json (переопределить можно через
$CRADLE_CONFIG_DIR):
{
"servers": {
"default": { "url": "http://127.0.0.1:31416", "apiKey": "ck_live_…" },
"production": { "url": "https://cradle.company.local", "apiKey": "ck_live_…" }
},
"currentServer": "default",
"currentProject": "personal"
}cradle login --url <url> --key <key> [--name <profile>] записывает сервер,
делает его текущим и проверяет /admin/health. cradle servers list / use / remove переключают профили.
Переключение проекта
Каждый запрос несёт X-Cradle-Project: <currentProject> из конфига.
cradle projects use <slug> обновляет этот заголовок локально. Admin-ключи
могут переключать привязку; scoped-ключи должны использовать свой проект (сервер
вернёт 403 при несоответствии).
Режимы вывода
--json превращает любую команду в чистый JSON-поток для jq:
cradle agents execute <id> --text "ping" --json | jq '.replies[0].text'
cradle keys list --json | jq '.[] | select(.scopes | contains(["admin:*"]))'
cradle models list --json | jq '.system.totalRamGb'Без --json вывод — цветная, выровненная текстовая таблица.
Каталог команд
cradle init # сохранить конфиг + проверить health
cradle login # сохранить credentials сервера
cradle servers # list / use / remove
cradle server init # bootstrap headless cradle-server (systemd, operator-driven)
cradle server package # собрать deployable zip для целевого Linux-хоста
cradle remote show # конфигурация удалённой GPU-ноды
cradle remote set # настроить удалённую GPU-ноду (без SSH-push)
cradle remote pool probe # проверить здоровье всех нод пула
cradle remote pool plan # план autoscaler (operator-driven, без исполнения)
cradle tenants list # реестр тенантов на одном хосте
cradle tenants create <id> # bootstrap нового тенант-инстанса
cradle tenants start <id> # systemctl start cradle-server-<id>
cradle tenants stop <id> # systemctl stop cradle-server-<id>
cradle tenants credentials <id> # показать client-credentials.json для тенанта
cradle health # probe /admin/health
cradle projects list # все проекты на сервере
cradle projects create <slug> [--name --description]
cradle projects use <slug> # локально — отправит X-Cradle-Project в следующем вызове
cradle agents list # отфильтровано по текущему проекту
cradle agents show <id>
cradle agents execute <id> --text "…" # one-shot, возвращает {replies:[…]}
cradle agents create --template <slug> # использует встроенные шаблоны агентов
cradle kb list # базы знаний в текущем проекте
cradle models list # каталог + установленные + вердикт совместимости
cradle models list --recommended # топ OpenLLM Leaderboard
cradle models check <catalogId> # hardware-вердикт для одной модели
cradle models pull <catalogId> # скачивание через SSE
cradle keys list # все API-ключи (plaintext не показывается)
cradle keys create --name … --scopes a:b,c:d --project <id> # plaintext показывается ОДИН РАЗ
cradle keys revoke <id> # soft delete
cradle tickets list [--status pending]
cradle tickets show <id>
cradle channels list # отфильтровано по текущему проекту
cradle completion bash # скрипт автодополненияКоманды записи отказываются корректно, если endpoint ещё не реализован: они
печатают not implemented … (Phase N+) и выходят с кодом 2 — никогда без
молчаливого no-op.
Server bootstrap (cradle server init)
Это оператор-driven способ развернуть headless cradle-server на удалённой
машине (jump-host / закрытый контур). CLI никогда не пушит по SSH; оператор
запускает команду на целевом сервере.
# на целевом сервере от root:
cradle server init \
--data-dir /var/lib/cradle/tenant-a \
--port 31416 \
--bind 0.0.0.0 \
--service-name cradle-server-tenant-aКоманда создаёт data directory, bootstrap SQLite БД и первый admin:* ключ,
пишет и активирует systemd-unit, ждёт /admin/health и записывает
client-credentials.json (mode 0600) в data directory. Повторный запуск в той
же data directory идемпотентен.
Ключевые флаги
| Флаг | По умолчанию | Назначение |
|---|---|---|
--data-dir | /var/lib/cradle | SQLite, модели, credentials |
--port | 31416 | порт HTTP API |
--bind | 0.0.0.0 | bind host (127.0.0.1 только локально) |
--user | cradle | OS-пользователь systemd-сервиса |
--service-name | cradle-server | имя systemd-unit |
--skip-systemd | false | только bootstrap БД, без сервиса |
--dry-run | false | вывести план, не трогая систему |
--scopes | admin:* | scopes для сгенерированного client-ключа |
Dev / non-systemd режим
cradle server init --data-dir /tmp/cradle-test --skip-systemdЭто делает bootstrap БД и записывает admin-ключ в client-credentials.json, не
запуская сервис. Сервер вручную стартует через cradle-server --data-dir /tmp/cradle-test.
Удалённый GPU (cradle remote)
Настройте удалённую llama.cpp / vLLM-ноду без пуша команд с клиента.
cradle remote set только сохраняет конфигурацию; фактические SSH-команды
выводятся для оператора, чтобы он запустил их на jump-хосте.
cradle remote set \
--host gpu-1.local --user cradle \
--ssh-key-path /root/.ssh/gpu-1 \
--remote-port 8080 --model-path /models/qwen3-8b.gguf
cradle remote showДля нескольких нод cradle remote pool probe делает health-check каждой ноды, а
cradle remote pool plan печатает план scale-up / scale-down с командами для
оператора. Autoscaler сам никогда не исполняет SSH или облачные API-вызовы.
Bash completion
cradle completion bash > /usr/local/etc/bash_completion.d/cradle
# или для пользователя:
cradle completion bash >> ~/.bashrcСкрипт покрывает top-level команды и один уровень subcommand.