Basics

Core concepts

The five ideas everything in MadMax builds on: workflows, steps, payloads, runs, and snapshots — including how data actually flows between steps.

Five ideas carry everything else in MadMax. Ten minutes here saves hours later.

An annotated workflow: trigger, steps, edges, and the Inspector A workflow is a directed graph: a trigger starts it, edges carry data forward, each step transforms what it receives.

Workflows

A workflow is a graph of steps connected by edges, drawn on the canvas. It always starts at a trigger (webhook, schedule, form, or you clicking run) and flows left to right (or top to bottom — your choice). The canvas autosaves as you edit; there is no save button.

Steps and payloads

Each step receives a payload — a JSON object — from the step before it, does its work, and passes its output onward. Three rules cover nearly every "why is this empty?" moment:

  1. Payloads are always objects. If a step produces a bare list or string (an API returning a raw array, say), it's wrapped as {"value": ...} downstream — so you reference payload.value, not the list itself.
  2. Some steps wrap their output in an envelope. A webhook hands you {body, headers, query} — the caller's JSON lives under payload.body.*, never at the top level. An AI agent with a schema puts your fields under payload.data.*. Each step's docs page states its exact output shape.
  3. Some steps replace the payload entirely. An approval step's output is the decision, not the data that flowed in — if you need earlier values afterwards, reference them by step: {{ steps.<step-id>.output.<field> }} reaches any upstream step's output directly.

In config fields, {{ payload.field }} templates the incoming payload and {{ steps.id.output.field }} reaches upstream. Logic steps (if/switch/loop) use expressions instead: payload["field"] with brackets.

Runs

When a trigger fires, the server executes the graph once — that's a run. Every step's input and output is recorded, so you can open run history and see exactly what happened, step by step. Runs can pause (a wait step, an approval waiting on a human) and resume without losing their place.

Snapshots and activation

Editing the canvas never touches anything live. When you hit Activate, the current canvas is frozen into a snapshot, and triggers fire against that frozen copy — you can keep editing safely while the active snapshot serves. Re-activating captures a new snapshot; the old ones stay in snapshot history. Deactivating stops triggers; nothing is deleted.

The AI is a builder, not a black box

Max — the built-in AI — works with the same steps, edges, and verification tools you have. Anything it builds is an ordinary workflow you can open, inspect, and edit by hand. See AI workflow automation for how the plan → build → verify loop works.

Where to go next