omnigent-ai/omnigentPublic

Omnigent is an open-source AI agent framework and meta-harness: orchestrate Claude Code, Codex, Cursor, Pi, and custom agents — swap harnesses without rewriting, enforce policies and sandboxing, and collaborate in real time from any device.

AI summary: An open-source meta-harness for orchestrating and sandboxing multiple AI coding agents like Claude Code and Cursor.

Stars
8.3K
+74 today
Forks
1.2K
Watchers
35
Open issues
321
Open PRs
456
Contributors
~174
Commits
1.9K
Branches
1.2K

PythonApache-2.0Created Jun 11, 2026Last push todayLatest release v0.7.0+312 stars this week+369 this month

Star history

since Jun 7, 2026
02.5K5K7.5KJun 2026Jun 2026Jul 2026Aug 2026
8.3K stars as of Aug 7, 2026, tracked back to Jun 7, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 1 commit2026-06-13: 13 commits2026-06-14: 24 commits2026-06-15: 74 commits2026-06-16: 120 commits2026-06-17: 90 commits2026-06-18: 101 commits2026-06-19: 77 commits2026-06-20: 12 commits2026-06-21: 5 commits2026-06-22: 54 commits2026-06-23: 60 commits2026-06-24: 55 commits2026-06-25: 72 commits2026-06-26: 91 commits2026-06-27: 8 commits2026-06-28: 14 commits2026-06-29: 51 commits2026-06-30: 58 commits2026-07-01: 55 commits2026-07-02: 41 commits2026-07-03: 26 commits2026-07-04: 2 commits2026-07-05: 1 commit2026-07-06: 38 commits2026-07-07: 38 commits2026-07-08: 44 commits2026-07-09: 37 commits2026-07-10: 40 commits2026-07-11: 2 commits2026-07-12: 4 commits2026-07-13: 38 commits2026-07-14: 47 commits2026-07-15: 69 commits2026-07-16: 45 commits2026-07-17: 54 commits2026-07-18: 5 commits2026-07-19: 8 commits2026-07-20: 42 commits2026-07-21: 32 commits2026-07-22: 37 commits2026-07-23: 55 commits2026-07-24: 33 commits2026-07-25: 5 commits2026-07-26: 16 commits2026-07-27: 37 commits2026-07-28: 30 commits2026-07-29: 15 commits2026-07-30: 1 commit2026-07-31: 0 commits2026-08-01: 0 commits
1,877 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Breakout launch

    8,251 stars in 57 days

  • Very active

    1,877 commits in 52 weeks

  • Community-driven

    ~174 contributors

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

  • Repeat trending

    4 trending appearances

What omnigent does

Omnigent provides a unified orchestration layer to manage various AI agents, allowing users to mix and match agents like Claude Code, Codex, and custom YAML-defined agents in a single session. It enforces governance policies and sandboxing, ensuring agents operate securely. The platform synchronizes sessions across devices, enabling real-time collaboration from a terminal, browser, or a native desktop app.

Developers and AI researchers building, deploying, and managing complex multi-agent workflows who need a centralized, secure environment to observe and control them.

  • Cross-device synchronization: Start an agent session in the terminal and seamlessly continue it on a mobile browser or desktop app.
  • Multi-agent supervision: Combine different agents in the same session, allowing one to review another's work.
  • Unified meta-harness: Swap between different agent models without needing to rewrite integration code.
  • Enforced sandboxing: Provides governance and strict boundaries to safely execute agent-generated actions.
  • Custom YAML agents: Define specialized, purpose-built agents quickly using declarative YAML configurations.

Where teams use it

Multi-Agent Collaboration

Using one agent specialized in architecture to draft a plan, while another agent specialized in code generation executes it within the same session.

Secure Agent Execution

Running untrusted or highly autonomous coding agents in a sandboxed environment where policies dictate what files or commands they can access.

Remote Agent Management

Monitoring and interacting with long-running agent tasks from a mobile device while away from the development workstation.

README

