Skip to main content

Agent Harness

An LLM is not an agent by itself. The harness is the loop around the model that makes it one: tools, memory, context control, a workspace, guardrails, events and delegation, already assembled. You choose the model and the tools. The harness is one layer of OmniCoreAgent, the agent runtime. Around it, the runtime adds control (a policy on every action, a sandbox, budgets), durability (runs that survive a crash) and the record of every run. How it fits together shows all four layers; this page is the harness.

Why This Matters

A basic tool-calling agent is easy to build. The hard part starts when the agent needs to work for more than one or two steps:
  • tool calls become sequential bottlenecks
  • large tool outputs fill the prompt
  • old context pushes the model toward provider limits
  • external tool output carries prompt-injection risk
  • the agent repeats the same failing action
  • workers need to split independent work and report back
  • intermediate files, notes, logs, and artifacts need a durable place to live
  • the app eventually needs a stable HTTP/SSE serving boundary
OmniCoreAgent exists because these are runtime problems, not prompt-only problems.

Implementation-Backed Capability Map

Every capability below maps to code in the repository.

The Harness Loop

The core loop is a controlled runtime cycle:
This loop is why OmniCoreAgent supports simple assistants and deeper long-running agents through the same entry point.

Defaults Versus Harness Features

The default agent includes the protections needed for reliable multi-step execution. Capabilities that change the tool surface or require external services remain opt-in.

Where the harness sits


Boundaries

The harness stays focused on the loop around the model. That keeps it clean:
  • MCP brings external MCP server tools into the same runtime surface as local tools, workspace tools, skills, and harness tools.
  • Context management works by acting before the model call against the configured budget.
  • Cloud workspace storage is used when the S3 or R2 backend is installed and configured.
  • HTTP/SSE serving is OmniServe’s, in the same package.
Control, durability and the record are layers of the runtime beside the harness, not inside the loop.

Normal, deep and background execution

OmniCoreAgent is the public agent for both normal and deep runs. Enable agent_config={"enable_subagents": True} to register the native spawn_subagents tool and let the parent create focused workers with a shared workspace. Both run() and stream() support this mode. There is no separate DeepAgent class. Configured children can also be supplied through sub_agents. The facade builds this capability through core/runtime/builder.py and core/runtime/harness_tools.py; worker creation lives in core/subagents.py. Background execution is a separate scheduling and persistence layer around the same agent runtime, exposed through BackgroundAgentManager. It provides durable job lifecycle and retry handling. Retired router/sequential/parallel workflow classes are not required for native parallel tool calls or child batches.