Live sandbox
Make an agent wait for you.
Scan the code, tell the agent to do something risky, and answer from your phone. No signup.
const decision = await px.decisions.ask({
externalId: user.id,
type: "confirm",
question: "Approve a $480 refund to customer #4471?",
})
if (decision.approved) await issueRefund()Scan the code to connect a phone, then pick something for the agent to ask about.
Step one
Scan with your phone
Nothing to install and no account. The page stays open on your phone and waits for the agent, the same way a connected end-user would.
This sandbox runs on throwaway state that expires in ten minutes. In the real product the question arrives as a push notification and the decision is written to a durable ledger.
What that was
The same call your agent would make
decisions.ask() did not return while you were reading the question. That is the whole mechanism. Your agent holds at the step you chose to guard, a real person decides on the device they carry, and the answer arrives as an ordinary return value your code can branch on.
Two things here are simplified. The question reached your phone by polling an open page rather than by push notification, because a demo should not fail on a permission prompt. And the session was throwaway state instead of a durable ledger row. Everything else, including the fail-closed timeout, behaves the way the product does.
Wire it into your stack