FlowProof

Reliability workbench for AI-assisted automations
Static demo · v0.1
This is a static, canned illustration — not a live product. FlowProof v0.1 is a local, provider-free vertical slice that is not deployed. No backend is running behind this page; every response, timestamp, and ledger entry below is a scripted example of how the real WorkflowStore and HTTP API behave. Nothing here calls an AI model.

1Drive a workflow

Pick an inbound event, then press Run demo to watch one work item move through the state machine while the audit ledger fills.

Scenario (inbound webhook)
POST /webhooks Idempotency-Key: payment-42
{ "event_type": "payment.requested", "payload": {"amount": 2500} } → routes to human_review (amount ≥ 1000)

2State machine

Deterministic routing splits intake three ways. Only high-risk / ambiguous work waits for a human; approved work that keeps failing is bounded and parked, never looped forever.

  1. Webhook received POST /webhooks · idempotent intake
  2. Completed status 201 branch · route: rules safe deterministic path — no approval needed
  3. Pending approval route: human_review or ai_assist · waits for a named reviewer
  4. Rejected branch · reject terminal · deciding again returns 409
  5. Approved approve · cleared to execute
  6. Retry pending attempt /3 bounded — attempts 1 & 2 reschedule
  7. Dead letter retry budget spent · stops & stays auditable

Legend

Active now Completed / approved Retry pending Rejected / dead letter

3Idempotent intake

The same Idempotency-Key creates at most one workflow. The first delivery is 201 Created; a replay is 200 OK carrying the original workflow and duplicate: true, because the retry created nothing.

First delivery
Awaiting send…
Replay (same key)
Awaiting send…

4Audit ledger

Append-only history. Every creation, duplicate, decision, failed attempt, and dead letter is recorded — in the real build, into SQLite.

timestamp · event · resulting state
Time (UTC)EventState
No events yet — run a scenario or send a duplicate webhook.