main branch

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:

  • 📱 Work with agents from any device, including your phone. Sessions follow you: start in your terminal, continue in the browser, pick it up on your phone. Messages, sub-agents, terminals, and files stay in sync.

  • 🤖 Supervise multiple agents. Mix Claude Code, Codex, Cursor, OpenCode, Hermes, Pi, and custom agents (defined in YAML) together in the same session. Ask one agent to review another's work, or split a task across agents that are each good at different things.

  • 🔌 Use any model. A first-party API key, a Claude/ChatGPT subscription, or any compatible gateway. All first-class.

  • 🤝 Collaborate. Share a session so teammates can chat with your agent and watch it work live, co-drive it on your machine, or fork the conversation to continue on their own.

  • ☁️ Run agents in cloud sandboxes. No laptop required: run sessions in disposable Modal, Daytona, Islo, E2B, CoreWeave, Kubernetes, OpenShell, Boxlite, or Databricks sandboxes, launched from the CLI or provisioned by the server per session (managed hosts).

  • 🛡️ Govern your agents. Create policies to pause for your approval before risky actions, cap spend, or limit which tools an agent reaches. They apply to the whole server, one agent, or a single chat.


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, boxlite, 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 opencode                    # OpenCode
omnigent hermes                      # Hermes Agent (Nous Research)
omnigent pi                          # Pi

🐙 Polly and 🟠🔵 Debby

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

omnigent run examples/polly/
omnigent run examples/debby/

# ...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.)

Prefer the browser? Start a server and register your machine as a host:

omnigent server --background   # start the local server and web UI in the background
omnigent host           # (separate terminal) register this machine as a host

In the web UI, hit New Chat, pick your machine, and go. Check status with omnigent server status; stop everything with omnigent stop.

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, and the sandbox setup 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

  • Share a live session. Hit Share in the web UI and send the link; teammates watch your agent work and chat with it in real time.

  • Co-drive. A teammate co-attaches to your running session; their messages execute on your machine. Great for pairing or handing the keyboard to a domain expert mid-investigation.

    omnigent attach <session_id>
  • Fork. Clone a conversation onto your own machine and continue independently from the fork point.

    omnigent run --fork <session_id>

Shared sessions identify model-visible messages with [account]: labels by default. Set OMNIGENT_SHARED_MESSAGE_ATTRIBUTION_ENABLED=0 to hide those labels. This does not change stored authors, UI avatars, or who may approve or run privileged actions.

Tip

Want your team to sign in with the logins they already have (Google, GitHub, Okta, Microsoft)? Set OMNIGENT_OIDC_ISSUER plus a client ID and secret on your deployed server and restart. The full walkthrough, domain allowlists, and the proxy-only header auth mode are covered in deploy/README.md#auth.

6. Govern your agents with policies

Policies decide what an agent may do: run shell commands, edit files, spend tokens. They check every action and either allow it, block it, or pause to ask you first.

  • In the web UI: open a session's info panel to browse the available policies and toggle them on or off.
  • In chat: ask. "Add a policy that asks me before running shell commands." The agent sets it up for you.

Want defaults that apply to everyone, or to a specific agent? Define them in your server config or an agent's YAML:

policies:
  approve_shell:
    type: function
    handler: omnigent.policies.builtins.safety.ask_on_os_tools   # ask before shell / file writes
  cap_calls:
    type: function
    handler: omnigent.policies.builtins.safety.max_tool_calls_per_session
    factory_params:
      limit: 50                    # cap how many tools one session can call
  budget:
    type: function
    handler: omnigent.policies.builtins.cost.cost_budget
    factory_params:
      max_cost_usd: 5.00           # hard spend cap...
      ask_thresholds_usd: [3.00]   # ...with a soft warning on the way

Policies stack across three levels, server-wide (admin), per-agent (developer), and per-session (you), with the stricter session rules checked first. Spend caps and access limits ship as builtins.

See the policy guide for the full catalog and trust model.


Write your own agent

An agent is a short YAML file: your prompt, your tools — local Python functions, MCP servers, and sub-agents a supervisor can delegate to. You don't have to write it by hand: agents can build agents, so describe the agent you want in any Omnigent chat and it authors the file for you.

name: my_agent
prompt: You are a helpful data analyst.

executor:
  harness: claude-sdk          # or: claude-native, codex, codex-native, cursor,
                               # cursor-native, hermes, hermes-native, opencode,
                               # pi, pi-native, openai-agents

