{"id":16260056,"url":"https://github.com/cludden/protoc-gen-go-temporal","last_synced_at":"2026-03-14T18:27:31.202Z","repository":{"id":65935634,"uuid":"602804872","full_name":"cludden/protoc-gen-go-temporal","owner":"cludden","description":"a protoc plugin for generating Temporal clients and workers in Go from protobuf schemas","archived":false,"fork":false,"pushed_at":"2024-04-12T23:17:51.000Z","size":3526,"stargazers_count":51,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-04-13T10:05:59.725Z","etag":null,"topics":["buf","go","golang","protobuf","protoc","temporal"],"latest_commit_sha":null,"homepage":"https://cludden.github.io/protoc-gen-go-temporal/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cludden.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-02-17T01:12:54.000Z","updated_at":"2024-06-20T23:40:20.369Z","dependencies_parsed_at":null,"dependency_job_id":"803da0d0-787e-4cdc-91ef-b1c76608c866","html_url":"https://github.com/cludden/protoc-gen-go-temporal","commit_stats":null,"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cludden%2Fprotoc-gen-go-temporal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cludden%2Fprotoc-gen-go-temporal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cludden%2Fprotoc-gen-go-temporal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cludden%2Fprotoc-gen-go-temporal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cludden","download_url":"https://codeload.github.com/cludden/protoc-gen-go-temporal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244515640,"owners_count":20464924,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["buf","go","golang","protobuf","protoc","temporal"],"created_at":"2024-10-10T16:06:11.305Z","updated_at":"2026-03-14T18:27:31.194Z","avatar_url":"https://github.com/cludden.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://cludden.github.io/protoc-gen-go-temporal/\"\u003e\n    \u003cimg src=\"./docs/static/img/logo.png\" width=\"300\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n# protoc-gen-go-temporal\n\n[![Docs](https://img.shields.io/badge/docs-learn_more-8f63ff)](https://cludden.github.io/protoc-gen-go-temporal/)\n[![GoDoc](https://godoc.org/github.com/cludden/protoc-gen-go-temporal?status.svg)](https://pkg.go.dev/github.com/cludden/protoc-gen-go-temporal)\n[![Buf](https://img.shields.io/badge/buf-cludden%2Fprotoc--gen--go--temporal-blue)](https://buf.build/cludden/protoc-gen-go-temporal)\n[![Static Badge for Temporal Code Exchange](https://img.shields.io/badge/Temporal-Code_Exchange_Featured-blue?style=flat-square\u0026logo=temporal\u0026labelColor=141414\u0026color=444CE7)](https://temporal.io/code-exchange/go-code-generation-with-temporal-and-protobufs)\n\nA 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. \n\n\u003csmall\u003e\u003ci\u003eInspired by [Chad Retz's](https://github.com/cretz/) awesome [github.com/cretz/temporal-sdk-go-advanced](https://github.com/cretz/temporal-sdk-go-advanced) and [Jacob LeGrone's](https://github.com/jlegrone/) excellent Replay talk on [Temporal @ Datadog](https://youtu.be/LxgkAoTSI8Q)\u003c/i\u003e\u003c/small\u003e\n\n\n\n## How it works\n\n1. Annotate your protobuf services and methods with Temporal options provided by this plugin\n2. Generate Go code that includes types, methods, and functions for implementing Temporal clients, workers, and cli applications\n3. Define implementations for the required Workflow and Activity interfaces\n4. Run your Temporal worker using the generated helpers and interact with it using the generated client and/or cli\n\n\n\n## Features\n\nGenerated **Client** with:\n  - methods for executing workflows, queries, signals, and updates\n  - methods for cancelling or terminating workflows\n  - default `client.StartWorkflowOptions`, `client.UpdateWorkflowWithOptionsRequest`, and more\n  - dynamic workflow ids, update ids, and search attributes via [Bloblang expressions](https://cludden.github.io/protoc-gen-go-temporal/docs/guides/bloblang)\n  - default timeouts, id reuse policies, retry policies, wait policies, and more\n\n\nGenerated **Worker** resources with:\n  - functions for calling activities and local activities from workflows\n  - functions for executing child workflows and signaling external workflows\n  - default `workflow.ActivityOptions`, `workflow.ChildWorkflowOptions`\n  - default timeouts, parent close policies, retry policies, and more\n\n\nOptional **CLI** with:\n  - commands for executing workflows, synchronously or asynchronously\n  - commands for starting workflows with signals or updates, synchronously or asynchronously\n  - commands for querying existing workflows\n  - commands for signaling or updating existing workflows\n  - typed flags for conveniently specifying workflow, query, and signal inputs\n\nGenerated **Nexus** helpers: **[Experimental]**\n  - with support for invoking a service's workflows via Nexus operations\n\nGenerated **Cross-Namespace (XNS)** helpers:\n  - with support for invoking a service's workflows, queries, signals, and updates from workflows in a different temporal namespace (or cluster)\n\nGenerated **Remote Codec Server** helpers\n\nGenerated **Markdown Documentation**\n\n\n\n## Documentation\n\nSee the [documentation](https://cludden.github.io/protoc-gen-go-temporal/) for guides on how to configure and use this plugin.\n\n\n\n## Development\n\n1. Install [mise](https://mise.jdx.dev/installing-mise.html)\n2. Update generated code\n  ```shell\n  mise r build \u0026\u0026 mise r genlocal\n  ```\n1. Run tests\n  ```shell\n  mise r test\n  ```\n\n\n\n## License\nLicensed under the [MIT License](LICENSE.md)  \nCopyright 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, 2026.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcludden%2Fprotoc-gen-go-temporal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcludden%2Fprotoc-gen-go-temporal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcludden%2Fprotoc-gen-go-temporal/lists"}