{"repo":"deepnoodle-ai/workflow","free":true,"listed":false,"github":"https://github.com/deepnoodle-ai/workflow","clone":"git clone https://github.com/deepnoodle-ai/workflow.git","description":"An easy-to-use workflow automation library for Go. Supports conditional branching, parallel execution, embedded scripting, and execution checkpointing. Think of it like a lightweight hybrid of Temporal and AWS Step Functions.","language":"Go","stars":44,"topics":["automation","workflow","workflow-automation"],"license":"Apache-2.0","category":"workflow-automation","readme_excerpt":"Workflow A Go library for defining and running multi-step processes as directed graphs. You get conditional branching, parallel execution, expression-driven templates, durable checkpointing, and the ability to suspend and resume on signals or wall-clock waits. Think of it like a lightweight hybrid of Temporal and AWS Step Functions. The execution engine is all that lives inside; everything that doesn't belong inside an engine — storage, queues, leasing — is an interface you implement however you like. Edge conditions and ${...} parameter templates are evaluated by github.com/deepnoodle-ai/expr , a small zero-dependency expression evaluator with a Go-like syntax. It's the only external dependency of the root module. Main concepts Concept Description ------------- --------------------------------------------------------------------------------- Workflow A repeatable process defined as a directed graph of steps Step A node in the graph — runs an activity, joins branches, sleeps, waits, or pauses Activity A function that performs the actual work Edge Defines flow between steps, optionally guarded by a condition Execution A single run of a workflow, with its own state Branch An independent execution thread with its own copy of state State Branch-local mutable variables that activities read and write Runner Convenience entry point that composes heartbeat, timeout, resume, and hooks Quick example For one-shot scripts and tests, calling exec.Execute(ctx) directly is perfectly fine. T","default_branch":null,"files":null,"tree":[],"storefront":"/r/deepnoodle-ai","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/deepnoodle-ai/workflow/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}