tools:
  # A local Python function (schema auto-generated from the signature)
  word_count:
    type: function
    callable: mypackage.mymodule.word_count

  # Tools from an MCP server (a local command, or a remote URL)
  docs:
    type: mcp
    url: https://example.com/mcp

  # A sub-agent the supervisor can delegate to
  researcher:
    type: agent
    prompt: Search for relevant information and summarize it.
    tools:
      word_count: inherit

Run it with:

omnigent run path/to/my_agent.yaml

The same file can declare sub-agents and reviewers. For a fuller example, see Polly at examples/polly/, and the Agent YAML spec for the full schema.


Telemetry

Omnigent collects anonymized usage data (telemetry) by default. This data contains no sensitive or personally identifiable information. If you're using Omnigent through a managed service or distribution, please consult your managed service agreement to determine any data collection that may impact your use of the service. To opt out, follow our instructions in Usage Telemetry.


Contributing

Contributions are welcome. See CONTRIBUTING.md for how to set up your environment, run the checks, and open a pull request.

Adding or changing support for a harness (Claude, Codex, Cursor, OpenCode, Hermes, Pi, ...)? Run the harness test bench to check its capability matrix against observed behavior.

Contributors

Thanks to all of our amazing contributors!

View on GitHub

Recent activity

commits and pull requests

Discussions

all 8

Releases and announcements

