A comprehensive DID WebVH (Decentralized Identifier Web Verifiable History) server implementation with web explorer interface.
- DID Management: Create, resolve, and manage DIDs with WebVH method
- Resource Management: Upload and manage attested resources (AnonCreds schemas, credential definitions, etc.)
- Witness Registry: Manage known witness services and their invitation URLs
- Policy Enforcement: Configurable policies for witness requirements, portability, prerotation, and endorsement
- Web Explorer: Interactive web interface for browsing DIDs, resources, and witness network
- AnonCreds Support: Publish and resolve AnonCreds objects as Attested Resources
- Multiple Storage: Support for SQLite and PostgreSQL backends
- Customizable Branding: Configurable UI themes and branding
# Install dependencies
cd server
uv sync
# Copy example environment file
cp env.example .env
# Edit .env with your configuration
# Then run server
uv run python main.pydocker build -t didwebvh-server .
docker run -p 8000:8000 \
-e WEBVH_DOMAIN=did.example.org \
-e WEBVH_ADMIN_API_KEY=your-secret-key \
didwebvh-serverCreate a .env file in the server directory. See env.example for all available options.
Minimum required configuration:
WEBVH_DOMAIN=did.example.org
WEBVH_ADMIN_API_KEY=your-secret-keyFor complete configuration details, see the Configuration Guide in the user manual.
For complete API documentation, see:
- API Endpoints Guide - Detailed endpoint reference
- Swagger UI - Interactive API docs at
/docswhen server is running
Quick reference:
GET /- Root endpoint (DID requests, invitation lookup, explorer)GET /?namespace={ns}&alias={alias}- Request DID parametersPOST /{namespace}/{alias}- Create/update DIDGET /{namespace}/{alias}/did.json- Resolve DIDPOST /{namespace}/{alias}/resources- Upload resourcePOST /admin/witnesses- Manage witnessesGET /explorer- Web explorer interface
π See the User Manual for comprehensive documentation:
- Getting Started & Configuration
- API Endpoints & Protocols
- Roles (Admin, Witness, Controller, Watcher)
- Admin Operations & DID Operations
- AnonCreds Support
- Examples
Interactive API Docs: Swagger UI at /docs when server is running
cd server
uv run pytestserver/
βββ app/
β βββ routers/ # API route handlers
β βββ plugins/ # Core plugins (didwebvh, storage, invitations)
β βββ models/ # Data models and schemas
β βββ db/ # Database models and storage
β βββ templates/ # Jinja2 templates for explorer UI
βββ config.py # Configuration settings
βββ main.py # Application entry point
βββ env.example # Example environment file
Apache License 2.0