Relay,встроенный в бинарник
cmdop server — это relay, к которому подключается ваш флот, и он поставляется внутри того же подписанного бинарника, что и агент, и веб-интерфейс. Запустите `cmdop server`, направьте на него свои машины: агенты дозваниваются наружу (никаких входящих портов, дружелюбно к NAT), клиенты дотягиваются до них по HTTP и WebSocket.
Один бинарник — это хребет
Нет кластера, который нужно поднимать. Relay, веб-консоль и агент — один подписанный бинарник: запустите его, и вся плоскость поднимается целиком. Агенты говорят на gRPC; клиенты — на HTTP и WebSocket; всё ограничено флотом и проходит аудит.
HTTPПоверхность для клиентов — аутентификация, presence, чтение машин и флотов, плюс встроенная веб-консоль, всё обслуживается одним бинарником.
gRPCТранспорт агентов. Машины дозваниваются наружу и держат двунаправленный стрим — здесь текут терминал, выполнение и файловые операции, даже на loopback.
WebSocketPush-канал поверх HTTP. Стримит живой вывод, presence и события подключённым клиентам — десктопу и любому браузеру.
tunnelsДотянитесь до сервиса за машиной, не открывая порт в интернет — машина дозванивается наружу, а relay маршрутизирует ответ обратно.
schedulerНадёжные расписания, отложенные задачи и обслуживание выполняются внутри бинарника — ни отдельного воркер-процесса, ни очереди, которой нужно управлять.
orchestratorКоординатор флота (Jarvis) работает как in-process goroutine, который присоединяется к relay как виртуальная машина и координирует флот.
Контракт gRPC живёт в proto/agentv1 (cmdop.agent.v1) и является единственным источником истины — стабы Go-агента генерируются из него.
Посмотрите на relayизнутри
Каждый скриншот ниже — это настоящая админ-консоль cmdop server, поверхность оператора, которую вы получаете, когда хостите relay у себя.
Агенты дозваниваются наружу.Никаких входящих портов.
Каждая машина открывает исходящий gRPC-стрим к relay и остаётся доступной через него — нет порта для прослушивания, который нужно выставлять, нет дыры в файрволе, нет NAT-traversal для присмотра. Relay маршрутизирует сообщения между агентами и клиентами; машины никогда не принимают входящие соединения.
Изоляциядля каждого клиента
Каждый аккаунт получает собственный relay-домен, выделенный именно вашему флоту — терминация TLS и маршрутизация, которые не разделяются ни с одним другим клиентом. Presence, аудит и история остаются внутри вашего флота; ничего не маршрутизируется через границы тенантов.
Координатор,живущий в relay
Jarvis — это серверный AI-агент, который присоединяется к relay как виртуальный пир-машина. Ограниченный флотом и всегда включённый, он может дотянуться до других агентов — спросить одного, разослать многим — и координировать работу по всему флоту, без чего-либо запущенного на вашей собственной машине.
OpenAI-совместимыйшлюз на /v1
Relay выставляет инференс на /v1 — chat completions, эмбеддинги и модели — говоря в формате OpenAI. Сервер держит ключи провайдеров и маршрутизирует по флотам со spend и квотами, так что агенты получают один эндпоинт с bearer-аутентификацией вместо кучи вендорских credential.
Запустите relay сами
Relay — это не отдельный сервис, который нужно разворачивать: это тот же подписанный бинарник, который вы устанавливаете везде. Установите cmdop, запустите `cmdop server` и направьте на него свои машины. Одна команда поднимает relay, веб-консоль и координатор вместе.
Ни кластера, ни compose-файла: `cmdop server` — это один процесс, который обслуживает HTTP (:63141) и gRPC (:63142) и запускает координатор как in-process goroutine. Поставьте перед ним свой обратный прокси, когда вам нужны TLS и стабильный адрес.
Запустите хребет флотасамостоятельно
Поднимите relay, направьте на него своих агентов и владейте всей плоскостью от края до края.





