Product
Human in the Loop
Pause a run, review the state, approve or amend, and resume from the same step.
Gates can be unconditional or predicated on the run's own state — approve refunds over a threshold, or anything touching a named account. A paused run holds its checkpoint for 72 hours and resumes exactly where it stopped.
Consequence first
The dialog leads with what will happen, not the payload that will be sent.
Recorded
Approvals enter the audit trail with the reviewer's identity and any amendment they made.
Routed
Requests can go to a channel, an individual, or an on-call rotation.
.step("stripe.refund")
.approval({
when: (ctx) => ctx.amount > 100_00,
notify: "#billing-approvals"
})Measured outcome
Refunds under a hundred dollars go straight through. Anything above waits for a human, who sees the amount and the customer before either button.
Product
- Run GraphWatch every step, branch, and retry as it happens, with the exact inputs and outputs on each node.
- Retry PoliciesPer-tool exponential backoff, declared in one file instead of scattered through your handlers.
- Audit TrailEvery prompt, tool call, and token — retained and replayable, exportable as compliance evidence.