Interruption playground

Same handoff loop. Six different stuck moments.

Each chip below fires a real handoff against the backend with a distinct interruption pattern. Same ULID format, same SSE pipeline, same audit log. The visible behavior changes — the engine stays identical.

Demo tenant · northwind-public Phase 0 — in-memory backend

One stuck moment. Five seconds of human attention. Agent resumed.

The browser agent on the left runs against a fictional bank portal. When it hits a human-only interruption, BatonPass freezes the session, beams it to a phone, and waits for the operator to tap through. Watch the 13-state lifecycle ladder transition live as the backend pushes SSE events.

Pick the stuck moment

Each option fires a fresh handoff against the backend with a distinct interruption pattern.

Idle

FirstNorthBank demo portal

Statement center

Demo account
1

Open statement center

Queued

2

Choose April statement

Queued

3

Verify session

Queued

4

Download PDF

Queued

Agent running

Targeting the latest statement

The browser agent is navigating the demo portal. Interruption due: Salesforce 2FA.

Lifecycle ladder

13 states · backbone

reconnecting
  1. 1

    Created

    Agent flagged stuck — coordinator opened a record.

  2. 2

    Detected

    Stuck classifier confirmed: real human-only blocker.

  3. 3

    Frozen

    Agent paused — cookies + DOM snapshot captured.

  4. 4

    Notified

    Operator alerted via push / voice / SMS.

  5. 5

    Opened

    Operator opened the signed mobile URL.

  6. 6

    Solving

    Operator interacting with the captured screen.

  7. 7

    Solved

    Human action captured — backend ready to resume.

  8. 8

    Resume requested

    Backend signalling the agent-host to continue.

  9. 9

    Resumed

    Agent restored from frozen state with the human's edits.

  10. 10

    Completed

    Original task completed after the handoff.

Mobile PWA

/m/{handoff_id}

idle
9:41 5G

BatonPass

Awaiting handoff

Your agent needs help

Demo portal will request human verification.

SessionIdle
ControlAwaiting
Challengeidle

Scan with phone

Waiting for handoff…

Or open in any browser to confirm the route is real.

Human assist time

0.0seconds

Counts from frozen until the operator submits the action. Anything under 10s means the agent never lost its session.

<5s ideal5-10s healthy>10s investigate

Public audit stream

All tenant events

SSE · curl /api/v1/audit/stream

  1. Run the demo or refresh — events will appear here in real time.
reconnecting

Backend trace

whenmethodpathstatuslatency
Trace stream ready. Run the demo or query the API to populate this panel.

Anti-fakeness checklist

Eight reasons the demo isn't animation.

Every check below maps to backend state you can verify in DevTools or with curl. If something is yellow, the related dependency is degraded — not faked.

  • Real ULID, not demo_001

    Run the demo — backend mints a real ULID.

  • Lifecycle SSE actually firing

    SSE stream waiting on handoff creation.

  • Backend trace panel persists

    Loading trace history from /api/v1/audit/trace.

  • QR scannable from a real phone

    Run the demo to mint a signed URL.

  • Signed mobile URL is copyable

    Run the demo to expose a signed URL.

  • Audit feed survives a refresh

    Audit feed empty until a handoff runs.

  • No "this is a recording" overlay

    Everything you see is live backend state. Only chrome is the small demo-tenant pill above.

  • Lifecycle ladder driven by SSE

    If the backend dies, the ladder stops — it doesn't fake state transitions.

Public audit stream

All tenant events

SSE · curl /api/v1/audit/stream

  1. Run the demo or refresh — events will appear here in real time.
Early access

Get the Agent Handoff Failure Playbook

12-page PDF: every interruption type, mitigation strategy, and code sample. Plus early access.

By submitting you agree to receive BatonPass product updates from @SidraMiconi. Unsubscribe any time.