protoc-gen-go-temporal

module
v1.22.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2026 License: MIT

README

protoc-gen-go-temporal

Docs GoDoc Buf Static Badge for Temporal Code Exchange

A protoc plugin for generating typed Temporal clients and workers in Go from protobuf schemas. This plugin allows Workflow authors to configure sensible defaults and guardrails, simplifies the implementation and testing of Temporal workers, and streamlines integration by providing typed client SDKs and a generated CLI application.

Inspired by Chad Retz's awesome github.com/cretz/temporal-sdk-go-advanced and Jacob LeGrone's excellent Replay talk on Temporal @ Datadog

How it works

  1. Annotate your protobuf services and methods with Temporal options provided by this plugin
  2. Generate Go code that includes types, methods, and functions for implementing Temporal clients, workers, and cli applications
  3. Define implementations for the required Workflow and Activity interfaces
  4. Run your Temporal worker using the generated helpers and interact with it using the generated client and/or cli

Features

Generated Client with:

  • methods for executing workflows, queries, signals, and updates
  • methods for cancelling or terminating workflows
  • default client.StartWorkflowOptions, client.UpdateWorkflowWithOptionsRequest, and more
  • dynamic workflow ids, update ids, and search attributes via Bloblang expressions
  • default timeouts, id reuse policies, retry policies, wait policies, and more

Generated Worker resources with:

  • functions for calling activities and local activities from workflows
  • functions for executing child workflows and signaling external workflows
  • default workflow.ActivityOptions, workflow.ChildWorkflowOptions
  • default timeouts, parent close policies, retry policies, and more

Optional CLI with:

  • commands for executing workflows, synchronously or asynchronously
  • commands for starting workflows with signals or updates, synchronously or asynchronously
  • commands for querying existing workflows
  • commands for signaling or updating existing workflows
  • typed flags for conveniently specifying workflow, query, and signal inputs

Generated Nexus helpers: [Experimental]

  • with support for invoking a service's workflows via Nexus operations

Generated Cross-Namespace (XNS) helpers:

  • with support for invoking a service's workflows, queries, signals, and updates from workflows in a different temporal namespace (or cluster)

Generated Remote Codec Server helpers

Generated Markdown Documentation

Documentation

See the documentation for guides on how to configure and use this plugin.

Development

  1. Install mise
  2. Update generated code
mise r build && mise r genlocal
  1. Run tests
mise r test

License

Licensed under the MIT License
Copyright for portions of project cludden/protoc-gen-go-temporal are held by Chad Retz, 2021 as part of project cretz/temporal-sdk-go-advanced. All other copyright for project cludden/protoc-gen-go-temporal are held by Chris Ludden, 2025.

Directories

Path Synopsis
cmd
examples
codecserver command
helloworld command
mutex command
nexus command
schedule command
updatabletimer command
xns command
gen
example/helloworld/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/helloworld/v1/helloworldv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/mutex/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/mutex/v1/mutexv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/nexus/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/nexus/v1/nexusv1nexus
Code generated by protoc-gen-go-nexus.
Code generated by protoc-gen-go-nexus.
example/nexus/v1/nexusv1nexustemporal
Code generated by protoc-gen-go-nexus-temporal.
Code generated by protoc-gen-go-nexus-temporal.
example/nexus/v1/nexusv1temporal
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/schedule/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/schedule/v1/schedulev1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/searchattributes/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/searchattributes/v1/searchattributesv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/shoppingcart/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/shoppingcart/v1/shoppingcartv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/updatabletimer/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/updatabletimer/v1/updatabletimerv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/xns/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
example/xns/v1/xnsv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/acronym/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/acronym/v1/acronymv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/activity/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/cliv3
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/editions
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/editions/editionsxns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/issue-125/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/issue-125/v1/issue_125v1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/issue-133/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/issue-135/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/opaque
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/opaque/opaquexns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/option/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/option/v1/optionv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/patch
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/patch/patchxns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/proto3optional
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/proto3optional/proto3optionalxns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/simple/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/simple/v1/v1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/workerversioning/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/workerversioning/v1/workerversioningv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/xnserr/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/xnserr/v1/xnserrv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/xnsheartbeat/v1
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
test/xnsheartbeat/v1/xnsheartbeatv1xns
Code generated by protoc-gen-go_temporal.
Code generated by protoc-gen-go_temporal.
internal
mocks
pkg
xns
test
acronym command
activity command
cliv3/cmd/cliv3 command
issue-125 command
issue-135 command
option command
simple command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL