omnigent README

The project's README from github.com/omnigent-ai/omnigent. As one markdown file: README.md.

Omnigent

The open-source meta-harness for all your AI agents.

Omnigent is an open-source meta-harness that gives you a common orchestration layer over Claude Code, Codex, Cursor, OpenCode, Hermes, Pi, and the agents you write yourself: swap or combine harnesses without rewriting, enforce policies and sandboxing, and collaborate in real time from any device — terminal, browser, phone, or the native desktop app.

PyPI version License: Apache 2.0 Discord Status: alpha

omnigent.ai · ⬇️ Download the macOS desktop app

The Omnigent desktop app: starting a new session, with pinned and project-grouped sessions in the sidebar


Why Omnigent?

Omnigent lets you:


Quick start

1. Install

One command installs Omnigent and everything it needs:

curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh
Optional integrations and extras

Need an optional integration? Pass one or more extras to the installer:

curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh -s -- --extra databricks
curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh -s -- --extra modal,e2b

Available user-facing extras include:

  • Model providers: databricks, bedrock, vertex
  • Sandbox providers: modal, daytona, blaxel, boxlite, microsandbox, cwsandbox, e2b, openshell, kubernetes
  • SDK harnesses: antigravity, copilot, cursor, agents-sdk
  • Storage and memory: s3, hindsight
Prefer to install manually?

Omnigent needs Python 3.12+. Install the omnigent package:

uv tool install omnigent        # or: pip install "omnigent"

Manual installs use the same extras syntax, for example:

uv tool install "omnigent[databricks,modal]"

Or with Homebrew:

brew install omnigent-ai/tap/omnigent

Or install straight from the repo:

uv tool install -q --python 3.12 git+https://github.com/omnigent-ai/omnigent.git
Toolchain and prerequisites (if the installer reports a missing tool)
  • uv (required). https://docs.astral.sh/uv/getting-started/installation/ The installer offers to set this up for you.
  • git (required).
  • Node.js 22 LTS or newer with npm (for the coding-harness CLIs installed by omnigent run) and pnpm (for the web UI). You can get both from a single Node install; pnpm is available via corepack enable or npm install -g pnpm.
  • Kiro CLI (optional), for omnigent kiro: install with curl -fsSL https://cli.kiro.dev/install | bash, then sign in with Kiro. Kiro tool approvals stay answerable in the embedded Terminal; supported one-time approvals also appear as Chat cards. See docs/kiro-native-elicitation.md.
  • tmux, required by the native omnigent <harness> terminal wrappers (claude, codex, cursor, hermes, kiro, pi) (brew install tmux / apt install tmux; the installer offers to install it for you).
  • bubblewrap (bwrap), Linux only. The native omnigent <harness> terminal wrappers and the pi harness wrap each agent terminal in a bwrap OS-sandbox; on Linux that isolation is mandatory, so a missing bwrap binary makes those terminals fail to start (apt install bubblewrap; the installer offers to install it for you). macOS uses the built-in seatbelt sandbox and needs nothing extra.
  • Databricks (optional). To use a Databricks workspace as your model provider, install Omnigent with the databricks extra: uv tool install "omnigent[databricks]" — or pass it to the bootstrap installer with ... | sh -s -- --extra databricks. Signing in to the workspace also uses the Databricks CLI.
Windows (native)

Omnigent runs natively on Windows in a degraded mode. The install_oss.sh bootstrap is POSIX-only, so install with uv directly:

uv tool install --python 3.12 omnigent
# or from the repo:
uv tool install --python 3.12 git+https://github.com/omnigent-ai/omnigent.git

What works on Windows: omnigent server, the web UI, and the SDK-based harnesses (omnigent run <agent.yaml> with the claude-sdk / cursor / codex harnesses). Agents run under a Windows Job Object for process-tree containment.

What is not available on Windows (use Linux/macOS, or WSL, for these):

  • the native omnigent claude / omnigent codex / omnigent cursor tmux/PTY terminal wrappers (run an SDK harness or the web UI instead);
  • bwrap/seatbelt filesystem & network sandboxing and the L7 egress proxy — the Job Object backend contains the process tree and enforces resource limits but does not isolate the filesystem or network.
Updating to a new release

When a newer release is on PyPI, Omnigent shows a one-line notice (once per release) pointing here. To update:

omni upgrade            # detects how you installed, drains & stops the local
                        # server, then runs the matching upgrade command
