workflows

star 2.6k

Create async background tasks (workflows) using SQS or Hatchet. Use when building queue jobs, background processing, or async tasks.

useautumn By useautumn schedule Updated 1/21/2026

name: workflows description: Create async background tasks (workflows) using SQS or Hatchet. Use when building queue jobs, background processing, or async tasks.

Overview

Workflows are async tasks processed by background workers. Two runners:

Runner Use Case Features
SQS Simple fire-and-forget tasks Fast, no dependencies, max 15min delay
Hatchet Complex workflows needing retries, multi-step, or long delays Typed outputs, configurable timeouts, observability

Quick Start

1. Add Job Name

// server/src/queue/JobName.ts
export enum JobName {
  // ... existing
  MyNewWorkflow = "my-new-workflow",
}

2. Define Payload & Register

// server/src/queue/workflows.ts

// Add payload type
export type MyNewWorkflowPayload = {
  orgId: string;
  env: AppEnv;
  customerId: string;
  // ... your fields
};

// Add to registry
const workflowRegistry = {
  // ... existing
  myNewWorkflow: {
    jobName: JobName.MyNewWorkflow,
    runner: "sqs",  // or "hatchet"
  } as WorkflowConfig<MyNewWorkflowPayload>,
};

// Add trigger function
export const workflows = {
  // ... existing
  triggerMyNewWorkflow: (payload: MyNewWorkflowPayload, options?: TriggerOptions) =>
    triggerWorkflow({ name: "myNewWorkflow", payload, options }),
};

3. Create Handler

For SQS: See references/SQS.md

For Hatchet: See references/HATCHET.md

4. Trigger from Code

import { workflows } from "@/queue/workflows.js";

await workflows.triggerMyNewWorkflow({
  orgId: ctx.org.id,
  env: ctx.env,
  customerId,
});

// With delay
await workflows.triggerMyNewWorkflow(payload, { delayMs: 5000 });

File Structure

server/src/
├── queue/
│   ├── JobName.ts              # Job name enum
│   ├── workflows.ts            # Registry + triggers
│   └── initWorkers.ts          # SQS message routing
└── internal/.../workflows/
    └── myNewWorkflow/
        ├── myNewWorkflow.ts    # Handler
        └── triggerMyNewWorkflow.ts  # (optional) trigger helper

Required Payload Fields

All workflows must include:

{
  orgId: string;
  env: AppEnv;
  customerId?: string;  // optional but common
}

References

Install via CLI
npx skills add https://github.com/useautumn/autumn --skill workflows
Repository Details
star Stars 2,586
call_split Forks 223
navigation Branch main
article Path SKILL.md
More from Creator