Одно Go-ядро, тонкие типизированные клиенты
Аутентификация, стриминг, повторы и сопоставление ошибок написаны один раз в Go и переиспользуются каждым клиентом. Новый язык — это тонкий типизированный слой, а не полный порт.
Единая система продуктов
Начните с одной машины. Вырастите до флота.
Управляйте флотом из кода через Python и Node клиенты для команд машин, задач с агентами, потокового вывода и ботов.
Управляйте флотом из кода через Python и Node клиенты для команд машин, задач с агентами, потокового вывода и ботов.
Каждая платформа уже внутри одного wheel и одного npm-пакета — не нужно ставить агент cmdop, нет нотаризации и отдельных загрузок под платформу. Резолвер во время запуска сам берёт нужную сборку для хоста.
Python — PyPI
Node — npm
cmdop 1.1.1 на PyPI · @cmdop/sdk 1.1.0 на npm
Главная операция стримит AI-агента машины через relay и отдаёт чистый async-итератор с живым выводом, завершением, ошибками и запросами подтверждения.
Аутентификация, стриминг, повторы и сопоставление ошибок написаны один раз в Go и переиспользуются каждым клиентом. Новый язык — это тонкий типизированный слой, а не полный порт.
Все пять платформенных бинарников едут внутри одного fat wheel и одного npm-пакета. Конечным пользователям достаточно pip install или npm i — без агента cmdop, без optionalDependencies, без нотаризации Gatekeeper.
Управляйте флотом из кода через Python и Node клиенты для команд машин, задач с агентами, потокового вывода и ботов.
Стримьте AI-агента машины как типизированный async-итератор, с запросами подтверждения там, где работа требует разрешения. Та же модель взаимодействия, что в приложении, теперь доступна из скрипта.
Боты для Telegram, Discord и Slack теперь размещены целиком внутри ядра SDK. Запустите бота через client.bots.run(...), и Go-бинарник крутит цикл канала, вызывая machines.ask() на каждое сообщение. SDK поглотил ботов.
Каждая операция relay отражена в обоих клиентах и защищена кросс-языковой проверкой паритета — метод, который есть в одном языке, но отсутствует в другом, валит CI.
machineslist · get · info · spend · ask · messages · active_sessionfleetscrud · members · attach · detachtunnelsopen · close · list · get · sessionsschedulescrud · trigger · runskeyslist · issue · revokeskillslist · install · publishbotsrun · management (Telegram · Discord · Slack)Полный справочник по каждому пространству имён, модели стриминга и обработке ошибок.
Программное ядро, на котором построен каждый другой продукт cmdop. Установите, импортируйте, запускайте.
import asynciofrom cmdop import Clientasync def main():async with Client() as client: # API-токен из окруженияstream = client.machines.ask(machine="work-mbp",prompt="What's eating disk on /var?",)async for frame in stream:if frame.kind == "event":print(frame.text, end="", flush=True)elif frame.kind == "done":breakasyncio.run(main())