| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Declarative YAML workflows on Temporal. No SDK boilerplate.
Zigflow lets you define and run Temporal workflows using YAML, built on the CNCF Open Workflow Specification (formerly Serverless Workflow). You write a workflow definition; Zigflow compiles it into a fully-featured Temporal workflow with retries, state management and deterministic execution. No Go, Java or TypeScript workflow code required.
If this looks useful, a ⭐ helps others find the project.
Run your first workflow in a few minutes and see the result.
Install Zigflow
brew tap zigflow/tap
brew trust --cask zigflow/tap/zigflow
brew install --cask zigflowFor other options, see installation docs.
Start a Temporal server
Requires the Temporal CLI
temporal server start-devThe Temporal UI will be available at http://localhost:8233.
Create a workflow
Save this as workflow.yaml:
document:
dsl: 1.0.0
taskQueue: zigflow
workflowType: hello-world
version: 1.0.0
do:
- greet:
output:
as:
data: ${ . }
set:
message: Hello from ZiggyRun it
zigflow run -f workflow.yamlTrigger the workflow
temporal workflow start \
--type hello-world \
--task-queue zigflow \
--workflow-id my-first-workflow
temporal workflow result \
--workflow-id my-first-workflowYou should see the workflow output in the CLI.
⭐ Star the repo if this was useful
Writing Temporal workflows in code is powerful, but it comes with overhead: learning the SDK, wiring up workers and keeping workflow code deterministic. Zigflow provides an opinionated declarative layer on top of Temporal, built around proven workflow patterns to simplify common orchestration use cases while retaining Temporal’s reliability and execution model.
Zigflow is an opinionated, declarative layer on top of Temporal. It trades some SDK-level flexibility for faster development and consistent workflow structure.
Use the SDK when you need maximum flexibility. Use Zigflow when you want consistent, declarative orchestration with less boilerplate.
Zigflow is designed for teams who value speed, consistency and declarative orchestration over maximum SDK flexibility.
In those cases, use Temporal directly. Zigflow is an opinionated layer on top of Temporal, not a replacement for its full SDK capabilities.
Zigflow handles orchestration while your services execute the work.
Sends an email every 30 days for 12 months using an HTTP endpoint.
document:
dsl: 1.0.0
taskQueue: zigflow
workflowType: send-email
version: 0.0.1
do:
- for:
for:
in: ${ 12 } # repeat 12 times (once per month)
do:
- sendEmail:
call: http
with:
method: POST
endpoint: https://example.com/send-email
headers:
Content-Type: application/json
body:
to: user@example.com
subject: Hello
message: Hello from Zigflow
- wait30Days:
wait:
days: 30zigflow run -f ./workflow.yamlZigflow starts the worker. You can then trigger the workflow from any Temporal SDK, the Temporal UI or the Temporal CLI.
Runnable version: examples/activity-call
Call external Temporal activities from a declarative definition. Input is validated against a JSON Schema before the workflow runs.
document:
dsl: 1.0.0
taskQueue: zigflow
workflowType: activity-call
version: 0.0.1
metadata:
activityOptions:
startToCloseTimeout:
minutes: 1
input:
schema:
format: json
document:
type: object
required:
- userId
properties:
userId:
type: string
do:
- captureInput:
set:
requestedUserId: ${ $input.userId }
requestId: ${ uuid }
- fetchProfile:
call: activity
with:
name: activitycall.FetchProfile
arguments:
- ${ $data.requestedUserId }
- ${ $data.requestId }
taskQueue: activity-call-worker
- generateWelcome:
call: activity
with:
name: activitycall.GenerateWelcome
arguments:
- ${ $data.fetchProfile }
taskQueue: activity-call-worker
- finalize:
set:
workflowId: ${ $data.requestId }
profile: ${ $data.fetchProfile }
message: ${ $data.generateWelcome.message }Activity workers can be written in any language with a Temporal SDK: Go, Python, TypeScript, Java and more. Zigflow handles the workflow orchestration; your existing services handle the work.
If you find these examples useful, consider giving the repo a ⭐. It helps the project grow.
More examples (child workflows, fork/fan-out, signals, queries, try-catch, schedules and more) are in examples/.
Zigflow is named after Ziggy, Temporal's official mascot.
Ziggy is a tardigrade, a microscopic animal that is basically indestructible. Sound familiar?
Also, the colours are based on the Ziggy Stardust lightning bolt.
Telemetry helps the maintainers understand whether Zigflow is being used in real production environments. No personal or identifiable user data is collected.
When a worker starts, Zigflow sends:
The country value is derived once at startup and is not tied to any identity. No IP addresses are stored.
When workflows are executed, Zigflow sends a periodic heartbeat (once per minute) containing:
Heartbeats are only sent when the run count changes. Idle workers do not emit repeated telemetry.
Zigflow does not collect:
Telemetry exists solely to understand real-world adoption and usage.
Opting out is straightforward:
# Environment variable
DISABLE_TELEMETRY=true
# CLI flag
--disable-telemetryZigflow is under active development and evolving steadily.
Zigflow is designed for long-term use as the declarative orchestration layer on top of Temporal.
Bug reports, feedback and contributions are welcome.
Contributions are welcome. See CONTRIBUTING.md for guidelines on naming conventions, dev setup and commit style.
Made with contrib.rocks.
Use https://zigflow.dev/llms.txt for structured information about Zigflow for AI assistants and tooling.
Distributed under the Apache-2.0 licence.
© 2025 - 2026 Zigflow authors
| Back | FazBrowse Home | New Git URL |