How temporal-community/temporal-agent-harness works
Temporal Agent Harness is a Python framework for durable, composable AI agents, with web and typed-UI components for running and observing sessions. The main workflow is user session creation, child-workflow execution, and streaming results to a client; agent turns can also involve tools, approvals, callbacks, and subagents. The graph includes documented SDK and integration capabilities. Some links rely on README statements because the corresponding implementation excerpts were not supplied; these are identified by README evidence rather than implying those files were inspected.
Main entry points: agent_workflow.py Agent workflow · app.py Web API · agent_client.py Agent client · session_manager.py Session manager
Components 24
Agent runtime
- Agent workflow
temporal_agent_harness/harness/agent_workflow.py - Agent protocol
temporal_agent_harness/harness/agent_protocol/agent_interface.py - Lifecycle events
temporal_agent_harness/harness/agent_protocol/events.py - Agent client
temporal_agent_harness/harness/agent_client.py - Stream merging
temporal_agent_harness/harness/stream_merge - Agent state
temporal_agent_harness/harness/state - Worker plugin
temporal_agent_harness/plugin.py
Agent capabilities
- Tool approvals
temporal_agent_harness/harness/jev_approvals/approver.py - Code Mode
temporal_agent_harness/harness/code_mode/driver.py - Callback tools
temporal_agent_harness/harness/agent_protocol/subagent_interface.py - Subagents
temporal_agent_harness/harness/subagent_toolset.py
SDK integrations
- OpenAI Agents adapter
temporal_agent_harness/ai_sdks/openai_agents_harness.py - Gemini adapter
temporal_agent_harness/ai_sdks/google_genai_plugin/workflow.py - Pydantic AI adapter
temporal_agent_harness/ai_sdks/pydantic_ai_harness.py
Web sessions
- Web API
temporal_agent_harness/web/app.py - Session manager
temporal_agent_harness/web/session_manager.py
Client interfaces
- Browser API client
packages/client/src/session.ts - Stream protocol types
packages/client/src/frames.ts - Svelte SDK
packages/svelte/src/lib/session.svelte.ts - React SDK
packages/react/src/session.ts - Harness UI
ui/src/App.svelte
Other components
- Agent user
- Temporal service
- AI SDK / model
Connections 28
- Agent user → Web API: creates session
README.md - Web API → Session manager: queries sessions
temporal_agent_harness/web/app.py - Session manager → Agent workflow: starts child
temporal_agent_harness/web/session_manager.py - Session manager → Temporal service: runs workflow
README.md - Agent workflow → Temporal service: durable execution
README.md - Agent workflow → AI SDK / model: invokes AI SDK
README.md - Agent workflow → Agent protocol: implements contract
- Agent workflow → Lifecycle events: publishes events
README.md - Agent client → Temporal service: sends updates
temporal_agent_harness/harness/agent_client.py - Web API → Agent client: reads interface
temporal_agent_harness/web/app.py - Agent client → Agent protocol: uses contract
temporal_agent_harness/harness/agent_client.py - Agent client → Stream merging: merges stream
temporal_agent_harness/harness/agent_client.py - Agent workflow → Agent state: maintains state
- Agent workflow → Tool approvals: requests approval
README.md - Agent workflow → Code Mode: runs scripts
README.md - Agent workflow → Callback tools: dispatches callbacks
README.md - Agent workflow → Subagents: composes agents
README.md - Worker plugin → Temporal service: registers runtime
README.md - OpenAI Agents adapter → Agent workflow: adapts turns
README.md - Gemini adapter → Agent workflow: adapts turns
README.md - Pydantic AI adapter → Agent workflow: adapts turns
README.md - Browser API client → Web API: calls API
- Web API → Stream protocol types: streams events
packages/client/src/frames.ts - Stream protocol types → Lifecycle events: types events
packages/client/src/frames.ts - Svelte SDK → Browser API client: wraps sessions
- React SDK → Browser API client: wraps sessions
- Harness UI → Svelte SDK: uses SDK
ui/src/App.svelte - Agent user → Harness UI: observes session
README.md