Durable execution

Built for Unattended Execution.

This page covers the execution model behind every scheduled run. Anselm records each node result, pins versions for in-flight runs, pauses for human approval when a step needs it, and picks up exactly where it stopped after a restart.

Completed steps never run twice

Each node result is written to the database as it completes. On recovery the interpreter re-walks the graph, reuses completed nodes, and only executes what has not run. External side effects are never repeated.

Each node result is written to the database as it completes. On recovery the interpreter re-walks the graph, reuses completed nodes, and only executes what has not run. External side effects are never repeated.Each node result is written to the database as it completes. On recovery the interpreter re-walks the graph, reuses completed nodes, and only executes what has not run. External side effects are never repeated.

Pinned versions

A run pins the workflow version and every referenced entity version when it starts. Editing an Agent or Function never changes a run that is already in flight.

A run pins the workflow version and every referenced entity version when it starts. Editing an Agent or Function never changes a run that is already in flight.A run pins the workflow version and every referenced entity version when it starts. Editing an Agent or Function never changes a run that is already in flight.

Human in the loop

Approval nodes park the run as a persistent state. A person decides from the ledger or the Scheduler, or a timeout policy decides for them. Either way the run continues from that node.

Approval nodes park the run as a persistent state. A person decides from the ledger or the Scheduler, or a timeout policy decides for them. Either way the run continues from that node.Approval nodes park the run as a persistent state. A person decides from the ledger or the Scheduler, or a timeout policy decides for them. Either way the run continues from that node.

Observable by design

Every run has a matrix column, a Gantt, a dossier with entry payload and pinned references, and an activity log of what each Function, Handler, and Agent did.

Every run has a matrix column, a Gantt, a dossier with entry payload and pinned references, and an activity log of what each Function, Handler, and Agent did.Every run has a matrix column, a Gantt, a dossier with entry payload and pinned references, and an activity log of what each Function, Handler, and Agent did.

Start Building Without Building the Stack.