omni upgrade --check    # just report whether a newer release is available

omni upgrade waits for in-flight agent sessions to finish before stopping the local server (pass --force to stop them immediately); the next omni command brings the server back up on the new version. Source checkouts update with git pull instead. Silence the notice with OMNIGENT_NO_UPDATE_CHECK=1.

The check queries your configured package index — honoring UV_INDEX_URL / PIP_INDEX_URL and your uv.toml / pip.conf (default PyPI), so private mirrors work out of the box; override with OMNIGENT_INDEX_URL if needed.

Uninstalling Omnigent

Preview the CLI/profile cleanup that would run by default:

omnigent uninstall

Remove the CLI and installer-managed PATH entries while keeping your local history, credentials, and projects:

omnigent uninstall --yes

To also remove Omnigent state under ~/.omnigent, pass --purge; Omnigent backs it up outside the target before deletion. Your ~/omnigent workspace is kept unless you explicitly add --purge-workspace.

omnigent uninstall --purge --yes

If the installed wheel is broken or omnigent is not on PATH, run the standalone script instead:

curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/uninstall_oss.sh | sh

Add --yes to the standalone script to perform the previewed CLI cleanup.

2. Start your first agent

omnigent picks a model with you and starts a session in your terminal. It also launches a local web UI at http://localhost:6767 that shows the same session in the browser, or on a phone on your network (step 4). The desktop app wraps that same UI in a native window and adds OS notifications (with a configurable sound) and a dock badge — download it for macOS.

[!NOTE] The install puts two names for the same CLI on your PATH: omnigent and the shorter omni. They're interchangeable.