7 total
  1. v0.7.0v0.7.0Jul 27, 2026

    ## Major new features - ⏰ **Automations (Scheduled Tasks)** — a new `/tasks` page to create, edit, and run recurring agent tasks, with model and reasoning-effort selectors, a "Run now" action, live relative next-run times, and terminal run tracking with history at `GET /v1/scheduled-tasks/{id}/runs`. Tasks no longer require a workspace or pinned host for chat-only work. (#3112, #3123, #3186, #3218, #2946, #3014) - 📁 **First-class Projects** — organize work into real project entities: create, rename, and delete them in the sidebar, file sessions in, and give each project default session settings (host, working directory, agent, model) that pre-fill the new-session composer. Legacy label-based projects keep working. (#2765, #3053, #3061, #3108, #3221) - 🎙️ **Voice dictation in the composer** — optional server-side transcription (`omnigent[dictation]`) works in Electron, Firefox, and Chromium with live streaming partials and audio that never leaves your server, a ⌘⌥V toggle from anywhere, and an offloadable remote worker engine. (#2093, #3044, #3025) - 🧭 **Smarter routing** — a new "Auto · smart routing" harness option lets the router pick both harness and model from your tas

  2. v0.6.0v0.6.0Jul 21, 2026

    > [!IMPORTANT] > We are collecting **anonymized usage data** in Omnigent server starting from this release. To opt out, follow our instructions in [Usage Telemetry](https://omnigent.ai/docs/deploy/telemetry). ## Major new features - 📄 **Richer file viewing**: inline PDF preview with review comments, find-in-file across the editor plus markdown and notebook previews, a diff-viewer "Wrap lines" toggle, and a file panel that stays browsable when the runner is offline but the host is connected (#2619, #2677, #2628, #2674, #2600, #2676) - 🎨 **Custom themes**: a guided theme editor with shared accent/tint/contrast and sidebar translucency controls, a new Nord palette, a randomize dice, and a file editor that follows your Omnigent theme (#2650, #2561, #2653, #2594) - 📥 **Bring your existing work in**: import Claude Code and Codex chats with `omni import` (up to 50 at once), automatic first-turn session titles - 🧭 **Navigation bar in transcript**: quickly navigate your long transcript at ease by clicking the navigation bar in session transcript - 💬 **Slack integration**: kick off and drive Omnigent sessions from Slack, including approving tool calls and answering questions

  3. v0.5.1v0.5.1Jul 10, 2026

    ## Bug fixes - 🖥️ On older desktop builds without the embedded browser, the Browser tab is now hidden instead of showing a dead tab that does nothing (#2393) ### 💜 Thanks to our community This release was shaped by the people who filed issues, opened PRs, and talked through feature requests with us on our Discord! Thank you for building omnigent with us, keep the bug reports, ideas and contributions coming :) Full Changelog: https://github.com/omnigent-ai/omnigent/blob/main/CHANGELOG.md

  4. v0.5.0v0.5.0Jul 10, 2026

    ## Major new features - 📱 **Omnigent for iOS — now on the App Store** — Omnigent is going mobile! [iOS version](https://apps.apple.com/us/app/omnigent/id6783102694) is now available on App Store; Android is coming soon (#2262, #2263, #2282, #2179) - 🧩 **Generic ACP harness** — connect Omnigent to any ACP-compatible agent, bridged to Omnigent's own tools over an MCP relay (#2152) - 🔎 **Command palette & richer search** — a global ⌘/Ctrl+K palette (also wired to the sidebar "Search") jumps across sessions, and session search now shows a highlighted matched-content preview so you can see why a session matched (#1386, #2086, #2162) - 🎨 **Appearance & customization settings** — pick a color theme (Omnigent, Dracula, GitHub, Catppuccin, Gruvbox), a terminal theme, and independent UI and code editor/terminal font size + family (#2225, #2147, #2154, #2135, #2040, #2047) - 💬 **Message steering & queuing** — line up several messages while a turn runs, then edit, reorder, delete, or steer them; queued messages auto-flush on idle, in the background, and across sessions (with attachments) (#2008, #2010, #2019, #2022, #2025, #2029, #2078) - ☸️ **Kubernetes deployment** — a new offic

  5. v0.4.0v0.4.0Jul 3, 2026

    ### Install ```bash uv tool install --force "omnigent==0.4.0" ``` 0.4.0 turns harnesses into a real plugin platform — bring your own coding agent as an installable package — makes the intelligent model router actually pick for you, and matures the whole native-harness fleet with parity, cost, and polish across the board. ### Major new features * 🤹 **Polly multi-agent orchestration:** the polly example orchestrator now fans work out across more coding sub-agents — cursor, hermes, and opencode join the roster — so a single run can delegate to the right agent for each task (#1844, #1776) * 🔌 **Harness plugin SDK:** bring your own coding agent — any harness can now ship as an installable Python package (via the `omnigent.community.harness` entry point), no fork or core changes required. A declarative capability model + a `/v1/harnesses` catalog let the server and UI discover what each harness supports (#1756, #1847, #1894) * 🧠 **Intelligent model routing, now automatic:** the model router (introduced in v0.3.0) now picks the best harness *and* model for each turn via a server-side judge, reading a live per-runner model catalog — plus an orchestrator-facing `sys_advise_models` too

Commits per week

last 52 weeks
4980Week of 2025-08-03: 0 commitsWeek of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 14 commitsWeek of 2026-06-14: 498 commitsWeek of 2026-06-21: 345 commitsWeek of 2026-06-28: 247 commitsWeek of 2026-07-05: 200 commitsWeek of 2026-07-12: 262 commitsWeek of 2026-07-19: 212 commitsWeek of 2026-07-26: 99 commitsAug 3, 2025Jul 26, 2026
1.9K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 2 commitsSun 1:00 — 1 commitsSun 2:00 — 2 commitsSun 3:00 — 1 commitsSun 4:00 — 2 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 1 commitsSun 8:00 — 2 commitsSun 9:00 — 3 commitsSun 10:00 — 2 commitsSun 11:00 — 1 commitsSun 12:00 — 3 commitsSun 13:00 — 2 commitsSun 14:00 — 7 commitsSun 15:00 — 7 commitsSun 16:00 — 1 commitsSun 17:00 — 2 commitsSun 18:00 — 5 commitsSun 19:00 — 1 commitsSun 20:00 — 11 commitsSun 21:00 — 2 commitsSun 22:00 — 5 commitsSun 23:00 — 9 commitsMon 0:00 — 2 commitsMon 1:00 — 3 commitsMon 2:00 — 5 commitsMon 3:00 — 8 commitsMon 4:00 — 2 commitsMon 5:00 — 1 commitsMon 6:00 — 2 commitsMon 7:00 — 5 commitsMon 8:00 — 3 commitsMon 9:00 — 6 commitsMon 10:00 — 20 commitsMon 11:00 — 11 commitsMon 12:00 — 11 commitsMon 13:00 — 18 commitsMon 14:00 — 34 commitsMon 15:00 — 27 commitsMon 16:00 — 36 commitsMon 17:00 — 25 commitsMon 18:00 — 32 commitsMon 19:00 — 17 commitsMon 20:00 — 16 commitsMon 21:00 — 26 commitsMon 22:00 — 13 commitsMon 23:00 — 11 commitsTue 0:00 — 14 commitsTue 1:00 — 10 commitsTue 2:00 — 6 commitsTue 3:00 — 6 commitsTue 4:00 — 4 commitsTue 5:00 — 3 commitsTue 6:00 — 3 commitsTue 7:00 — 12 commitsTue 8:00 — 7 commitsTue 9:00 — 11 commitsTue 10:00 — 9 commitsTue 11:00 — 22 commitsTue 12:00 — 15 commitsTue 13:00 — 24 commitsTue 14:00 — 32 commitsTue 15:00 — 44 commitsTue 16:00 — 28 commitsTue 17:00 — 25 commitsTue 18:00 — 27 commitsTue 19:00 — 17 commitsTue 20:00 — 13 commitsTue 21:00 — 18 commitsTue 22:00 — 20 commitsTue 23:00 — 16 commitsWed 0:00 — 13 commitsWed 1:00 — 10 commitsWed 2:00 — 3 commitsWed 3:00 — 4 commitsWed 4:00 — 6 commitsWed 5:00 — 8 commitsWed 6:00 — 5 commitsWed 7:00 — 6 commitsWed 8:00 — 7 commitsWed 9:00 — 7 commitsWed 10:00 — 18 commitsWed 11:00 — 23 commitsWed 12:00 — 19 commitsWed 13:00 — 21 commitsWed 14:00 — 27 commitsWed 15:00 — 27 commitsWed 16:00 — 29 commitsWed 17:00 — 36 commitsWed 18:00 — 14 commitsWed 19:00 — 16 commitsWed 20:00 — 20 commitsWed 21:00 — 23 commitsWed 22:00 — 9 commitsWed 23:00 — 14 commitsThu 0:00 — 10 commitsThu 1:00 — 10 commitsThu 2:00 — 4 commitsThu 3:00 — 8 commitsThu 4:00 — 5 commitsThu 5:00 — 7 commitsThu 6:00 — 4 commitsThu 7:00 — 1 commitsThu 8:00 — 11 commitsThu 9:00 — 9 commitsThu 10:00 — 12 commitsThu 11:00 — 17 commitsThu 12:00 — 18 commitsThu 13:00 — 22 commitsThu 14:00 — 20 commitsThu 15:00 — 25 commitsThu 16:00 — 26 commitsThu 17:00 — 42 commitsThu 18:00 — 29 commitsThu 19:00 — 23 commitsThu 20:00 — 14 commitsThu 21:00 — 8 commitsThu 22:00 — 14 commitsThu 23:00 — 13 commitsFri 0:00 — 8 commitsFri 1:00 — 6 commitsFri 2:00 — 3 commitsFri 3:00 — 3 commitsFri 4:00 — 6 commitsFri 5:00 — 11 commitsFri 6:00 — 7 commitsFri 7:00 — 4 commitsFri 8:00 — 3 commitsFri 9:00 — 11 commitsFri 10:00 — 13 commitsFri 11:00 — 18 commitsFri 12:00 — 15 commitsFri 13:00 — 17 commitsFri 14:00 — 29 commitsFri 15:00 — 26 commitsFri 16:00 — 34 commitsFri 17:00 — 41 commitsFri 18:00 — 24 commitsFri 19:00 — 19 commitsFri 20:00 — 3 commitsFri 21:00 — 5 commitsFri 22:00 — 6 commitsFri 23:00 — 10 commitsSat 0:00 — 6 commitsSat 1:00 — 2 commitsSat 2:00 — 2 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 1 commitsSat 6:00 — 0 commitsSat 7:00 — 1 commitsSat 8:00 — 2 commitsSat 9:00 — 2 commitsSat 10:00 — 4 commitsSat 11:00 — 1 commitsSat 12:00 — 3 commitsSat 13:00 — 2 commitsSat 14:00 — 0 commitsSat 15:00 — 1 commitsSat 16:00 — 4 commitsSat 17:00 — 3 commitsSat 18:00 — 3 commitsSat 19:00 — 3 commitsSat 20:00 — 1 commitsSat 21:00 — 3 commitsSat 22:00 — 0 commitsSat 23:00 — 3 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jun 17, 2026daily#21+13
Jun 16, 2026daily#18+17
Jun 15, 2026daily#25+18
Jun 14, 2026daily#15+43
  • public-apis/public-apis

    A collective list of free APIs

    454.9K stars · Python

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    362.2K stars · Python