How to use workflow-atoms

Read the catalog over HTTPS

Every artifact is served under stable URLs with correct content-types:

curl https://workflow-atoms.com/exports/catalog.json
curl https://workflow-atoms.com/atoms/step-type/http-request.json
curl https://workflow-atoms.com/workflows/ci-build.json
curl https://workflow-atoms.com/schemas/composition-v1.json

Resolve a workflow composition

A workflow composition lists references to atoms by URI and version. To instantiate the workflow, fetch each referenced atom and assemble: trigger → steps → states → gates.

// pseudo-code
const composition = await fetch("/workflows/ci-build.json").then(r => r.json());
const refs = composition.references;
const trigger = await fetch(uriToUrl(refs.trigger.ref)).then(r => r.json());
const steps = await Promise.all(refs.steps.map(r => fetch(uriToUrl(r.ref)).then(r => r.json())));
const gates = await Promise.all((refs.gates ?? []).map(r => fetch(uriToUrl(r.ref)).then(r => r.json())));
const workflow = compileWorkflow({ trigger, steps, gates });
// run on any conforming engine: n8n, Temporal, GitHub Actions, Airflow…

Compatibility rules

Rules in /exports/catalog.json (under the rules key) declare predicates over atoms. Example: a state-transition-validity rule constrains which state transitions are legal. A composition that violates a require-effect rule is malformed.

Cross-engine portability

v0.1 ships the catalog and its JSON Schema; compilers to specific workflow engines (n8n, Zapier, GitHub Actions, Temporal, Airflow) are v0.2 work — they translate workflow-atom primitives into the engine's native DSL.