[!TIP] On first run, Omnigent picks up model credentials already in your environment (an ANTHROPIC_API_KEY / OPENAI_API_KEY, or a claude / codex CLI you're logged into) and offers one as the default.

omnigent

Or launch a specific agent runtime:

omnigent claude                      # Claude Code, in a session your team can join
omnigent codex                       # Codex
omnigent cursor                      # Cursor
omnigent agy                         # Antigravity
omnigent opencode                    # OpenCode
omnigent hermes                      # Hermes Agent (Nous Research)
omnigent pi                          # Pi

omnigent agy requires agy 1.1.13 or newer. When GEMINI_API_KEY is set, direct Gemini API authentication takes precedence over agy's saved OAuth login.

Using OpenClaw? See the OpenClaw integration guide to import its coding agents or drive a live OpenClaw Gateway session over ACP.

Grok Build and Devin

Two more coding agents are built in but have no omnigent <name> launcher of their own, because each ships a CLI that holds its own login. Install the vendor CLI, log in with it, then name the harness:

# Grok Build (xAI)
curl -fsSL https://x.ai/cli/install.sh | bash
grok login --device-auth              # xAI OAuth
omnigent run --harness grok           # 'grok-build' also works

# Devin (Cognition)
curl -fsSL https://cli.devin.ai/install.sh | bash
devin auth login
omnigent run --harness devin

Both speak the Agent Client Protocol over stdio, and Omnigent stores no credential for either — each CLI reads back the login it wrote to disk. That also means --model is refused rather than silently dropped: both run their account-default model. To pin one, configure an acp: agent whose command passes the vendor's own model flag.

Use the vendor login rather than an API key. A builtin ACP row has no env_passthrough of its own, and XAI_API_KEY is not in the host-to-runner credential allowlist, so exporting it in your shell does not reach the agent. If you need the key route, pass it explicitly with OMNIGENT_RUNNER_ENV_PASSTHROUGH=XAI_API_KEY, or configure an acp: agent that declares the passthrough.

🐙 Polly and 🟠🔵 Debby

Two example agents ship with the repo, and they make good first sessions:

omnigent run examples/polly/
omnigent run examples/debby/
omnigent run examples/deep-research/

# ...or on a different harness (sub-agents keep their own):
omnigent run examples/polly/ --harness <harness>
omnigent run examples/debby/ --harness <harness>

🐙 Polly is a multi-agent coding orchestrator who writes no code herself. She's the tech lead: she plans, delegates the work to coding sub-agents (Claude Code, Codex, or Pi) in parallel git worktrees, then routes each diff to a reviewer from a different vendor than the one that wrote it. You merge.

🟠🔵 Debby is a brainstorming partner with two heads, one Claude and one GPT. Every question you ask goes to both heads, and she lays the two answers out side by side. Type /debate and the heads critique each other for a few rounds before converging. (She needs both a Claude and an OpenAI credential; see step 3.)

🔎 Deep Research is a single agent that answers a question with a cited, cross-checked report. It plans sub-queries, searches the live web and reads full pages through an MCP search server, and verifies each claim across independent sources. It's also the simplest example to copy from: one agent plus one tools/mcp/*.yaml server, no sub-agents.

Prefer the browser? One command starts the local server and registers this machine as a host:

omnigent start   # starts the local server and registers this machine as a host

Open the server URL it prints, hit New Chat, pick your machine, and go. Check status with omnigent server status; stop everything with omnigent stop.

Customize automatic session titles

Set additional natural-language requirements for the isolated title generator:

omnigent config set --global \
  'session_title_instructions=Prefix titles with the current date as lowercase mon-dd. Use PR-number-short-name for pull requests, issue-number-short-description for issues, and a short snake_case activity otherwise.'

The title generator receives the current date as YYYY-MM-DD, then applies these requirements to the first user message. The setting is server-owned and does not alter an agent's portable instructions. Default generated titles are limited to 100 characters; custom title requirements may use up to 200. Default titles over 100 characters are rejected, leaving the first-message fallback title in place. Custom titles over 200 characters are truncated with a trailing ellipsis. Manually assigned titles are also limited to 200 characters. The setting applies to new sessions after the local Omnigent server restarts. For longer instructions, edit ~/.omnigent/config.yaml directly and use a YAML block scalar:

session_title_instructions: |
  Prefix every title with the current date as lowercase mon-dd.
  For pull requests use mon-dd-PR-number-short-name.
  For issues use mon-dd-issue-number-short-description.
  For other work use mon-dd-short_snake_case_activity.

Server operators can set the same key in the YAML passed to omnigent server --config.

3. Choose & switch models

omnigent setup

Add a credential, set a default, or remove one, grouped by agent. Omnigent works with four kinds of credentials:

Kind What it is
🔑 API key A first-party vendor key for Anthropic, OpenAI, and similar providers
🎟️ Subscription A Claude Pro/Max or ChatGPT plan, via the official claude / codex CLIs
🌐 Gateway Any OpenAI- or Anthropic-compatible base_url and key (OpenRouter, LiteLLM, Ollama, vLLM, Azure)
🧱 Databricks A Databricks workspace profile (requires the databricks extra)

Defaults are per agent, so a Claude default and a Codex default coexist. You can also switch models in the middle of a session with the /model command.

Gateway base URLs (OpenRouter, Ollama)

When you add a Gateway credential, omnigent setup asks for a base URL and a key. The base URL depends on which agent you point it at:

Provider For Base URL Key
OpenRouter Claude Code https://openrouter.ai/api your OpenRouter key (sk-or-…)
OpenRouter Codex / OpenAI agents https://openrouter.ai/api/v1 your OpenRouter key (sk-or-…)
Ollama (local) Codex / OpenAI agents http://localhost:11434/v1 any value (Ollama ignores it)

For Claude Code, point at OpenRouter's Anthropic-compatible endpoint (…/api, not …/api/v1). For Codex and the OpenAI-agents harness, use the OpenAI-compatible …/api/v1.

4. Deploy a server (and use it from your phone📱)

Run Omnigent on a server with a stable URL (deploy/README.md is the full guide) and your sessions become reachable from anywhere, including your phone. The web UI is built for mobile, so you get the same chat, sub-agents, terminals, and files, in sync with your laptop.

One docker compose up runs the server on any host you have (a VPS, a home server); Render and Railway deploy with one click; Fly.io, Hugging Face Spaces, Modal, Cloudflare (serverless, scale-to-zero), and Databricks Apps (backed by Lakebase Postgres and Unity Catalog Volumes) are covered too — and a Cloudflare quick tunnel (public) or Tailscale (private) reaches a server running on your own laptop without a deploy. The server can also provision a cloud sandbox per session (managed hosts), so no laptop has to stay online. The full menu of targets, the database options, the sandbox setup, and branding/white-labeling live in deploy/README.md.

Once the server is up, sign in and register your laptop as a host:

omnigent login https://your-host    # sign in once; run / attach / host reuse the token
omnigent host  https://your-host    # new sessions can now run on this machine

[!TIP] On your own network you don't need a deploy. Open your machine's LAN address on your phone (e.g. http://192.168.x.x:6767).

5. Collaborate with your team

Omnigent supports multi-user accounts, controlled by one environment variable:

OMNIGENT_AUTH_ENABLED=1 omnigent server --background

The Docker deploy in step 4 turns it on for you (OMNIGENT_AUTH_ENABLED defaults to 1 there).

Invite your teammates

Open the web UI (http://localhost:6767 locally, or your host's URL) and sign in as admin; first run prints the password and saves it locally. Then open Admin → Members → Invite to create a single-use invite link, no email server needed. Send it over; your teammate opens it, sets a password, and they're in. Signup is invite-only.

[!NOTE] Teammates need to be able to reach the server. A local server is only reachable on your network; for anyone off it, deploy an always-on host (see step 4).

Code together

omnigent (omnigent-ai/omnigent)

Searching Database…

10.9K ·GitHub
这是什么?Omnigent 是一个开源的 AI 智能体元框架:它为 Claude Code、Codex、Cursor、OpenCode、Hermes、Pi 等编程智能体提供一个统一的调度层,支持策略管控、沙箱隔离,并能从任何设备实时协作。
所以它不是取代 Claude Code 或 Codex,而是替我把它们跑起来?对 —— 它在同一个会话里启动并管理你已经在用的那些智能体:可以混用不同框架、让一个智能体审查另一个的成果、把任务拆给多个智能体,而且随时更换或组合框架,不用重写任何东西。
怎么把它跑起来?用 README 里的一键安装脚本,或者通过 uv(Python 3.12+)、pip、Homebrew 安装 omnigent 包,也可以直接从仓库安装。运行 omnigent(简写 omni),它会和你一起选一个模型,在终端里开一个会话,并在本地网页界面打开同一个会话。
它能调度哪些智能体?模型从哪来?它能驱动 Claude Code、Codex、Cursor、OpenCode、Hermes、Pi、用 YAML 自定义的智能体,以及支持 ACP 协议的命令行工具(比如 Grok Build 和 Devin)。模型方面:可以用官方 API 密钥、通过官方命令行工具使用 Claude/ChatGPT 订阅、任何兼容 OpenAI 或 Anthropic 的网关(OpenRouter、Ollama、vLLM、Azure),或者 Databricks —— 每个智能体有自己的默认设置。
在 Windows 上都能正常用吗,有没有坑?Windows 可以原生运行,但功能有所缩水:服务器、网页界面和 SDK 框架都能用,但基于 tmux/PTY 的原生智能体终端封装,以及带出站代理的 bwrap/seatbelt 沙箱都不可用。在 Linux 上则强制要求 bwrap 沙箱,没有它封装的智能体终端就无法启动。
我能用手机或别的电脑查看我的智能体吗?可以 —— 跑一个服务器(在 VPS 或家庭服务器上一条 docker compose up,或在 Render、Railway 上一键部署,也支持 Fly.io、Cloudflare、Hugging Face Spaces),会话就能从任何地方访问。网页界面专为手机设计,并且和你的终端实时同步。
能不让智能体去做有风险或花钱的事吗?可以 —— 你可以编写策略,让智能体在执行有风险的操作前先暂停等你批准、设置花费上限,或者限制它能调用哪些工具。策略可以对整个服务器生效,也可以只针对某个智能体或某次对话。
智能体必须跑在我自己的笔记本上吗?不用 —— 会话可以跑在 Modal、Daytona、Blaxel、Islo、E2B、CoreWeave、Kubernetes、OpenShell、Boxlite、microsandbox 或 Databricks 提供的一次性云沙箱里,可以从命令行启动,也可以由服务器按会话自动分配。
Polly、Debby 和 Deep Research 是什么?它们是仓库自带的示例智能体。Polly 是一个技术负责人式的调度者,把编码任务并行分派给 Claude Code、Codex 或 Pi 子智能体(各自在独立的 git worktree 里),并把每个 diff 交给不同厂商的智能体来审查。Debby 是一个双大脑的头脑风暴助手(Claude 加 GPT),两边同时作答,还能通过 /debate 让它们互相辩论。Deep Research 则基于实时网络搜索,生成带引用、经过交叉核实的报告。
我的同事也能和我的智能体一起工作吗?可以 —— 分享一个会话后,同事就能和你的智能体聊天、实时围观它干活,在你的机器上一起操控它,或者把对话分叉出去,在自己的环境里继续。
Size
328.7 MB
Stars
10.9K
Age
4mo
Commits · 90 Days