Typed workflow graphs
Go types connect each step. Fan-out and fan-in are nodes. The compiler checks the types.
Submit a workflow
Each run is a row in Postgres. The client is part of your process. You do not add a broker.
Postgres 14 or later
Go 1.26.3 or later
A step is a Go function with a name. Enqueue starts one run. Result waits for that run and returns the typed output.
double := cyclone.NewStep("double", func(_ cyclone.Context, n int) (int, error) {
return n * 2, nil
})
client, err := cyclone.New(pool, cyclone.WithHandlers(double))
if err != nil {
return err
}
go client.Start(ctx)
run, err := double.Enqueue(ctx, client, 21)
if err != nil {
return err
}
out, err := run.Result(ctx) // 42New does not apply migrations. New does not start workers. The quickstart is a full program. First workflow connects two steps.
Inspect runs and steps in the browser. You can retry a run, cancel a run, and check queues and schedules.

| Task | Guide |
|---|---|
| Install Cyclone and apply migrations | Install |
| Submit a workflow once for each request | Submit once |
| Start one child run for each list item | Fan out |
| Start another workflow from a node | Child workflow |
| Stop new claims, then continue the run | Pause and resume |
| Start runs from a cron row | Schedules |
| Separate the producer from the worker | Producer and worker |
| Prepare a production process | Production checklist |
The methods on a step, an action, a workflow, and a run are the path these pages teach. The map is Methods.