Omnigent runs as two cooperating pieces: a server that handles coordination, persistence, and the web UI, and a runner that lives on the user’s machine and executes the actual LLM loop. Separating them lets the server be deployed anywhere — a VPS, Render, Railway, Fly.io — while model credentials and local tools never leave the machine that registers as a host. Sessions stay reachable from any device, including a phone, without code or API keys ever touching the server image.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/omnigent-ai/omnigent/llms.txt
Use this file to discover all available pages before exploring further.
The Server
The server is a FastAPI application that acts as the coordination hub for everything Omnigent does. It exposes HTTP and SSE routes for clients (the CLI REPL, the web UI, the Python SDK), WebSocket endpoints for terminal attachment, and a WebSocket tunnel endpoint (WS /v1/runner/tunnel) that runners dial into from the user’s machine.
The server stores all session state — messages, sub-agents, terminal resources, file resources, policies — in either SQLite (for single-instance or lightweight deploys) or Postgres (for production and multi-instance setups). The web UI is served as a static SPA from the same process.
Because the server handles only coordination and persistence — not execution — the Docker image is deliberately small. It ships no harness SDKs, no tmux, and no LLM API keys.
The server image has no harness SDKs or API keys — they live on the runner’s
machine. A deployed server can be shared with your whole team without anyone’s
credentials entering the server environment.
Render / Railway
One-click deploys with managed Postgres provisioned automatically.
Docker Compose
Run on any VPS or home server with
docker compose up -d.Fly.io / Modal / HF Spaces
CLI-based deploys with SQLite or bring-your-own Postgres.
Local (background)
omnigent server start or auto-started by omnigent run on your machine.Runners (Hosts)
A runner is a Python subprocess that runs on the user’s machine — a laptop, a dev container, or a cloud sandbox. Runners are not deployed; each user launches one by runningomnigent run, omnigent claude, or registering their machine with omnigent host.
The runner dials into the server over WS /v1/runner/tunnel, authenticates, and waits for work. When a session receives a message, the server dispatches the task to the bound runner. The runner then:
- Loads the agent spec and selects the harness.
- Invokes the LLM loop locally (using the user’s own API keys or CLI login).
- Executes tools in the local environment.
- Streams events back through the WebSocket tunnel to the server, which fans them out to all connected clients (web UI, CLI REPL, SDK streams).
Cloud Sandbox Hosts
If you don’t want a laptop to stay online, runners can be launched in Modal or Daytona cloud sandboxes:sandbox: block in the server config.
Harnesses
A harness is an adapter that connects the runner to a specific agent runtime or SDK. The runner loads the harness declared in the agent’sexecutor.harness field (or the --harness CLI flag) and delegates all LLM interaction to it.
The six supported harnesses are:
| Harness | Runtime |
|---|---|
claude-sdk | Claude Code via the claude-agent-sdk Python package |
openai-agents | OpenAI Agents SDK |
codex | OpenAI Codex CLI via @openai/codex npm package |
pi | Pi harness (Anthropic Pi) |
claude-native | Native Claude Code CLI, tmux-based |
codex-native | Native Codex CLI, tmux-based |
Session Lifecycle
A session is the live context for one agent conversation. Here is how a typical interactive session flows from start to finish:stream() callers, and teammates watching a shared session.
Local vs. Server Mode
- Local mode (default)
- Deployed server mode
Running
omnigent claude or omnigent run with no --server flag starts everything on your machine in one step. A background daemon:- Auto-starts a local Omnigent server on
http://localhost:6767. - Connects a runner to that server via the WebSocket tunnel.
http://localhost:6767 shows the same session. Teammates on your LAN can open your machine’s LAN address (e.g. http://192.168.x.x:6767) to watch or co-drive.