A production-ready, zero-infrastructure automation tool for managing did:webvh (Verifiable History) using GitHub Pages.
Modern Decentralized Identity (DID) often requires complex infrastructure. gh-webvh disrupts this by leveraging GitHub as a decentralized ledger.
- Zero-Infrastructure: No servers to maintain. Powered entirely by GitHub Pages.
- Cryptographic Integrity: Implements strict JCS (RFC 8785) canonicalization and Ed25519 hash-chaining.
- Enterprise-Grade Security: Designed for GitHub Actions with secure Secret management for private keys.
graph LR
Dev[Developer] -- CLI / Git Push --> Repo[GitHub Repo]
Repo -- Trigger --> Action[GitHub Action]
Action -- Go Logic --> Logic[Create/Update DID]
Logic -- Commit --> Repo
Repo -- Deploy --> Pages[GitHub Pages]
Verifier[Verifier] -- HTTPS GET --> Pages
- Lifecycle Management: Simple
init,update, andverifycommands. - Key Rotation: Built-in support for rotating keys and updating DID Documents with cryptographic proof of authority.
- SCID Generation: Automatic calculation of Self-Certifying Identifiers for permanent DID portability.
git clone https://github.com/tonari-no-usagi/gh-did-webvh.git
cd gh-did-webvh
go mod tidyGenerate a new DID and its root key pair.
go run main.go init --domain your-domain.comImportant
Save the printed Private Key in GitHub Secrets as DID_PRIVATE_KEY.
Audit the entire history of a did.jsonl log.
go run main.go verifyRotate keys and append a new linked entry to the history.
go run main.go update --key <Current_Private_Key>- Separation of Concerns: Private keys never touch the repository history.
- Canonical Consensus: Uses JCS to ensure identical hashes across different platforms/runtimes.
- Path to Portability: Implements the latest
did:webvh(v1.0-compatible) spec for maximum interoperability.
MIT © Tonari-no-usagi