A runner is the Python subprocess that executes an agent session’s LLM loop and tools. Runners connect to the Omnigent server over a WebSocket tunnel, receive task inputs, execute them using the configured harness (Claude SDK, OpenAI Agents, Codex, etc.), and stream events back to the server for broadcast to connected clients. Each runner is bound to exactly one session.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.
Runners are not deployed separately — they run on user machines or cloud sandboxes (the host). The server acts as the message broker between runners and clients. When a host is registered with
omnigent host, it spawns runners on demand when the server sends a launch command.Runner Lifecycle
When a session starts, the following sequence occurs:- The server creates the session row and waits for a runner to connect.
- If a
host_idis set, the server sends aPOST /v1/hosts/{host_id}/runnerslaunch command to the host daemon, which spawns a Python subprocess (the runner). - If no
host_idis set, the runner connects directly from the CLI or SDK (omnigent run). - The runner opens a WebSocket tunnel to the server and advertises its capabilities (harnesses, tools).
- The session’s
runner_idis written andrunner_onlineflips totruein health checks. - The runner receives task inputs from the server, executes the LLM loop, and streams events back.
- When the session ends (user deletes it, agent completes, or interrupt is issued), the runner exits cleanly and the tunnel closes.
GET /v1/runners while their tunnel is open, and disappear from the listing when they exit. The session row retains the runner_id even after the runner disconnects; runner_online reflects real-time tunnel state.
List Runners
GET /v1/runners
Returns currently online runners owned by the requesting user. When authentication is active, only runners whose tunnel was established by the same user are returned. Without auth (local/dev mode), all online runners are listed.
Response:
Stable runner identifier, e.g.
"runner_0123456789abcdef".Session this runner is bound to.
Harness types this runner supports, e.g.
["claude-sdk", "codex"]."online" when the tunnel is active.Get Runner Status
GET /v1/runners/{runner_id}/status
Returns whether a specific runner currently has an open WebSocket tunnel. When authentication is active, a runner owned by a different user appears as offline (to prevent enumeration).
Path parameter: runner_id — the runner identifier.
Response:
The runner identifier echoed from the request.
true when the runner has an active tunnel; false when offline or not visible to the caller.Checking Runner Status via Health Endpoint
The/health endpoint provides a convenient way to check runner (and host) status for one or more sessions in a single request:
IN query rather than N per-ID round trips, making it efficient for polling many sessions (e.g. the web sidebar).