https://github.com/tzrikka/timpani
Temporal worker that sends API calls and receives asynchronous event notifications
https://github.com/tzrikka/timpani
bitbucket discord github gmail go golang jira pubsub slack temporal temporalio webhook websocket workflow-automation workflow-reusable workflows
Last synced: 7 days ago
JSON representation
Temporal worker that sends API calls and receives asynchronous event notifications
- Host: GitHub
- URL: https://github.com/tzrikka/timpani
- Owner: tzrikka
- License: apache-2.0
- Created: 2025-07-22T00:45:41.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-20T04:50:32.000Z (12 days ago)
- Last Synced: 2026-01-20T11:17:53.595Z (12 days ago)
- Topics: bitbucket, discord, github, gmail, go, golang, jira, pubsub, slack, temporal, temporalio, webhook, websocket, workflow-automation, workflow-reusable, workflows
- Language: Go
- Homepage: https://pkg.go.dev/github.com/tzrikka/timpani
- Size: 23.7 MB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Notice: NOTICE
Awesome Lists containing this project
README
# Timpani
[](https://pkg.go.dev/github.com/tzrikka/timpani)
[](https://codewiki.google/github.com/tzrikka/timpani)
[](https://goreportcard.com/report/github.com/tzrikka/timpani)
Timpani is a [Temporal](https://temporal.io/) worker that sends API calls and receives asynchronous event notifications to/from various well-known third-party services.
API calls are wrapped and exposed as Temporal [activities](https://docs.temporal.io/activities) for robustness and durable execution in larger workflows.
Event listeners are similarly reliable and scalable, and support multiple technologies: HTTP webhooks, [WebSocket](https://en.wikipedia.org/wiki/WebSocket) connections, and [Pub/Sub](https://cloud.google.com/pubsub/docs/overview) subscriptions. They may be passive and stateless receivers with a static configuration on the remote service's side, or semi-active subscribers that renew their subscription from time to time, or stateful clients maintaining a 2-way streaming connection with the remote service.
For example:
- Discord: WebSocket client
- Gmail: Google Cloud Pub/Sub subscriber
- Jira: stateful HTTP webhook (with periodic subscription renewals)
- Slack: stateless HTTP webhook / WebSocket client
## Dependencies
- [Temporal](https://temporal.io/)
- [Thrippy](https://github.com/tzrikka/thrippy)
(preferably with a secrets manager, e.g. [HashiCorp Vault](https://developer.hashicorp.com/vault))