soulctl
Клиентский CLI оператора — тонкая обёртка над Operator API Keeper-а. Первичный интерфейс оператора — OpenAPI и MCP; soulctl — удобный CLI поверх тех же HTTP-эндпоинтов, не отдельный протокол.
Аутентификация
Заголовок раздела «Аутентификация»soulctl работает от имени оператора (Archon) по JWT. Credentials хранятся в ~/.config/soul-stack/credentials.yaml (два поля: keeper_url и токен оператора):
soulctl archon login # сохранить keeper_url + JWT (валидируется ping-ом)soulctl archon whoami # текущий AID + permissions из claims токенаsoulctl archon logout # удалить credentials.yamlkeeper_url указывает на Operator API Keeper-а (HTTP-listener, по умолчанию порт 8080). Глобальные флаги: --output table|json|yaml (-o) и --config (путь к альтернативному credentials-файлу).
Группы команд
Заголовок раздела «Группы команд»soulctl собран из семи верхних групп:
| Группа | Назначение |
|---|---|
incarnation | операции над инкарнациями (runtime-инстансами сервисов) |
souls | операции над управляемыми душами |
soul | одиночные действия на конкретном агенте |
errand | реестр одиночных задач (Errand): list / get / cancel |
archon | аутентификация и идентичность оператора |
push-providers | управление параметрами SSH-плагинов push-режима |
run | запуск scenario / ad-hoc cmd / push с универсальным таргетингом |
incarnation
Заголовок раздела «incarnation»soulctl incarnation list # перечислить инкарнацииsoulctl incarnation get <name> # spec / state / status / covenssoulctl incarnation run <name> <scenario> # запустить scenario на инкарнацииsoulctl incarnation history <name> # история изменений состоянияsoulctl incarnation check-drift <name> # проверка drift инкарнацииsouls / soul
Заголовок раздела «souls / soul»soulctl souls list # перечислить зарегистрированных агентовsoulctl souls get <sid> # показать агента по SIDsoulctl souls ssh-target set <sid> ... # per-host SSH-реквизиты push-режимаsoulctl souls ssh-target bulk-set ... # массовая привязка SSH-провайдера в Covensoulctl soul exec <sid> ... # одиночный модуль на конкретном агенте (Errand)soulctl errand list # перечислить Errand-ы с фильтрамиsoulctl errand get <errand_id> # состояние Errand-аsoulctl errand cancel <errand_id> # отменить in-flight Errandpush-providers
Заголовок раздела «push-providers»soulctl push-providers create <name> ... # создать запись Push-Provider-аsoulctl push-providers list # перечислитьsoulctl push-providers get <name> # прочитатьsoulctl push-providers update <name> ... # заменить params (replace-семантика)soulctl push-providers delete <name> # удалитьЗонтик для батчевых прогонов с единым таргетингом:
soulctl run scenario <service>/<scenario> # батчевый scenario-прогон над инкарнациямиsoulctl run cmd '<command>' # ad-hoc shell-команда на N хостовsoulctl run push <destiny@ref> # push-применение destiny через SSH-провайдерОбработка ошибок
Заголовок раздела «Обработка ошибок»soulctl приводит HTTP-ошибки Operator API к понятной форме: 401 → подсказка soulctl archon login, 403 → отсутствие permission, 404 → not found, 5xx → keeper error.
Установка
Заголовок раздела «Установка»soulctl deb/rpm-пакетом не поставляется. Берётся из релизного исполняемого файла или сборки (make build). См. Из бинарных релизов и Из исходников.