EUDIPLO is an open-source middleware that bridges your backend and EUDI Wallets using a unified API and standardized protocols.
Organizations joining the EUDI Wallet ecosystem face a tough choice: patch together protocol libraries that may not exist for their stack, or rely on proprietary solutions that risk vendor lock-in.
EUDIPLO solves this by providing a lightweight, source-available, protocol abstraction layer. It communicates over HTTP and integrates easily with your existing backend stackβso you can focus on your business logic, not cryptographic plumbing.
It supports all core flows of electronic attribute attestationsβissuing, requesting, and even requesting during issuanceβand is already compatible with multiple wallets.
While still in early development, EUDIPLO is built for production: secure key management, scalable database support, and clean API boundaries.
- β Supports OID4VCI, OID4VP, SD-JWT VC, and OAuth Token Status List
- β JSON-based credential configuration
- β Client credentials authentication for easy service integration
- β
Runs via Docker with
.env
config - β HTTP-based integration with any backend
- β Secure key management & pluggable storage
- β Privacy-friendly: no external calls, no long-term storage
Curious about EUDIPLO? Check out our recorded webinar (September 17, 2025) for a deep dive into features, architecture, and live Q&A:
For quick testing and demos, you can run EUDIPLO with minimal configuration:
# Clone the repository
git clone https://github.com/openwallet-foundation-labs/eudiplo.git
cd eudiplo
# Start with default demo credentials (includes security warnings)
docker compose up -d
# Access the services
# Backend API: http://localhost:3000
# Client UI: http://localhost:4200
# Clone and configure
git clone https://github.com/openwallet-foundation-labs/eudiplo.git
cd eudiplo
cp .env.example .env
# Configure secure authentication
echo "JWT_SECRET=$(openssl rand -base64 32)" >> .env
echo "AUTH_CLIENT_SECRET=$(openssl rand -base64 24)" >> .env
# Start both backend and client with Docker Compose
docker compose up -d
# Access the services
# Backend API: http://localhost:3000
# Client UI: http://localhost:4200
# Run just the backend
docker run -p 3000:3000 \
-e PUBLIC_URL=https://example.com \
-e JWT_SECRET=your-32-character-secret \
-e AUTH_CLIENT_SECRET=your-issuer-secret \
-v $(pwd)/assets:/app/config \
ghcr.io/openwallet-foundation-labs/eudiplo:latest
# Run the client (optional - web interface)
docker run -p 4200:80 \
-e API_BASE_URL=http://localhost:3000 \
ghcr.io/openwallet-foundation-labs/eudiplo-client:latest
# Install dependencies
pnpm install
# Start backend
pnpm --filter @eudiplo/backend run start:dev
# Start client (in another terminal)
pnpm --filter @eudiplo/client run dev
# Get a token and start using the API
curl -X POST http://localhost:3000/oauth2/token \
-H "Content-Type: application/json" \
-d '{
"client_id": "root",
"client_secret": "root"
}'
π API:
https://openwallet-foundation-labs.github.io/eudiplo/latest/api/
π¦
Full setup:
Quickstart Guide
Choose your documentation version:
- π Latest Stable (recommended): https://openwallet-foundation-labs.github.io/eudiplo/latest/ - Documentation for the most recent major release
- π¬ Development: https://openwallet-foundation-labs.github.io/eudiplo/main/ - Latest features from the main branch
- π Specific Major Versions: v1, v2, etc.
Key sections:
We welcome PRs from wallet developers, institutions, and contributors interested in advancing the EUDI Wallet ecosystem.
See CONTRIBUTING.md for guidelines.
π¬ Have questions? Join our Discord community to ask questions, get help, and connect with other developers.
Licensed under the Apache 2.0 License