Skip to content
Praxis is in alpha. The supported API is praxis.io/alpha, and the contract can change while Praxis is in alpha.About the alpha contract

Durable execution

Infrastructure operations cross process, network, and provider boundaries. A conventional request handler can lose its progress when any of those boundaries fail. Praxis uses Restate so execution history and resource state outlive an individual service process.

Provision requestRestate journalResource driverAWS APIprocess restarts record steprun provider call oncerecord resultreplay handlerreuse completed result

Provider calls run inside restate.Run() callbacks. Restate journals the callback result. When a handler replays after a failure, completed journal entries are reused instead of blindly restarting the entire handler from the beginning.

This is why error classification happens inside the callback. A transient AWS failure must reach Restate as retryable. A terminal provider response must be marked terminal before Restate decides what to do next.

Each resource instance is a Virtual Object key. Exclusive lifecycle handlers for one key execute serially, which prevents overlapping provision, delete, and reconcile mutations without an external lock service.

Drivers schedule future reconciliation with durable timers. A process restart does not erase the next check. No separate cron service or controller work queue is required.

AWS APIs have their own idempotency and consistency behavior. Praxis drivers still need stable client tokens, careful read-after-write handling, correct provider identifiers, and explicit error classification. Restate preserves workflow progress; the driver remains responsible for using each AWS API safely.