Agent Harness
An LLM is not an agent by itself. A useful agent needs runtime behavior around the model: tools, memory, context control, a workspace, guardrails, events, delegation, and a serving boundary. That runtime is the agent harness. OmniCoreAgent is built as an open Python agent harness. You still choose the model and the tools, but the execution system around them is already assembled.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
Implementation-Backed Capability Map
Every capability below maps to code in the repository.The Harness Loop
The core loop is a controlled runtime cycle: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.OmniCoreAgent, OmniServe, And OmniDaemon
These are separate layers:
Keeping these boundaries clear matters. OmniCoreAgent should stay focused on the
agent harness. Serving and event-driven infrastructure should live outside the
core loop.
Boundaries
OmniCoreAgent stays focused on the in-process agent harness. That boundary keeps the core runtime 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.
- Distributed process supervision belongs in OmniDaemon, while HTTP/SSE serving belongs in OmniServe.
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.