Four Layers, Four Responsibilities

| Layer | Owns | Typical artifacts | Selection question |
|---|---|---|---|
| Model | Generation and reasoning | Weights, API, context window | Which model meets the task, latency, privacy, and cost constraints? |
| Repository harness | Project-specific instructions and controls | AGENTS.md, CLAUDE.md, skills, hooks, policies | What behavior must remain portable with the repository? |
| Runtime harness | Tool loop, permissions, state, recovery | CLI, IDE agent, desktop or cloud runtime | Who owns plan, act, observe, repeat? |
| Orchestrator | Queues, workspaces, budgets, multiple runs | Scheduler, fleet manager, task board | What must coordinate more than one runtime or agent? |
Frameworks, SDKs, sandboxes, memory systems, evaluation tools, observability platforms, and protocols sit beside or below these layers. LangGraph can help build a runtime; E2B can isolate its execution; Mem0 can persist memory; Langfuse can observe it; MCP can connect tools. None of those roles alone proves ownership of the coding loop.
The term meta-harness has two incompatible uses. Optimizer research uses it for a system that changes one or more harness layers under evaluation. Products such as Omnigent use it for a common interface that dispatches tasks to existing harnesses. Keep the roles separate: this guide classifies a dispatcher as an orchestrator or control plane, while a harness optimizer changes the system that will perform future runs. The generated directory below preserves each pinned source's wording, so Omnigent's row retains its upstream meta-harness label even though the guide layer is orchestration. See the Databricks cost-management resource evaluation for the terminology boundary.