<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/zigflow-the-missing-temporal-dsl-tk6pmbwgz" -->

---
title: Zigflow: The Missing Temporal DSL | daily.dev
description: Zigflow is a declarative YAML-based DSL for Temporal workflows that simplifies workflow creation by letting users focus on business logic rather than...
canonical: https://daily.dev/posts/zigflow-the-missing-temporal-dsl-tk6pmbwgz
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Zigflow: The Missing Temporal DSL | daily.dev
og:description: Zigflow is a declarative YAML-based DSL for Temporal workflows that simplifies workflow creation by letting users focus on business logic rather than...
og:url: https://daily.dev/posts/zigflow-the-missing-temporal-dsl-tk6pmbwgz
og:image: https://api.daily.dev/og/posts/tK6PMbWgz.png
og:image:alt: Zigflow: The Missing Temporal DSL
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Zigflow: The Missing Temporal DSL

**[Simon Emms](https://daily.dev/sources/vyhzqnyfl1hw9qajyogks)** · [@mrsimonemms](https://daily.dev/mrsimonemms) · 4 min read · 0 upvotes · 0 comments

## Summary

Zigflow is a declarative YAML-based DSL for Temporal workflows that simplifies workflow creation by letting users focus on business logic rather than implementation details. Built on the CNCF Serverless Workflow specification, it provides Temporal's durability and reliability features with sensible defaults for best practices like Continue-As-New, heartbeats, and search attributes. Written in Go but language-agnostic, Zigflow aims to lower the learning curve for Temporal while enabling non-developers to define workflows without code changes or deployments.

## Content

**TL;DR**: [Zigflow](https://zigflow.dev?utm_source=dailydev&utm_medium=blog&utm_campaign=intro)
lets you write Temporal workflows in YAML, so you can focus on what happens
instead of how to make it reliable.

---

[Temporal](https://temporal.io?utm_source=dailydev&utm_medium=blog&utm_campaign=intro)
is one of those tools that feels like a superpower once it clicks. Durable workflows,
automatic retries and crash recovery baked in.

But getting there can feel heavy.

Since I joined Temporal last April, I've really seen first-hand how it helps engineers
make their application bullet-proof whilst writing less code.

Last summer, I had a week of customer calls where a common pattern kept repeating.
The whole week, I heard some version of the same thing:

> Temporal is great for developers, but we want our business users to be able to
> define workflows. Is there a DSL we can use?

They loved Temporal for its durability and reliability, but they didn't want
every workflow change to require an engineer, a code review and a deployment. For
them, the workflow wasn't the complexity, but the implementation was.

That tension was the spark for [Zigflow](https://zigflow.dev?utm_source=dailydev&utm_medium=blog&utm_campaign=intro).

## Temporal is powerful, but there is a learning curve

Temporal workflows are just code, but not necessarily _normal_ code. Workflows
are replayed. You have to understand determinism (and non-determinism). Things
that once felt natural have to be reconsidered.

For experienced Temporal users, that's fine. It can even feel elegant.
For newbies, it's a whole new paradigm.

Also, most workflows aren't algorithmically complex:

They're sequences.
They branch.
They wait.
They call services.
They loop.
They retry.

Most workflows aren't complex in _what_ they do - they're complex in _how_ they're
made reliable.

##  Enter Zigflow

[![zigflow](https://media.daily.dev/image/upload/s--1O_1xFTP--/f_auto/v1770052709/ugc/content_f2e4f382-3c2e-497f-a5b4-db3dc32eb7fc?_a=BAMAMiiu0)](https://zigflow.dev?utm_source=dailydev&utm_medium=blog&utm_campaign=intro)

[Zigflow](https://zigflow.dev?utm_source=dailydev&utm_medium=blog&utm_campaign=intro)
is a declarative DSL for Temporal workflows.

Instead of writing your workflow code directly, you describe your workflow in
YAML. Zigflow turns that description into a real Temporal workflow with retries,
durability and all the usual Temporal guarantees.

Think of it as a way to start simple with Temporal, without painting yourself in
a corner.

You get all the reliability, observability and scalability without having to
think about the sharp edges on day one.

A DSL (domain-specific language) is a specialised language, focused on the
problem. Rather than inventing yet another DSL, Zigflow builds on the CNCF's
[Serverless Workflow](https://serverlessworkflow.io) specification - a
vendor-neutral standard designed for exactly this problem.

## Show me the money

If you've gotten this far, you'll want to see how it all works.

```yaml
document:
  dsl: 1.0.0
  namespace: zigflow
  name: hello-world
  version: 1.0.0
do:
  - set:
      output:
        as:
          data: ${ . }
      set:
        message: Hello from Ziggy
```

This isn't pseudo-code, but a full Temporal workflow ready to receive triggers.

Run this with the Zigflow CLI (`zigflow -f ./workflow.yaml`) and you've got a
running Temporal workflow. Trigger this from the Temporal UI
(**task queue**: `zigflow` and **workflow type**: `hello-world`) and you'll
see the response:

```json
{
  "data": {
    "message": "Hello from Ziggy"
  }
}
```

The goal of Zigflow isn't low-code for the sake of it, but to allow you to focus
on what the workflow does. And you get the added bonus of Temporal best practices.

## Best practices as guardrails

As a workflow grows, Temporal concepts start to matter:
- Histories get long, so you need Continue-As-New
- Activities get slow, so you need heartbeats
- You want visibility, so you need search attributes

Zigflow bakes all these ideas in from the start, so you don't need to learn them
upfront. You still benefit from them, but they're implemented as sensible defaults
so you only need to know about them when they matter.

And if you know Temporal already, Zigflow becomes a way to standardise and
accelerate workflow creation.

## Written in Go. Not locked to Go

Zigflow is written in Go, but the workflows it runs are just Temporal workflows.

That means they're language-agnostic by nature.

You can trigger them from TypeScript, signal from the Temporal UI, query from
Python and update from Java.

## Why you might want to try it

- You're curious about Temporal, but put off by the learning curve
- You want to prototype workflows fast
- You like the idea of workflows being readable by humans
- You're building tooling or platforms on top of Temporal

If any of this resonates, Zigflow is worth a look:
- 👉 Docs: [zigflow.dev](https://zigflow.dev?utm_source=dailydev&utm_medium=blog&utm_campaign=intro)
- 👉 Code: [github.com/mrsimonemms/zigflow](https://github.com/mrsimonemms/zigflow)

If you try it and like it, please add a GitHub star. I know it's a bit of a
vanity-metric, but it's great seeing feedback from people who are using it. And
that motivates me to keep building.

This is just the beginning and I've got so many ideas about new features (including
a drag-and-drop UI). If this resonates, try it out. And I'm planning a follow-up
post diving into these ideas.

And let me know what you build.

## Similar posts on daily.dev

- [How XY builds an AI agent orchestration platform for healthcare with Temporal](https://daily.dev/posts/how-xy-builds-an-ai-agent-orchestration-platform-for-healthcare-with-temporal-xglgek5oi) · Temporal · 0 upvotes · 0 comments
- [Temporal hits 3,000 paying customers with its crash-proof workflow engine](https://daily.dev/posts/temporal-hits-3-000-paying-customers-with-its-crash-proof-workflow-engine-0pq440ota) · The New Stack · 1 upvotes · 0 comments
- [On the way to step functions: the two worlds](https://daily.dev/posts/on-the-way-to-step-functions-the-two-worlds-anlwzk3po) · RUBYLAND · 0 upvotes · 0 comments
- [Temporal Workflow Engine with Spring Boot](https://daily.dev/posts/temporal-workflow-engine-with-spring-boot-y1kvaac6r) · Baeldung · 10 upvotes · 0 comments

---

Tags: [#golang](https://daily.dev/tags/golang)

[View this post on daily.dev](https://daily.dev/posts/zigflow-the-missing-temporal-dsl-tk6pmbwgz)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/zigflow-the-missing-temporal-dsl-tk6pmbwgz","headline":"Zigflow: The Missing Temporal DSL","text":"Zigflow is a declarative YAML-based DSL for Temporal workflows that simplifies workflow creation by letting users focus on business logic rather than implementation details. Built on the CNCF Serverless Workflow specification, it provides Temporal's durability and reliability features with sensible defaults for best practices like Continue-As-New, heartbeats, and search attributes. Written in Go but language-agnostic, Zigflow aims to lower the learning curve for Temporal while enabling non-developers to define workflows without code changes or deployments.","url":"https://daily.dev/posts/zigflow-the-missing-temporal-dsl-tk6pmbwgz","datePublished":"2026-02-06T12:37:21.089Z","dateModified":"2026-02-06T12:37:47.467Z","author":{"@type":"Person","name":"Simon Emms","url":"https://daily.dev/mrsimonemms","image":"https://avatars.githubusercontent.com/u/275848?v=4","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":40}},"image":"https://media.daily.dev/image/upload/s--UwZwh4vw--/f_auto/v1770381442/posts/tK6PMbWgz?_a=BAMAMiiu0","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/vyhzqnyfl1hw9qajyogks","name":"Simon Emms"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Simon Emms","item":"https://daily.dev/sources/vyhzqnyfl1hw9qajyogks"},{"@type":"ListItem","position":3,"name":"Zigflow: The Missing Temporal DSL"}]}
```

