Guide · Public sandbox
How the demo works
Plenipo lets a person give an AI agent a limited mandate from their EU Digital Identity Wallet, and lets a bank check every call the agent makes against that mandate. The public sandbox runs the whole chain with fictional people and money. This page shows who does what, what you see on each screen, and how to make the simulation more real, one step at a time.
Who is in the demo
- Person with EUDI Wallet
- The person reads the mandate limits in their wallet and decides whether to approve with their PID.
- AI agent (Claude or your own)
- The agent asks for permission and sends signed calls within the mandate to the bank.
- Agent platform
- The platform asks for the mandate and keeps the switch to stop it by revoking or suspending it.
- Bank
- The bank verifies every call with Plenipo before it executes anything.
- PID provider
- The PID provider issues the person's identity and publishes its status list.
In the public sandbox all five run at sandbox.plenipo.net; the people are Maria Rossi and Luca Bianchi, and the money is not real.
One mandate, step by step
- 01Agent asks the platform for a mandate (actions, counterparties, limits, validity).
- 02Platform sends an OpenID4VP request with the mandate as transaction data (type plenipo_mandate).
- 03The person reads every limit and approves with their PID.
- 04Wallet returns the PID presentation, whose key binding signs the hash of the exact mandate bytes.
- 05Agent calls the bank with a signed invocation and the mandate chain.
- 06Bank checks the PID issuer, the mandate hash, the limits, the counterparty and the revocation status, then answers ALLOW or DENY.
The agent asks

The person decides

Every check, live

What the bank sees

Five ways to run it, from quick to real
- 01
Watch a scripted scenario
- Needs
- A browser.
- Simulated
- Agent, person, wallet, bank.
- Real
- The Plenipo verifier deciding every call.
- 02
Drive it with Claude
You talk to the agent; you approve in the sandbox wallet as Maria or Luca.
- Needs
- Claude with a custom connector (the MCP URL on /demo).
- Simulated
- Person, wallet, bank.
- Real
- A real LLM agent choosing what to call, and the verifier.
- 03
Bring your own agent or bank
Your agent signs calls with its own key; your service verifies them with the library.
- Needs
- Node 22+, npm install plenipo, or the sandbox from the repository (sandbox folder, Docker Compose).
- Simulated
- The remaining sandbox actors.
- Real
- Your code.
- 04
A real wallet implementation
The walt.id Wallet API presents the PID and approves the mandate, end to end, both as plenipo_mandate and as a TS12 e-mandate (tested on 25 October 2026).
- Needs
- Docker.
- Simulated
- Agent, person, bank and test identity.
- Real
- The walt.id Wallet API and the verifier.
- 05In progress
The EUDI reference wallet
The EU reference wallet app, with a Plenipo build that shows the mandate on its consent screen and a test PID from the EU test issuer.
- Simulated
- Sandbox bank, fictional people and money.
- Real
- EU reference wallet integration with a test PID.
Android test build in progress; iOS follows. The sandbox already trusts the EU list of test PID providers.
Each level replaces one simulated part with a real one; the bank's verifier is the same at every level.
Good to know
- Nothing is paid
- The sandbox money is fictional and the accounts reset every night.
- Stop it any time
- Revoke or suspend a mandate from the platform; the bank refuses the next call.
- What the bank enforces
- Actions, counterparties, per-operation and total limits, validity, delegation depth, and revocation, checked on every call.
- Open source
- Apache 2.0, github.com/plenipo-net/plenipo.