Walrus Sites Provenance โ
Overview โ
This guide explains how to use the walrus-sites-provenance
GitHub Action to deploy static websites to Walrus Sites with full SLSA-backed provenance.
Each deployment:
- Generates a signed
.intoto.jsonl
provenance file - Links it to your GitHub commit, workflow, and identity (via OIDC)
- Uploads it alongside your Walrus-hosted static site
- Enables verification via notary.wal.app
This ensures your frontend is verifiably built, tamper-resistant, and on-chain.
Features โ
- โ SLSA Level 3-compliant provenance
- ๐ GitHub OIDC-based identity linking
- ๐งพ Sigstore signing (no manual GPG keys)
- ๐ Remote signing with GitSigner (optional)
- ๐ Verification via notary.wal.app
Quick Start โ
Add the GitHub Action to your workflow:
yaml
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to Walrus Sites
uses: zktx-io/walrus-sites-provenance@v0.4.10
env:
ED25519_PRIVATE_KEY: ${{ secrets.ED25519_PRIVATE_KEY }}
# or for GitSigner:
GIT_SIGNER_PIN: ${{ secrets.GIT_SIGNER_PIN }}
โ ๏ธ Your project must include a
site.config.json
at the root.
Configuration: site.config.json
โ
This file defines how your site will be deployed:
json
{
"network": "testnet",
"owner": "0x1234567890abcdef1234567890abcdef12345678",
"site_name": "my-walrus-site",
"metadata": {
"link": "https://myproject.xyz",
"image_url": "https://myproject.xyz/preview.png",
"name": "My Project",
"description": "A decentralized web app deployed on Walrus.",
"project_url": "https://github.com/my-org/my-walrus-site",
"creator": "my-org"
},
"epochs": 30,
"path": "./dist",
"write_retry_limit": 3,
"site_obj_id": "0xexisting_site_object_id"
}
Signing Options โ
๐ ED25519_PRIVATE_KEY โ
- Default method
- Requires a secret Sui-format private key (
suiprivkey...
)
๐ GIT_SIGNER_PIN (Optional) โ
- Enables remote signing via notary.wal.app/sign
- Keeps signing keys outside of GitHub
- Requires developer to approve signing via secure UI using a PIN
This is ideal for teams or workflows requiring human-in-the-loop signing.
Provenance Workflow โ
Each deployment:
- Builds your static site
- Hashes and signs every file (via GitHub OIDC + Sigstore)
- Writes a
.intoto.jsonl
file with full provenance - Uploads it with your Walrus site
- Verifies it via notary.wal.app
You can verify your deployed site at:
https://notary.wal.app/site/your-site-prefix
Replace
your-site-prefix
with your Walrus Site name (e.g.,notary
,docs
,myproject
).
Resources โ
- ๐ GitHub Action: walrus-sites-provenance
- ๐งพ Example config: site.config.json
- ๐ Verifier UI: notary.wal.app
- ๐ SLSA: slsa.dev
- ๐ Sigstore: sigstore.dev