Публичный Docker-репозиторий

Превратите любой контейнер в машину Cmdop.

Две строки в Dockerfile, который у вас уже есть. Ваше приложение остается PID 1, агент едет рядом.

A Docker deployment contains the CMDOP relay, editable project files and Git history while remote machines connect outbound
Dockerfile
FROM your-image                                    # unchanged
COPY --from=markolofsen/cmdop:latest /cmdop /usr/local/bin/cmdop
ENTRYPOINT ["cmdop", "sidecar", "--"]
CMD ["your-app", "--your", "flags"]                # unchanged

Базовый образ и команда остаются прежними.

Cmdop поставляется одним бинарником.

Управляющий слой приезжает вместе с контейнером, а не ждет его где-то отдельно.

  • Никакого сервера базы данных
  • Никакого Redis
  • Никакого брокера сообщений
  • Никакого бэкенд-сервиса
  • Никакого веб-приложения рядом

Скопируйте один файл в образ. Тот же бинарник — это и агент машины, и relay, к которому подключаются другие машины, и браузерная консоль, и хост терминала, и AI-рантайм: все зависит только от того, как вы его вызовете.

Единая система продуктов

Начните с одной машины. Вырастите до флота.

Агент на контейнер, а не демон на хост.

Один общий агент на хосте накапливает операционное состояние всех контейнеров, требует доступа к каждому из них и сам становится инфраструктурой. Агент, который едет внутри образа, — нет.

Область
Демон на хосте: Все контейнеры на машине
Cmdop в контейнере: Только свой контейнер и ничего больше
Доступ
Демон на хосте: Docker-сокет или привилегии хоста
Cmdop в контейнере: Только то, что уже есть у контейнера
Жизненный цикл
Демон на хосте: Устанавливается, обновляется и мониторится отдельно
Cmdop в контейнере: Стартует и останавливается вместе с контейнером
Операционное состояние
Демон на хосте: Общее для всего, чем он управляет
Cmdop в контейнере: Изолировано в каждом контейнере
Масштабирование
Демон на хосте: Один агент должен успевать за всем флотом
Cmdop в контейнере: Управляемость реплицируется вместе с образом

Контейнером по-прежнему владеет ваш процесс.

cmdop sidecar запускает агента в фоне, а затем делает exec вашей команды. Ваше приложение становится PID 1, поэтому docker stop, сигналы, коды выхода и политики перезапуска работают ровно так же, как раньше.

Docker starts the cmdop sidecar entrypoint, which execs the application so it runs as PID 1 and receives SIGTERM directly, while the Cmdop agent runs beside it in the background and connects outbound to a relay elsewhere

PID 1 — ваш

Агент — фоновый дочерний процесс. Docker шлет сигналы напрямую вашему процессу, и его код выхода становится кодом контейнера.

Сбой агента — это не простой

Если агент не смог стартовать или не достучался до relay, ваше приложение продолжает работать. Без заданного join key sidecar — это обычный exec.

Только исходящие

Контейнер сам звонит в relay. Ни один входящий порт не открывается, и правила ingress не нужны.

Любой базовый образ

Бинарник не линкуется с libc, поэтому Alpine, Debian, distroless и scratch работают одинаково.

Что умеет машина, как только подключится.

Терминал

Откройте shell внутри работающего контейнера из браузера, CLI или телефона.

Доступ к файлам

Читайте, сравнивайте и правьте файлы внутри контейнера в пределах директории, на которую вы указали агенту.

AI-операции

Попросите агента изучить, изменить, запустить или отладить то, что внутри контейнера.

Удаленный запуск

Выполняйте команды и передавайте работу между машинами с любой поверхности Cmdop.

Сначала контейнер, потом флот.

Тот же образ работает на ноутбуке, в Compose и везде, где вы уже запускаете контейнеры. Поднимите пятьсот штук — получите пятьсот независимых агентов, потому что управляемость есть свойство образа, а не то, что разворачивают рядом.

  1. Один контейнер
  2. Одна машина во флоте
  3. Флот, которым можно управлять

Дальше — join key вашего флота.

Соберите образ и передайте адрес relay и join key переменными окружения. Машина появится во флоте при старте, и настраивать больше нечего.

В публичном репозитории лежит Dockerfile на пятнадцать строк поверх обычного Node-приложения: переменные, что каждая из них предотвращает, и контейнер, который можно запустить прямо сейчас.

Inside the Docker deployment, an editable project folder flows into verified output and then into Git history
Демо-стенд

Увидьте весь цикл, прежде чем решаться.

Публичное демо намеренно устроено сложнее: оно поднимает собственный relay, монтирует записываемый проект и запускает dev-сервер — так что вы видите, как агент правит настоящее приложение и как изменение попадает в историю Git.

Оно показывает, на что Cmdop способен целиком. Добавить агента в контейнер, который у вас уже есть, по-прежнему две строки.

Две строки — и контейнер в ваших руках.

Добавьте бинарник в образ, который вы уже поставляете, или склонируйте пример и посмотрите, как машина подключается.