Omnigent: единый интерфейс для управления CLI агентами
Узнайте, как работает мета-harness Omnigent для запуска Claude Code, Codex и других инструментов. Инструкция по фиксации версии 0.7.0 и настройке изоляции в VPS среде.
Что такое Omnigent
Omnigent — это open source мета-инструмент оркестрации: единый уровень управления, который запускает уже установленные у вас CLI-инструменты для агентов. Он не заменяет Claude Code, Codex, Cursor, OpenCode, Hermes или Pi. Он запускает их, ставит каждому задачу и контролирует результат в рамках одной сессии с общим набором политик. Databricks опубликовала репозиторий в июне 2026 года под лицензией Apache 2.0, и на главной странице до сих пор указано Status: alpha.
Практическая ценность инструмента невелика, но её стоит сформулировать чётко. Вы описываете агента один раз в формате YAML и указываете инструмент оркестрации, который его запускает. Измените эту единственную строку, и тот же агент будет работать через CLI другого поставщика. В вашей настройке больше ничего не меняется, так как Omnigent управляет циклом над агентами, а не циклом внутри них.
Что такое мета-harness и чем он отличается от фреймворка?
Harness — это программа, которая запускает модель в цикле. Она считывает ваш запрос, вызывает инструменты, редактирует файлы и возвращает результат. Claude Code — это harness. Codex — это harness. Вы устанавливаете его, входите в систему, и он работает самостоятельно.
Фреймворк — это библиотека, на основе которой вы пишете код. Вы импортируете её, определяете шаги на Python, и ваша программа становится агентом. Смена поставщика в этом случае означает редактирование вашего кода, так как клиент поставщика интегрирован непосредственно в вашу программу.
Мета-harness находится на уровень выше обоих этих понятий. Это супервизор, который запускает harness как дочерние процессы. Omnigent запускает CLI поставщика, передает ему задачу и считывает ответ. Вы сохраняете уже установленный CLI, а также все подписки или ключи API (application programming interface), которые вы уже используете для оплаты. В этом заключается вся разница, и именно она определяет целевую аудиторию инструмента: люди, у которых уже работают несколько агентских CLI и которые устали управлять ими по отдельности в каждом терминале.
Какую проблему решает уровень оркестрации?
- Смена поставщика требует изменения одной строки. Определение агента содержит
harnessиmodelв виде данных, поэтому перенос роли от одного поставщика к другому сводится к правке YAML-файла, а не к переписыванию кода. - Проверка может охватывать разных поставщиков. Diff, написанный одной моделью, проверяется моделью другой компании. Две модели из одного семейства часто имеют одинаковые «слепые зоны», поэтому второе мнение от того же поставщика менее ценно.
- Единое место для политик. Лимиты расходов и запросы на подтверждение объявляются в файле агента и применяются ко всем вложенным субагентам.
- Сессия живет дольше любого отдельного инструмента. Один транскрипт охватывает работу, выполненную несколькими CLI, поэтому вы можете просмотреть историю событий, не собирая данные из четырех разных логов терминала.
Цена этого — сам уровень оркестрации. Любая ошибка в Omnigent теперь становится ошибкой, возникающей между вами и агентом, который раньше работал автономно. На стадии alpha это реальная проблема, а не теоретическая.
Место многоагентных систем в ряду инструментов для одного агента
Если вы еще не запускали ни одного агента на сервере, начните с этого. Наше руководство по запуску агента для программирования на VPS полностью описывает работу с одним агентом, и именно такая конфигурация подразумевается в Omnigent. Более широкая область самостоятельно размещаемых ИИ-агентов — это место, где вы выбираете самих агентов, а изучение принципов работы агентов станет лучшей отправной точкой, если используемая здесь терминология вам в новинку.
Omnigent также отличается от уровня коннекторов. Задачи вроде предоставления агентам доступа к вашим источникам данных касаются того, к чему агент может обратиться. Omnigent же определяет, какой агент запускается, в каком порядке и с какими ограничениями. Вы можете использовать оба решения одновременно, так как они не пересекаются.
Что необходимо перед установкой
- Python 3.12 или новее. Опубликованный пакет содержит объявление
requires-python >= 3.12. tmux, так как терминальные инструменты запускаются внутри него.- Минимум один установленный и настроенный CLI от поставщика, в котором выполнен вход в систему.
- Node.js 22 требуется только при сборке из git-репозитория. Колесо (wheel) на PyPI уже содержит собранные веб-компоненты, поэтому для стандартной установки Node.js не нужен.
Установка закрепленного релиза, а не main
curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh -s -- --version 0.7.0Часть sh -s -- — это не декорация. Без неё sh считывает --version как собственную опцию, и установщик никогда не видит этот флаг, поэтому вы получаете самую свежую версию на текущий день. В репозитории, где критические изменения выпускаются каждые несколько недель, это разница между воспроизводимым сервером и неожиданными сбоями.
Установщик использует uv, менеджер пакетов Python от Astral, и предлагает установить uv первым, если он отсутствует. Если uv уже установлен, пропустите скрипт:
uv tool install --force --python 3.12 "omnigent==0.7.0"Дополнительные компоненты (extras) следуют тому же шаблону, и флаг повторяется: --extra e2b --extra kubernetes в скрипте или "omnigent[e2b,kubernetes]" при использовании uv. Обратите внимание, что git-тег — это v0.7.0, тогда как версия пакета на PyPI — 0.7.0.
uv помещает бинарный файл в директорию, которую возвращает uv tool dir --bin, обычно это ~/.local/bin, и установщик предлагает добавить её в профиль вашей оболочки. Если команда не найдена сразу после чистой установки, причина именно в этом. Проверьте, что у вас установлено:
omni upgrade --checkЭта команда сравнивает установленную версию с последней опубликованной и сообщает, доступно ли обновление, не выполняя его. omni и omnigent — это одна и та же программа под двумя разными именами.
Укажите провайдера модели
omni setupМастер настройки ищет учетные данные, уже присутствующие в вашей среде, и запрашивает недостающие. Он поддерживает API-ключи, подписки у вендоров, шлюзы, такие как OpenRouter или Ollama, а также рабочие области Databricks. Если вы уже используете локальный сервер моделей с Ollama на той же машине, укажите шлюз на него, и трафик не покинет пределы сервера.
Минимальный запуск мультиагентной системы
Примеры агентов находятся в репозитории, поэтому клонируйте ту же версию (tag), которую вы установили, а не main.
git clone --depth 1 --branch v0.7.0 https://github.com/omnigent-ai/omnigent.git
cd omnigent
omnigent run examples/polly/Polly — это мультиагентный оркестратор для написания кода, который поставляется вместе с репозиторием. В его конфигурации объявлены субагенты с именами claude_code, codex, opencode, cursor, hermes и pi, а также правило, ради которого стоит запускать этот сценарий: проверку всегда выполняет агент другого поставщика, отличного от того, кто написал код. Polly не пишет код самостоятельно. Он составляет план, разбивает задачу на рабочие элементы, делегирует каждый из них и направляет полученные diff-файлы на проверку агенту другого поставщика.
Перед делегированием задач Polly выполняет предварительную проверку, чтобы определить, какие CLI субагентов присутствуют в системе. Если установлен CLI только одного поставщика, передавать diff некому, поэтому установите как минимум два, прежде чем оценивать результат. Debby, другой пример из комплекта, — это агент для ведения дискуссий с двумя «головами»: Claude и GPT:
omni debbyЭто быстрый способ убедиться, что настроены оба провайдера, так как для работы агента необходимо участие обоих.
Субагенты объявляются как инструменты
Файл агента имеет формат YAML. executor задает среду выполнения (harness), модель и аутентификацию. tools содержит серверы MCP (model context protocol), функции Python и субагенты. Субагент — это инструмент с type: agent и собственным исполнителем, который является механизмом для всего вышеперечисленного.
name: orchestrator
prompt: |
You coordinate coding and review tasks.
executor:
harness: claude-sdk
model: databricks-claude-sonnet-4-6
tools:
coder:
type: agent
prompt: Write and test code.
executor:
harness: claude-sdk
model: databricks-claude-opus-4-7
reviewer:
type: agent
prompt: Review proposed changes.
executor:
harness: claude-sdk
model: databricks-claude-sonnet-4-6omnigent run path/to/my_agent.yamlЭти идентификаторы моделей взяты из примера docs/AGENT_YAML_SPEC.md в проекте и являются именами, размещенными в Databricks. Замените harness и model на значения, которые omni setup настроил на вашей машине. Другие значения среды выполнения в спецификации включают antigravity, copilot, kimi, qwen и acp:<slug> для любого компонента, использующего общий протокол. Спецификация также поддерживает pass_history: true для субагента, что передает ему историю родительского диалога. Это расходует токены при каждой делегации, поэтому не используйте эту опцию для субагентов, которым достаточно только текущей задачи. Программист, чья prompt предписывает внести минимально возможные изменения, передает рецензенту diff, который достаточно короток для реального прочтения; в данном контексте это важнее, чем выбор модели для любой из ролей.
Почему длительную оркестрацию следует запускать на VPS
Работа нескольких агентов не ограничивается двухминутной командой. Планирование, делегирование, ожидание завершения параллельных операций в git worktrees, проверка и внесение правок занимают время. Если закрыть крышку ноутбука, все процессы прервутся. VPS (виртуальный выделенный сервер) работает постоянно и сохраняет сетевое соединение, поэтому сессия продолжается, даже когда вы не следите за ней.
omnigent server --background
omnigent server statusСервер предоставляет веб-интерфейс на порту 6767. omnigent server status сообщает, запущен ли процесс, а omnigent stop завершает его работу. В версиях до v0.7.0 для этого использовалась команда omni server start, которая была удалена, поэтому старые руководства и скриншоты могут не соответствовать тому, что вы видите в терминале.
Не открывайте порт 6767 для доступа из публичной сети. Существует два безопасных способа работы. Первый: оставьте порт закрытым на брандмауэре и перенаправьте его через SSH с помощью ssh -N -L 6767:localhost:6767 you@your-server, после чего откройте веб-интерфейс по адресу http://localhost:6767 на локальной машине. Второй: настройте TLS (transport layer security) перед сервисом и включите аутентификацию:
OMNIGENT_AUTH_ENABLED=1 omnigent server --backgroundНастройка брандмауэра — стандартная задача, описанная в основах работы с ufw на VPS. Если на сервере уже запущены контейнеры за Traefik для нескольких приложений Docker Compose, то Omnigent можно добавить как еще один сервис по той же схеме.
Для развертывания в контейнере в директории deploy/ репозитория находится конфигурация Compose: ./bootstrap.sh создает секреты в .env, а затем docker compose up -d запускает Omnigent и Postgres на порту 6767. DATABASE_URL позволяет выбрать между Postgres и SQLite, а OMNIGENT_AUTH_ENABLED по умолчанию использует 1 внутри контейнеров, что является корректным значением для любого сервиса, доступного извне.
Что касается требований к ресурсам, в примечаниях к развертыванию указано, что рабочая нагрузка сервера составляет примерно от 512 MB до 1 GB, а конфигурация Fly.io фиксирует значение 1 GB. Это объем памяти только для супервизора. Каждый под-агент является отдельным процессом, который использует собственную копию репозитория и клиент модели, поэтому выбирайте объем памяти сервера с учетом количества агентов. После запуска сервера команда omnigent login https://your-host, за которой следует omnigent host https://your-host, регистрирует ваш ноутбук в системе, а omnigent attach <session_id> позволяет возобновить активную сессию с другого устройства.
Изолируйте каждый субагент перед тем, как оставить его без присмотра
Omnigent поставляет песочницу уровня операционной системы под названием Omnibox. В Linux она использует пространства имен bubblewrap и seccomp, поэтому границы принудительно устанавливаются ядром, а не запросами агента. Агент, подвергшийся инъекции промпта, не сможет обойти правила ядра. Сначала установите зависимость:
sudo apt install bubblewrapКонфигурация находится в os_env внутри файла агента:
os_env:
type: caller_process
cwd: .
sandbox:
type: linux_bwrap
write_paths: [.]
write_files: []
read_paths: []
allow_network: true
cwd_allow_hidden: [.venv]
env_passthrough: []
egress_rules: []
credential_proxy: []Рабочая директория доступна только для чтения, пока вы не укажете её в write_paths, поэтому агент, работающий некорректно, не сможет записывать данные за пределами рабочей области. Файлы с точкой в начале остаются скрытыми, если они не указаны в cwd_allow_hidden; это означает, что широкое разрешение на чтение не приведет к случайному раскрытию .ssh или .aws. Установите egress_rules, и весь HTTP- и HTTPS-трафик будет проходить через прокси с политикой «запрещено по умолчанию», где каждое правило записывается как "METHODS host/path-glob". credential_proxy идет еще дальше: агент всегда содержит только заполнитель, а прокси подставляет реальный секрет в момент выхода запроса, поэтому утечка транскрипта не приведет к утечке полезных данных. В конфигурации с несколькими инструментами каждый субагент имеет свой собственный блок песочницы в своем файле конфигурации в agents/, поэтому проверяющему можно запретить доступ к сети, в то время как разработчик сохранит его.
Ограничение указано в документации, и оно важно. Песочница ОС применяется к вызовам инструментов sys_os_* и к терминалам. Она не распространяется на MCP-серверы и на сам процесс супервизора Omnigent. Запущенный вами MCP-сервер работает вне песочницы с вашими правами доступа. Этот пробел — причина, по которой более надежным шаблоном остается использование одной одноразовой машины на агента, что является темой запуска агентов для написания кода в одноразовой виртуальной машине. Вторая часть задачи — учетные данные, и защита секретов от доступа агента становится сложнее, а не проще, когда шесть субагентов используют один хост.
Лимиты расходов — это политики, объявляемые в том же файле:
policies:
budget:
type: function
handler: omnigent.policies.builtins.cost.cost_budget
factory_params:
max_cost_usd: 5.00
ask_thresholds_usd: [1.00, 3.00]Запуск, который планируется у одного поставщика, реализуется у второго и проверяется у третьего, расходует средства в трех местах одновременно, поэтому установите лимит до первого автоматического запуска, а не после получения первого счета. Встроенные функции также включают max_tool_calls_per_session и ask_on_os_tools, которые запрашивают подтверждение перед выполнением операций с файлами и оболочкой. Наши заметки о контроле расходов AI-агентов на VPS применимы здесь напрямую, причем с большей строгостью, так как параллельно работающие субагенты увеличивают скорость расхода средств.
Как быстро развивается этот репозиторий?
The data behind this chart
[
{
"version": "v0.2.0",
"released": "2026-06-19",
"interval": 3
},
{
"version": "v0.3.0",
"released": "2026-06-27",
"interval": 8
},
{
"version": "v0.4.0",
"released": "2026-07-03",
"interval": 6
},
{
"version": "v0.5.0",
"released": "2026-07-10",
"interval": 7
},
{
"version": "v0.5.1",
"released": "2026-07-10",
"interval": 0
},
{
"version": "v0.6.0",
"released": "2026-07-21",
"interval": 11
},
{
"version": "v0.7.0",
"released": "2026-07-27",
"interval": 6
}
]Это даты публикации релизов, взятые со страницы релизов проекта по состоянию на 3 августа 2026 года. В период между 2026-06-19 и 2026-07-27 было выпущено 7 релизов, а самый длительный интервал между двумя любыми из них составил 11 дней. Версия v0.5.1 вышла в тот же день, что и предыдущий релиз. Первый релиз, 0.1.1 от 16 июня 2026 года, не включен в график, так как нет предыдущего тега для расчета интервала.
Два из этих релизов нарушили работу команд, которые уже были описаны в руководствах. В версии v0.7.0 была удалена команда omni server start в пользу omni server --background. В версии v0.6.0 дополнение omnigent[memory] было переименовано в omnigent[hindsight], поэтому команда установки, скопированная из июньской статьи, не работает на июльской сборке. Это является аргументом в пользу использования --version в вашей команде установки и указания тега в вашем git clone, а не просто вопросом предпочтений в стиле.
Чему я пока не стал бы доверять
По состоянию на август 2026 года репозиторий имеет около 8.1k звезд, 1.2k форков и примерно 350 открытых задач, при этом первый публичный релиз состоялся семь недель назад. Звезды отражают интерес, а интерес не означает зрелость. Проект имеет статус alpha, и история релизов выше подтверждает, что это именно alpha.
- Я бы не стал запускать его на хосте, где хранятся производственные учетные данные, поскольку песочница не охватывает MCP-серверы или супервизор.
- Я бы не оставлял процесс без присмотра без политики
cost_budget, так как три поставщика могут выставлять счета параллельно, и ничто иное их не остановит. - Я бы не стал открывать сервер на публичном IP-адресе без настроенного
OMNIGENT_AUTH_ENABLEDи TLS перед ним. - Я бы пока не считал YAML-конфигурацию агента стабильной между минорными версиями, поэтому фиксируйте версию и читайте примечания к релизу перед обновлением.
Еще один момент, который стоит знать, чтобы избежать сюрпризов: в v0.6.0 была добавлена анонимизированная телеметрия использования, и проект документирует это на отдельной странице телеметрии. Прочитайте эту страницу и примите осознанное решение, если машина используется для работы с клиентами.
В чем Omnigent действительно хорош сегодня, так это в том, для чего он был создан. У вас есть три или четыре CLI-интерфейса агентов, вы уже платите за них, и вы хотите, чтобы один из них писал код, а другой проводил ревью. Это работает сейчас, на одной машине, с реальной песочницей в Linux. Относитесь ко всему, что выходит за рамки этого, как к многообещающему, но незавершенному функционалу.
FAQ
Является ли Omnigent агентом или инструментом для запуска агентов?
Он запускает агенты. Omnigent — это мета-оболочка: она запускает уже установленные вами CLI-инструменты поставщиков, такие как Claude Code, Codex или OpenCode, распределяет между ними задачи и контролирует результаты в рамках одной сессии. Утилита не содержит собственных моделей. В этом её отличие от фреймворка, где вы пишете код на Python с использованием библиотеки, и ваша программа сама становится агентом.
Нужно ли мне устанавливать Claude Code и Codex, чтобы начать работу с Omnigent?
Вам необходим как минимум один установленный и авторизованный CLI-инструмент поставщика, так как Omnigent управляет этими программами, а не заменяет их. Для примера Polly вам потребуется два или более инструментов от разных поставщиков. Правило Polly гласит, что проверку всегда выполняет поставщик, отличный от того, кто реализовал задачу, поэтому при наличии только одного CLI не будет второго поставщика, которому можно отправить diff.
Как установить конкретную версию Omnigent вместо последней?
Передайте --version через скрипт установки с помощью sh -s --, как показано в sh -s -- --version 0.7.0. Без -s -- флаг будет обработан самим sh, и скрипт установит самый свежий релиз. Если у вас уже установлен uv, uv tool install --force --python 3.12 "omnigent==0.7.0" выполнит ту же задачу. Тег в git — v0.7.0, а строка версии в PyPI — 0.7.0.
Достаточно ли песочницы Omnibox для запуска агентов без присмотра?
Она обеспечивает надёжную защиту в рамках своих возможностей и чётко определяет свои ограничения. В Linux используются bubblewrap и seccomp, поэтому ядро принудительно ограничивает доступ к файлам и сети, и агент не может это обойти. В документации указано, что это применимо к вызовам инструментов sys_os_* и терминалам, но не распространяется на MCP-серверы или процесс супервизора Omnigent. Таким образом, MCP-сервер работает с вашими обычными правами доступа, поэтому использование отдельной виртуальной машины для каждого агента остаётся более надёжным способом изоляции при работе без присмотра.
Сколько оперативной памяти требуется серверу Omnigent на VPS?
В примечаниях к развёртыванию проекта указано, что рабочее потребление сервера составляет примерно от 512 МБ до 1 ГБ, а в конфигурации Fly.io зафиксировано 1 ГБ. Это относится только к супервизору и веб-интерфейсу на порту 6767. Каждый под-агент является отдельным процессом с собственной рабочей копией и клиентом модели, а запуски в стиле Polly используют параллельные рабочие деревья git (git worktrees), поэтому рассчитывайте объём RAM и диска исходя из количества агентов, которые вы планируете запускать одновременно, а не исходя из потребностей самого сервера.