Mecatl: открытая облачно-нативная обвязка для корпоративных AI-агентов
Представьте картину: вы разрабатываете продукты в компании из Fortune 100 и наконец собрали собственную обвязку для AI-агентов. Расходы на токены стали предсказуемее, зависимость от одного вендора уменьшилась, агенты пишут код, автоматизируют рутину и выполняют многошаговые задачи. Звучит отлично. Но затем вице-президент по разработке задаёт неудобный, хотя и совершенно справедливый вопрос: «А как это будет работать не на вашем ноутбуке, а для тысяч инженеров?»
Вот тут обычно и начинается самое интересное. Ответ «пусть каждый установит всё локально» для крупной компании не годится: это хаос с версиями, доступами, логами и контролем. А единый локальный экземпляр на всю организацию — ещё более странная идея. Тысяча разработчиков, делящих один ноутбук? Ну да, почти как очередь за кофе в понедельник утром.
Для корпоративного масштаба нужна среда, которая работает на уже управляемой инфраструктуре, поддерживает прозрачное развертывание и не превращает эксплуатацию агентов в отдельный цирк. Поэтому обвязка должна быть облачно-нативной и открытой. Именно таким проектом стал Mecatl: команда переработала архитектуру вокруг идентификации, отделила контур управления от выполнения и открыла исходный код.
Что такое Mecatl
Mecatl — открытая облачно-нативная обвязка для AI-агентов, написанная на Go и распространяемая по лицензии Apache-2.0. Это не монолитный фреймворк с единственно «правильным» способом работы. Скорее набор компонентов, которые можно подключать по отдельности: агентный цикл, изолированную среду выполнения, адаптеры поставщиков моделей и механизм идентификации вызовов инструментов.
Разработчик собирает ровно ту обвязку, которая нужна конкретному продукту, запускает её локально либо в Kubernetes и при желании читает каждую строку кода, управляющую агентом. Такой подход особенно полезен там, где нужна разработка AI-агентов для бизнеса: с понятной эксплуатацией, переносимостью и контролем, а не с очередным закрытым «магическим» слоем.
Крейг Маклаки, CEO Stacklok, и Джо Беда, CTO компании, в своё время участвовали в создании Kubernetes как платформы для платформ. Mecatl можно условно назвать обвязкой для обвязок: она не диктует единую схему, а даёт детали, из которых команды строят собственную.
Обвязка как обычная рабочая нагрузка
Если команда умеет запускать контейнеры в Kubernetes, она уже почти умеет запускать Mecatl. Не требуется осваивать отдельную проприетарную платформу хостинга агентов, специальный планировщик или загадочную среду выполнения, за которой потом приходится присматривать в полночь. Если своего кластера и мониторинга в компании пока нет, начинать придётся с них — настроим инфраструктуру, на которой агент запускается как обычный сервис, с мониторингом и резервными копиями.
Обвязка на Mecatl упаковывается как обычный сервис Go и развертывается как любая другая рабочая нагрузка. Логи уходят в привычное хранилище, метрики отображаются на существующих дашбордах, а для диагностики подходят знакомые инструменты — например, kubectl. Кластер уже умеет масштабировать и обслуживать приложения; изобретать для агента отдельный велосипед не нужно.
При этом Kubernetes не является обязательным условием. Для экспериментов Mecatl можно запускать локально: код и компоненты останутся теми же. Kubernetes здесь — целевая среда развертывания, а не клетка, из которой нельзя выйти.
Смена моделей без переделки агентной логики
Модели меняются стремительно: новая сильная версия появляется чуть ли не каждые несколько недель. Если каждая миграция требует переписать весь агентный контур, команда либо будет тратить время на бесконечный ремонт, либо постепенно отстанет. Оба варианта так себе.
В Mecatl поставщик модели скрыт за интерфейсом. Агентный цикл взаимодействует именно с ним, а выбор модели, облака или провайдера определяется конфигурацией. Можно переключаться между ведущими лабораториями, запускать открытую модель в собственном кластере или параллельно сравнивать двух поставщиков. Сам цикл при этом не меняется.
Это важная часть зрелой архитектуры AI-агентов: бизнес-логика не должна быть намертво пришита к одному API или одному поставщику LLM. Написали один раз — и не обязаны собирать всё заново после каждого громкого релиза модели.
Агентный цикл и песочница — разные контуры
Это один из центральных архитектурных принципов Mecatl. Во многих обвязках процесс, принимающий решения, и среда, исполняющая эти решения, фактически совпадают. Тогда shell-команда или сгенерированный агентом код запускаются рядом с учётными данными, файловой системой и сетевым доступом. Каждый вызов инструмента в такой схеме — маленькая ставка на удачу.
Mecatl разделяет эти зоны. Агентный цикл в контуре управления определяет, что нужно сделать, а выполнение происходит в отдельной изолированной среде за границей доверия. Сгенерированный код и произвольные вызовы инструментов исполняются в песочнице; цикл получает только результаты. Это не просьба модели «вести себя хорошо», а ограничение, которое обеспечивает сама среда выполнения.
На практике агент может исполнить только что созданный им код, не получая прямого доступа к секретам или критичным внутренним системам. Подобное разделение — основа для безопасности AI-агентов, особенно когда агенты подключены к инструментам, корпоративным данным и внешним API.
Подключайте только нужные компоненты
У фреймворков обычно есть собственное мнение о том, как следует строить агента. Вместе с ними команда получает чужие абстракции, формат конфигурации и готовую картину мира — даже если она плохо подходит задаче. Идентификация нередко прикручивается в конце, как багажник к болиду.
Mecatl устроен иначе: это библиотека компонентов. Для чат-бота достаточно агентного цикла и адаптера модели. Для работы с недоверенным кодом добавляется песочница. Если требуется понимать, какой конкретно вызов инструмента выполнил действие, идентификация уже предусмотрена в основании системы. Лишнее подключать не придётся.
Поскольку Mecatl написан на Go, собранная обвязка компилируется в единый статический бинарный файл. Что импортировали, то и поставляете. Без фокусов.
Трассировка действий до отдельного вызова инструмента
У каждого действия агента Mecatl есть собственная идентичность — вплоть до конкретного вызова инструмента. Это не мелочь, а вполне практичная вещь.
Представьте: два часа ночи, агент выполнил сорок вызовов инструментов, и один из них привёл к ошибке. Без идентификации на уровне вызова остаётся перебирать перемешанные логи, строить догадки и надеяться, что нужная строка не затерялась. С Mecatl действие можно однозначно связать с агентом, инструментом, временем запуска и результатом. Отладка перестаёт быть археологическими раскопками.
Такая наблюдаемость помогает и командам аудита: результаты проще передавать на проверку, связывать с политиками доступа и использовать в процессах AI compliance и соответствия требованиям. А открытый код позволяет проверить, как именно принимаются и применяются ограничения. Чёрного ящика между командой и собственной обвязкой нет.
Начало работы
brew install stacklok/tap/mecatl
mecatui --version
mecated --version
Далее краткое руководство поможет начать работу с настольным CLI, облачным интерфейсом и оператором Kubernetes. В документации Mecatl описаны компоненты платформы, а исходный код опубликован на GitHub.
Что дальше
Mecatl пока находится на ранней стадии и развивается открыто. Проект входит в более широкую работу Stacklok над альтернативой вертикально интегрированным агентным стекам — вместе с ToolHive, открытой платформой для MCP.
Если подход вам близок, изучите сайт и документацию Mecatl, поставьте звезду репозиторию, присоединяйтесь к сообществу в Discord и попробуйте собрать что-нибудь своё. Самое любопытное обычно начинается именно после установки.
Если собирать такую обвязку своими силами некогда, соберём агентную обвязку под ваш продукт — с изолированным выполнением кода, сменными моделями и журналом каждого вызова инструмента.
Источник: stacklok.com
