Skip to content

Magnus-Kuhn/eudiplo

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

671 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Logo

Build Status License Website Documentation Coverage codecov Join our Discord

Your Diplomatic Layer for EUDI Wallet Integration

EUDIPLO is an open-source middleware that bridges your backend and EUDI Wallets using a unified API and standardized protocols.


🧭 Overview

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.

Overview

🧩 Features

  • βœ… Supports OID4VCI, OID4VP, SD-JWT VC, mDOC (ISO 18013-5), and OAuth Token Status List
  • βœ… OIDF conformance tested for OID4VCI and OID4VP protocols
  • βœ… 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

πŸ“Ί Watch the Webinar

Curious about EUDIPLO? Check out our recorded webinar (September 17, 2025) for a deep dive into features, architecture, and live Q&A:

EUDIPLO Webinar

Watch on YouTube

πŸš€ Quick Start

Demo Setup (Easiest)

For quick testing and demos:

# Clone the repository
git clone https://github.com/openwallet-foundation-labs/eudiplo.git
cd eudiplo

# Create .env with demo credentials
cp .env.example .env
echo "MASTER_SECRET=$(openssl rand -base64 32)" >> .env
echo "AUTH_CLIENT_ID=demo" >> .env
echo "AUTH_CLIENT_SECRET=demo-secret" >> .env

# Start services
docker compose up -d

# Access the services
# Backend API: http://localhost:3000
# Client UI: http://localhost:4200

⚠️ Remember to change credentials for production!

Option 1: Using Docker Compose (Recommended for Production)

# Clone and configure
git clone https://github.com/openwallet-foundation-labs/eudiplo.git
cd eudiplo
cp .env.example .env

# Configure secure authentication (all three are REQUIRED)
echo "MASTER_SECRET=$(openssl rand -base64 32)" >> .env
echo "AUTH_CLIENT_ID=my-client" >> .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

Option 2: Using Individual Docker Images

# Run just the backend
docker run -p 3000:3000 \
  -e PUBLIC_URL=https://example.com \
  -e MASTER_SECRET=your-32-character-secret \
  -e AUTH_CLIENT_ID=your-client-id \
  -e AUTH_CLIENT_SECRET=your-client-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

Option 3: Local Development

# 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 Started with the API

# Get a token and start using the API
# Replace with your configured AUTH_CLIENT_ID and AUTH_CLIENT_SECRET
curl -X POST http://localhost:3000/oauth2/token \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "your-client-id",
    "client_secret": "your-client-secret"
  }'

πŸ“š API: https://openwallet-foundation-labs.github.io/eudiplo/latest/api/
πŸ“¦ Full setup: Quickstart Guide


πŸ“š Documentation

Choose your documentation version:

Key sections:


🀝 Contributing

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.


πŸ“ License

Licensed under the Apache 2.0 License

About

Your diplomatic layer for EUDI Wallet integration

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 85.3%
  • HTML 11.3%
  • SCSS 2.7%
  • Other 0.7%