Skip to content

Add Temporal plugin to integrations#1331

Open
drewhoskins-temporal wants to merge 1 commit intogoogle:mainfrom
drewhoskins-temporal:drewhoskins_temporal_integration
Open

Add Temporal plugin to integrations#1331
drewhoskins-temporal wants to merge 1 commit intogoogle:mainfrom
drewhoskins-temporal:drewhoskins_temporal_integration

Conversation

@drewhoskins-temporal
Copy link

Document the upcoming Temporal integration. temporalio/sdk-python#1282

@netlify
Copy link

netlify bot commented Feb 20, 2026

Deploy Preview for adk-docs-preview ready!

Name Link
🔨 Latest commit 81c4957
🔍 Latest deploy log https://app.netlify.com/projects/adk-docs-preview/deploys/6997bc827e8e120008e2907a
😎 Deploy Preview https://deploy-preview-1331--adk-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@google-cla
Copy link

google-cla bot commented Feb 20, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

client,
task_queue="adk-task-queue",
workflows=[WeatherAgentWorkflow],
plugins=[TemporalAdkPlugin()],

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's good practice to put the plugin on the client. In this case your code will fail because the pydantic data converter will not be used.

from temporalio.client import Client

async def start():
client = await Client.connect("localhost:7233")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need the plugin.

print(result)
```

### Using custom tools as Activities

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using activities as tools, not the reverse.

Copy link
Collaborator

@koverholt koverholt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR and contribution! Exciting to see the ongoing plugin work in the linked PR.

I left some comments to address. And I'm going to apply the blocked label to this PR until the updated SDK/integration is released and ready for us to test (let us know!).

You'll also need to sign the CLA per the bot's failing CI test, you can find more details in https://github.com/google/adk-docs/pull/1331/checks?check_run_id=64235775129.

---
catalog_title: Temporal
catalog_description: Resilient, scalable agents, long-running agents and tools, human approvals, safe versioning, and more using the world's leading durable execution provider.
catalog_icon: /adk-docs/integrations/assets/temporal.svg
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The icon reference here has .svg, but the uploaded icon is in .png format, so the card icon is currently broken.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Logos and assets for integrations should be placed in docs/integrations/assets/.

@@ -0,0 +1,248 @@
---
catalog_title: Temporal
catalog_description: Resilient, scalable agents, long-running agents and tools, human approvals, safe versioning, and more using the world's leading durable execution provider.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please shorten this description to ~10 words and remove superlative language like "using the world's leading durable execution provider" to be consistent with the other integrations.

| Human-in-the-loop | Your Agent Workflow can wait for [Signals](https://docs.temporal.io/signals) and [Updates](https://docs.temporal.io/messages#updates) to wait for human input, and clients can send those to resume the Agent |
| Deterministic runtime | `TemporalAdkPlugin` replaces non-deterministic calls with Temporal-safe equivalents |
| Debuggability | Every LLM call and tool execution is visible as an Activity in the Temporal UI, making it trivial to debug faults. |
| Observability | Work with your favorite Observability solution using OpenTelemetry, with cross-process spans that are resilient to crashes.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add missing closing pipe delimiter:

Suggested change
| Observability | Work with your favorite Observability solution using OpenTelemetry, with cross-process spans that are resilient to crashes.
| Observability | Work with your favorite Observability solution using OpenTelemetry, with cross-process spans that are resilient to crashes. |

Comment on lines +23 to +45
- **Durable execution**: Never lose progress. If your agent crashes or stalls,
Temporal automatically recovers from the last successful step - no manual
[session resumption](https://google.github.io/adk-docs/runtime/resume/#resume-a-stopped-workflow)
required.
- **Built-in retries and rate limiting**: Configurable
[retry policies](https://docs.temporal.io/encyclopedia/retry-policies) with
backoff, plus mechanisms for handling backpressure from LLM providers.
- **Long-running and ambient agents**: Support for agents that run for hours,
days, or indefinitely using blocking awaits and
[worker versioning](https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning).
- **Human-in-the-loop**: Pause execution until a human approves, then resume
where you left off. Temporal's
[task routing](https://docs.temporal.io/task-routing) scalably routes incoming
signals (such as user chats or approvals) to the correct workflow.
- **Long-running tools**: Execute tools that take minutes or hours as
[Activities](https://docs.temporal.io/activities) with heartbeating, timeouts,
and retries - no separate microservices needed.
- **Observability and debugging**: Inspect every step of your agent's execution,
replay workflows deterministically, and pinpoint failures using the
[Temporal UI](https://docs.temporal.io/web-ui).
- **Safe versioning**: Deploy new agent versions without breaking in-flight
executions via
[worker versioning](https://docs.temporal.io/production-deployment/worker-deployments/worker-versioning).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider reducing these use cases to fewer bullets down to 4-5 total, it's a lot for readers to take in near the top of the doc. Combine bullets where possible, and focus on core benefits instead of listing all features.


- **Durable execution**: Never lose progress. If your agent crashes or stalls,
Temporal automatically recovers from the last successful step - no manual
[session resumption](https://google.github.io/adk-docs/runtime/resume/#resume-a-stopped-workflow)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change the absolute link to a site-relative path:

Suggested change
[session resumption](https://google.github.io/adk-docs/runtime/resume/#resume-a-stopped-workflow)
[session resumption](/adk-docs/runtime/resume/#resume-a-stopped-workflow)

Comment on lines +50 to +51
- A [Gemini API key](https://aistudio.google.com/app/api-keys) (or any
[supported model](https://google.github.io/adk-docs/agents/models/))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change the absolute link to a site-relative path:

Suggested change
- A [Gemini API key](https://aistudio.google.com/app/api-keys) (or any
[supported model](https://google.github.io/adk-docs/agents/models/))
- A [Gemini API key](https://aistudio.google.com/app/api-keys) (or any
[supported model](/adk-docs/agents/models/))


### Using MCP tools

Execute [MCP](https://google.github.io/adk-docs/mcp/) tools as Temporal
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change the absolute link to a site-relative path:

Suggested change
Execute [MCP](https://google.github.io/adk-docs/mcp/) tools as Temporal
Execute [MCP](/adk-docs/mcp/) tools as Temporal

from datetime import timedelta
from temporalio import activity
from temporalio.contrib.google_adk_agents.workflow import activity_tool
from temporalio.workflow import ActivityConfig
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ActivityConfig is not used in this code sample.

from temporalio.workflow import ActivityConfig

@activity.defn
async def get_weather(city: str) -> str:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are a few other issues across code samples such as:

  • get_weather is used in the first code sample but not defined until the fourth code sample.
  • Agent is imported in the first code sample but not the others

You can consider either:

  1. Defining all necessary imports in each code sample so that each sample is standalone (likely works best for this integration).
  2. Defining all imports in one code block at the top, then each subsequent code sample is additive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants