Smaller Blast Radius
Models reason only inside explicit boundaries. Workflows constrain where execution can go, and the Runtime validates what actions are actually allowed.
Constrain the blast radius of model mistakes, reduce token overhead, and execute real-world actions safely by moving state, execution, and authority out of the model.
| Model-Centric Agent Architecture | Invariant Architecture |
|---|---|
| Prompt carries execution state | Durable runtime state |
| Growing conversation history | Projected context |
| Large static tool surface | State-aware Runtime Actions |
| Model reconstructs progress | Execution resumes from facts |
| Tool calls become authority | Runtime validates authority |
| Opaque reasoning loops | Structured execution traces |
| Retries may repeat work | Durable results & idempotency |
"Invariant moves the parts that must be reliable out of the model and into infrastructure."
Stop making the LLM responsible for remembering state, reconstructing progress, deciding execution authority, carrying application context, and coordinating side effects.
The model retains what it excels at: semantic reasoning.
Invariant absorbs what infrastructure must guarantee: state, execution, authority, recovery, and coordination.
Probabilistic
│
▼
Semantic Reasoning
│
▼
Runtime Action
│
─── validated boundary ───
│
▼
Runtime
│
┌────────────┼────────────┐
▼ ▼ ▼
Workflow State Effects
execution commits dispatchWorkflow → what may happen (allowed paths & side-effect boundaries)
Agent → what should happen (reasoning projection over workflows)
Session → what carries forward (identity + hydrated application context)
Runtime → what makes it durable (event log, outbox & crash recovery)const refundWorkflow = app.workflow("refund", {
inputSchema: RefundInputSchema,
})
.capability("load-order", loadOrderCapability)
.step("check-policy", evaluateRefundPolicy)
.branch("decision", ({ state }) => (state.eligible ? "APPROVED" : "REJECTED"), {
APPROVED: issueRefundFragment,
REJECTED: rejectRequestFragment,
});
const supportAgent = app.agent("support-agent", {
instructions: "Help customers resolve refund inquiries via registered workflows.",
workflows: [refundWorkflow],
context: ({ session }) => ({ customerTier: session.context.accountTier }),
});"The Agent interprets intent. The Workflow constrains behavior. The Runtime controls execution."