Temporal Agent Harness vs Orchestrator Zero
oz0 records agent jobs running on your infrastructure. Both use Temporal workflows. The harness is a library for building agents; oz0 adds machine management, tenants, a model gateway and reviewed tool definitions. Recovery in oz0 depends on the agent type.
What Temporal Agent Harness is
The Temporal Agent Harness is an experimental, MIT-licensed Python library from Temporal Technologies for building agents on Temporal. Each agent is a Temporal workflow whose model and tool calls run as activities on workers you host, against a self-hosted Temporal service or Temporal Cloud. Turn logic uses an existing AI SDK (Google Gemini, the OpenAI Agents SDK or Pydantic AI), and Temporal calls the project earlier than public preview.
github.com- Runs
- Self-hosted or managed
- Licence
- MIT
- Checked
- 27 October 2026
Side by side.
Temporal Agent Harness's ratings come from its own pages. A column's name opens its definition and how Orchestrator Zero does it. How we rated
Where it runs
Any machine you own
Yes
DocsYes
Agents run on Temporal workers, which run on hosts outside the Temporal service that you choose.
Linux, macOS and Windows
Yes
Workers are Python processes on the Temporal Python SDK, which Temporal publishes as native wheels for Windows, macOS and Linux, and the harness itself is pure Python; its own docs say nothing about operating systems.
Fleet operations
Yes
DocsConditional: Worker list, no machine join
Temporal lists and versions workers and routes tasks through queues. Managing host enrollment, revocation and operating-system upgrades remains outside the harness.
Durability
Governance
Tool policy outside the model
Yes: Per agent and session
Each tool call is checked against a serialisable approval policy (allow lists, inherently safe tools, and an auto mode with approve, deny and escalate criteria), and anything not allowed waits for a person; the policy is set per agent, overridable per session and at runtime, and enforced in the workflow.
Approvals in chat
Yes: Slack, Discord and Teams
A gated tool call pauses inside the workflow until a decision arrives from the web UI, the API, or the optional Slack and Discord front end in the repository; a Nexus connector covers Slack and Microsoft Teams.
Tool snapshots
Yes
DocsNot documented
The MCP gateway discovers tools from registered servers. The docs do not describe a stored definition comparison that blocks changed tools pending approval.
Tenants built in
Yes
DocsConditional: Namespaces, access is yours
Temporal namespaces separate work, but on a self-hosted service restricting access to each one needs a custom authorizer you write.
Cost
Budgets that stop a run
Conditional: Tokens counted, no budget
The harness records token usage. A built-in monetary budget that stops a run is not documented.
Security
Provider keys off the workers
Yes
DocsNo: Keys in worker environment
Model calls run as activities on your workers, which read the provider key from their environment; Temporal offers no gateway that holds it.
Sandbox with an egress allowlist
Conditional: Code Mode only, no allowlist
Model-written Code Mode scripts run in the Monty sandbox and act only through your tools, but the tools themselves run on the worker with no isolation or egress allowlist.
Audit and compliance
Tamper-evident audit trail
Conditional: History, not tamper-evident
Temporal history and the harness event stream record turns, tools and approval decisions. Cloud audit logs cover control-plane operations; a verifiable hash chain or signature for agent activity is not documented.
Erasure by key
Conditional: Delete runs, no per-user keys
Each agent session is a workflow you can delete with its history, and payload encryption is a codec you write and key yourself, so per-person keys and crypto-shredding are your own code.
Retention with legal hold
Conditional: Retention, no legal hold
A namespace sets how long closed workflow histories are kept, 1 to 90 days on Temporal Cloud, and nothing documents a legal hold.
Openness
Model provider choice
Yes
DocsYes
Integrations cover Google Gemini, the OpenAI Agents SDK (OpenAI and LiteLLM models) and Pydantic AI, whose providers include Anthropic and local models; the harness docs do not name local models themselves.
MCP and A2A
Yes
DocsConditional: MCP, no A2A
Agents use MCP servers through the OpenAI Agents integration and a Nexus MCP package; agents call each other through the harness's own typed interfaces, and A2A does not appear in the repository.
Where Temporal Agent Harness is stronger.
Managed control plane available
Agents can run against Temporal Cloud, a managed service whose operator has a SOC 2 Type 2 report, so there is no control plane to operate.
docs.temporal.ioApprovals in Microsoft Teams
A Nexus connector in the repository brings agents and their approval prompts to Microsoft Teams as well as Slack; Orchestrator Zero's Teams plugin has been tested only against a stand-in so far.
github.comTyped React and Svelte UIs
Client SDKs turn an agent's Python class into a typed session object for a React or Svelte product UI.
github.comOpen source today
The harness is public on GitHub under MIT.
github.com
Full in Temporal Agent Harness, partial in oz0: Durable runs, Tool policy outside the model, Approvals in chat.
Differences to examine.
Compare the scope, conditions and editions in the source notes.
- Fleet operations
- Tenants built in
- Budgets that stop a run
- Provider keys off the workers
- Tamper-evident audit trail
- Erasure by key
- MCP and A2A
Using both
Both run each agent as a Temporal workflow and both support Pydantic AI and the OpenAI Agents SDK, which eases moving agent code between them. Orchestrator Zero can run on a Temporal cluster you already have, and a harness agent can call an Orchestrator Zero agent as an MCP tool.
Based on documentation; this pairing has not been tested.
Find your first task.
Explore an example or read the public Docs preview. Software access is coming soon.