How to run many agent CLIs with Omnigent
Omnigent dey control Claude Code, Codex, Cursor and more from one YAML setup. Learn wetin meta-harness mean, pin release 0.7.0, and sandbox agents for VPS.
Wetin Omnigent be
Omnigent na open source meta-harness: one orchestration layer wey dey control the agent command line tools (CLIs) wey you don install already. E no replace Claude Code, Codex, Cursor, OpenCode, Hermes or Pi. E start dem, give each one work, and supervise the result inside one session with one policy set. Databricks publish the repository for June 2026 under Apache 2.0 licence, and the front page still dey show Status: alpha.
The practical claim narrow, and e worth make we talk am plain. You describe agent once for YAML, then name the harness wey go run am. Change that one line, and the same agent go run for another vendor CLI. Nothing else for your setup go change, because Omnigent dey control the loop above the agents, instead of the loop inside dem.
Meta-harness na wetin, and how e different from framework?
Harness na program wey wrap model inside loop. E dey read your prompt, call tools, edit files, and report result back. Claude Code na harness. Codex na harness. You install am, log in, and e dey work by itself.
Framework na library wey you write code against. You import am, define the steps for Python, and your program become the agent. If you change vendor for there, you need edit your code, because vendor client dey wired through your program.
Meta-harness dey one level above both of dem. E na supervisor wey dey run harnesses as child processes. Omnigent dey start the vendor CLI, give am work, and read wetin come back. You keep the CLI wey you don already install, and you keep the subscription or API (application programming interface) key wey already dey pay for am. Na this be the whole difference, and na this decide who the tool dey for: people wey get several agent CLIs wey already dey work, but don tire to drive dem one terminal at a time.
One orchestration layer solve wetin problem?
- Changing vendor na one-line work. Agent definition dey keep
harnessandmodelas data, so if you move one role from one vendor go another, na YAML file you go edit, no be say you rewrite everything. - Review fit cross vendors. Model from another company fit read diff wey one model write. Two models from the same family usually get the same blind spots, so second opinion from the same vendor no get as much value.
- Policy get one place. You declare spend caps and approval prompts inside agent file, and dem apply to every sub-agent under am.
- Session fit survive any one tool. One transcript cover work wey several CLIs do, so you fit read wetin happen without joining four different scrollbacks together.
The cost na the layer itself. Every bug for Omnigent now become bug wey dey between you and agent wey before dey work by itself. For alpha, this na real cost, no be theoretical one.
Where multi-agent harness fit sit beside single agent tools
If you never run one agent for server before, start from there first. Our guide to running a coding agent on a VPS cover the single-agent setup from beginning to end, and na this setup Omnigent assume say you don get already. The wider field of self-hosted AI agents na where you choose the agents themselves, while learning how agents actually work better be your first stop if these terms still new to you.
Omnigent dey operate for another level from connector layer too. Work like giving agents access to your own data sources dey about the data sources wey agent fit reach. Omnigent dey about which agent go run, the order wey dem go run, and the limits wey dem go get. You fit need both at the same time, and dem no overlap.
Wetín you need before you install
- Python 3.12 or newer. The published package declares
requires-python >= 3.12. tmux, because the terminal harnesses dey run inside am.- At least one vendor CLI, wey don already install and don already log in.
- Node.js 22 only if you build from a git checkout. The wheel for PyPI come with the built web assets, so normal install no need Node at all.
Install a pinned release, no be main
curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh -s -- --version 0.7.0The sh -s -- part no be decoration. If you remove am, sh go read --version as e own option, and installer no go see the flag. So you go get whichever version newest that day. For repository wey dey release breaking changes every few weeks, na this one dey separate reproducible box from surprise.
Installer dey use uv, Astral Python package manager, and e go offer to install uv first if e no dey installed. If uv don dey there already, skip the script:
uv tool install --force --python 3.12 "omnigent==0.7.0"Extras dey follow the same pattern, and the flag dey repeat: --extra e2b --extra kubernetes for the script, or "omnigent[e2b,kubernetes]" with uv. Note say git tag na v0.7.0, while package version for PyPI na 0.7.0.
uv dey put the binary for directory wey uv tool dir --bin report, usually ~/.local/bin, and installer go offer to add am to your shell profile. If command no dey found immediately after clean install, na why be that. Check wetin you end up with:
omni upgrade --checkThat one dey compare the installed version with the latest published one and tell you whether upgrade dey available, without performing am. omni and omnigent na the same program with two names.
Point am to a model provider
omni setupThe wizard go check credentials wey already dey your environment, then ask for the ones wey dey missing. E handles API keys, vendor subscriptions, gateways like OpenRouter or Ollama, and Databricks workspaces. If you already dey run local model server with Ollama for the same machine, point one gateway to am, and the traffic no go ever leave the box.
A minimal multi-agent run
The example agents dey inside repository, so clone the same tag wey you install instead of main.
git clone --depth 1 --branch v0.7.0 https://github.com/omnigent-ai/omnigent.git
cd omnigent
omnigent run examples/polly/Polly na the multi-agent coding orchestrator wey dey ship with the repo. E config define sub-agents wey dem name claude_code, codex, opencode, cursor, hermes and pi. E get one rule wey make the whole exercise useful: na always different vendor go do review from the implementer. Polly no dey write code by itself. E dey plan, divide the goal into work items, delegate each one, and route each diff go reviewer from another vendor.
Before Polly delegate anything, e dey run preflight check to see which sub-agent CLIs actually dey available for the machine. If na only one vendor CLI dey installed, nobody dey available to review the diff. So install at least two before you assess the output. Debby, the other example wey ship with the repo, na debate agent wey get two heads: one Claude and one GPT:
omni debbyNa short way to confirm say two providers dey configured, because e need both of dem before e fit talk anything.
Sub-agents na tools
Agent file na YAML. executor dey name the harness, the model, and the authentication. tools dey hold MCP (model context protocol) servers, Python functions, and sub-agents. Sub-agent na tool wey get type: agent and im own executor. Na this mechanism dey power everything wey dey above.
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.yamlThose model ids come from the project own docs/AGENT_YAML_SPEC.md example, and dem na Databricks-hosted names. Replace harness and model with anything wey omni setup configure for your box. Other harness values for the spec include antigravity, copilot, kimi, qwen, and acp:<slug> for anything wey dey speak the generic protocol. The spec still support pass_history: true for sub-agent, wey go hand am the parent conversation. This one dey cost tokens for every delegation, so leave am off for sub-agents wey only need the task wey dey in front of dem. Coder wey im prompt tell am to make the smallest change wey go work go hand im reviewer a diff wey short enough to actually read. This one matter pass the model wey you choose for either role.
Why long running orchestration belong for VPS
Multi-agent run no be command wey go finish for two minutes. You need plan, delegate, wait for parallel git worktrees, review, and revise. If you close laptop lid, everything go stop. VPS (virtual private server) dey online and e keep network connection, so session go continue while you no dey monitor am.
omnigent server --background
omnigent server statusThe server dey host web user interface for port 6767. omnigent server status dey report whether one dey run, while omnigent stop dey shut am down. For releases before v0.7.0, na omni server start be the command, but dem remove am, so old write-ups and screenshots no go match wetin your terminal dey do.
No publish 6767 for public address. Two arrangements safe. Keep the port closed for firewall and forward am over SSH with ssh -N -L 6767:localhost:6767 you@your-server, then open web interface at http://localhost:6767 for your own machine. Or terminate TLS (transport layer security) for front of am and enable authentication:
OMNIGENT_AUTH_ENABLED=1 omnigent server --backgroundThe firewall part na normal work, and the ufw firewall basics for a VPS cover am. If the box already dey run containers behind Traefik in front of several Docker Compose apps, Omnigent na just one more service for the same pattern.
For container deploy, the repository's deploy/ directory get Compose setup: ./bootstrap.sh dey mint secrets into .env, then docker compose up -d dey start Omnigent and Postgres for port 6767. DATABASE_URL dey select Postgres or SQLite, while OMNIGENT_AUTH_ENABLED dey default to 1 inside the containers. Na the correct default for anything wey people fit reach from outside.
For sizing, the deploy notes talk say server working set dey roughly 512 MB to 1 GB, and Fly.io config pin am to 1 GB. That figure na for supervisor alone. Every sub-agent na separate process wey dey hold its own checkout and its own model client, so size the box for the agents. Once server don come up, omnigent login https://your-host followed by omnigent host https://your-host go register your laptop against am, while omnigent attach <session_id> go pick up a running session again from another device.
Sandbox every sub-agent before you waka comot
Omnigent dey ship operating system level sandbox wey dem call Omnibox. For Linux, e dey use bubblewrap namespaces plus seccomp, so kernel go enforce the boundary instead of agent prompt. Agent wey prompt injection don affect no fit talk its way comot from kernel rule. Install the dependency first:
sudo apt install bubblewrapThe configuration dey under os_env for the agent file:
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: []Working directory dey read only until you list am for write_paths, so agent wey go wrong no fit write outside the workspace. Dotfiles go remain hidden unless you name dem for cwd_allow_hidden. This mean broad read grant no go quietly expose .ssh or .aws. Set egress_rules and all HTTP and HTTPS traffic go pass through default deny proxy, with each rule written as "METHODS host/path-glob". credential_proxy go one step further: agent go only ever hold placeholder, and proxy go replace am with the real secret as request dey comot, so leaked transcript no go leak anything wey person fit use. For multi-harness setup, each sub-agent carry its own sandbox block for its own config file under agents/. This mean reviewer fit lose network access while implementer still get am.
The documentation state the limit, and e matter. OS sandbox dey apply to sys_os_* tool calls and terminals. E no cover MCP servers, and e no cover Omnigent supervisor process itself. Any MCP server wey you start go run outside the box with your permissions. Na this gap make the stronger pattern still be one throwaway machine for each agent. Na this one running coding agents in a disposable VM dey discuss. The other part of the work na credentials, and keeping secrets out of an agent's reach dey harder, no be easier, when six sub-agents share one host.
Spend limits na policies, and you declare dem for the same file:
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]A run wey plan with one vendor, implement with second one, then review with third one dey spend for three places at once. So set the cap before the first unattended run, no be after the first invoice. The built-ins also include max_tool_calls_per_session and ask_on_os_tools, wey dey ask for approval before file and shell operations. Our notes on keeping AI agent costs under control on a VPS apply directly here, and dem apply even more because parallel sub-agents dey multiply the burn rate.
Repository dey move how fast?
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
}
]Na release dates wey project own releases page publish, as dem read am on 3 August 2026. 7 tagged releases come out between 2026-06-19 and 2026-07-27, and the longest gap between any two na 11 days. v0.5.1 come out the same day as the release before am. The first release, 0.1.1 on 16 June 2026, no dey inside the chart because no previous tag dey to measure from.
Two of those releases break commands wey guides don already document. v0.7.0 remove omni server start and use omni server --background instead. v0.6.0 rename the omnigent[memory] extra to omnigent[hindsight], so install line wey person copy from June write-up go fail for July build. Na why you suppose use --version for your install command and pin one tag for your git clone; no be style preference.
Wetin I no go trust am with yet
As of August 2026, repository get about 8.1k stars, 1.2k forks, and roughly 350 open issues. First public release dey only seven weeks old. Stars show interest, and interest no mean maturity. The project talk say e dey alpha stage, and the release history above show say na true alpha.
- I no go run am for host wey dey hold production credentials, because sandbox no cover MCP servers or the supervisor.
- I no go leave run unattended without
cost_budgetpolicy, because three vendors fit bill at the same time and nothing else dey stop dem. - I no go expose server for public IP address without setting
OMNIGENT_AUTH_ENABLEDand putting TLS in front of am. - I no go treat agent YAML as stable across minor versions yet, so pin the version and read release notes before you upgrade.
Another thing you need know before e surprise you: v0.6.0 add anonymised usage telemetry, and project document am for dedicated telemetry page. Read that page and decide deliberately if the machine dey handle client work.
The thing wey Omnigent genuinely good at today na the work wey dem build am for. You get three or four agent CLIs, you already dey pay for dem, and you want one to write while another one review am. This one dey work now, for one machine, with real sandboxing for Linux. Treat anything beyond that as promising but unfinished.
FAQ
Omnigent na agent, or na thing wey dey run agents?
E dey run agents. Omnigent na meta-harness: e dey start vendor CLIs wey you don install already, like Claude Code, Codex or OpenCode, give each one work, and supervise the results for one session. E no bring any model of its own. Na why e different from framework, where you write Python against library and your own program become the agent.
I need to install Claude Code and Codex before Omnigent go useful?
You need at least one vendor CLI wey you don install and log in, because Omnigent dey control those programs instead of replacing dem. For the Polly example wey ship with am, you want two or more from different vendors. Polly rule be say different vendor from the implementer must always do the review, so if na only one CLI dey present, no second vendor dey to send the diff go.
How I go install specific Omnigent version instead of the latest one?
Pass --version through the install script with sh -s --, like sh -s -- --version 0.7.0. If you no use -s --, sh itself go consume the flag and the script go install the newest release. If uv don already dey present, uv tool install --force --python 3.12 "omnigent==0.7.0" go do the same work. The git tag na v0.7.0, while the PyPI version string na 0.7.0.
Omnibox sandbox dey enough to run agents unattended?
E strong for wetin e cover, and e clear about wetin e no cover. For Linux, e dey use bubblewrap plus seccomp, so kernel dey enforce file and network limits, and agent no fit opt out. The documentation talk say e apply to sys_os_* tool calls and terminals, but e no cover MCP servers or the Omnigent supervisor process. So MCP server go run with your normal permissions. Na why disposable virtual machine for each agent still provide stronger isolation for unattended work.
How much memory Omnigent server need for VPS?
The project's deploy notes give the server working set of about 512 MB to 1 GB, and the Fly.io configuration pin am to 1 GB. This one cover only the supervisor and web interface for port 6767. Each sub-agent na separate process with its own working copy and model client. Polly-style runs dey use parallel git worktrees too. So size RAM and disk based on the number of agents wey you plan to run at the same time, instead of sizing am only for the server.