The maker's seal for published work. Content provenance for the AI era: declare how work was made (human / mixed / model-primary) with a short colophon, optionally sign with a house or person key, and verify.
Same seal family for model-primary docs and human social posts. Not an AI detector. Not a C2PA replacement — see the site Non-goals page.
Say: INN-siggle (rhymes with single).
Site: documentdrivendx.github.io/innsigle
Requires Node 20+. The CLI is not published to the npm registry yet (private: true). Install from this GitHub repo or a local clone.
# project-local
npm install github:DocumentDrivenDX/innsigle
# then run via npx or the local bin
npx innsigle
./node_modules/.bin/innsigle# global (optional)
npm install -g github:DocumentDrivenDX/innsigle
innsiglegit clone https://github.com/DocumentDrivenDX/innsigle.git
cd innsigle
npm install -g . # or: npm link
innsigle
# without installing the bin:
node src/cli.mjsCheck the tool:
innsigle # prints usage (exit 1)
innsigle colo example --kind model-primaryOne-time per repo. Requires the 1Password CLI (op) signed in.
cd your-site-repo
innsigle init --onepassword --site-url https://example.comThis writes only under .innsigle/ (Innsigle does not guess Quarto/Hugo/etc.):
- Ed25519 house key → private half in 1Password (Secure Note)
.innsigle/config.json— fingerprint,key_url,op://…ref (commit-safe).innsigle/public/keys.json— public issuer document to publish.innsigle/AGENTS.md— how agents should copy that tree into a site build
Your build (or an agent following AGENTS.md) must publish:
.innsigle/public/ → <site-root>/.well-known/innsigle/
Then seal content (issuer flags and signing key come from config + 1Password):
innsigle colo example --kind model-primary > colo.json
# edit colo.json ingredients as needed
innsigle claim build --content ./page.html --colo colo.json --out claim.json
innsigle sign --claim claim.json --out att.json
innsigle verify --attestation att.json --content ./page.html \
--keys .innsigle/public/keys.jsoninnsigle keygen --out-dir ./keys
innsigle keys template \
--issuer-id my-house --issuer-name "My House" \
--public-key "$(cat keys/ed25519.pub.raw.b64url)" \
--key-id "$(cat keys/key-id.txt)" \
--out keys.json
# publish keys.json at an absolute HTTPS URL (key_url below)
innsigle colo example --kind model-primary > colo.json
innsigle claim build \
--content ./page.html \
--colo colo.json \
--issuer-id my-house --issuer-name "My House" \
--key-id "$(cat keys/key-id.txt)" \
--key-url https://example.com/.well-known/innsigle/keys.json \
--out claim.json
innsigle sign --claim claim.json --key keys/ed25519.priv.pem --out att.json
innsigle verify --attestation att.json --content ./page.html --keys keys.jsonKeep private keys offline (1Password or local PEM). Full walkthrough: Seal a docs page.
# with CLI installed
curl -sL -o page.html https://documentdrivendx.github.io/innsigle/sample/
curl -sL -o att.json https://documentdrivendx.github.io/innsigle/sample/.well-known/innsigle/claims/index.attestation.json
curl -sL -o keys.json https://documentdrivendx.github.io/innsigle/sample/.well-known/innsigle/keys.json
innsigle verify --attestation att.json --content page.html --keys keys.jsonFrom a clone without install:
node src/cli.mjs verify \
--attestation docs/sample/.well-known/innsigle/claims/index.attestation.json \
--content docs/sample/index.html \
--keys docs/sample/.well-known/innsigle/keys.json| Topic | Where |
|---|---|
| Install + CLI | Use → CLI |
| Walkthroughs | Use |
| Claim/CLI contract | CONTRACT-001 |
| Golden crypto vectors | tests/vectors/ |
Content pipeline (HELIX product-microsite-ia):
| Layer | Path |
|---|---|
| Curated copy | docs/website/content/curated/ |
| Generated from HELIX | docs/website/content/generated/ ← docs/helix/ |
| Build output | site/ (CI deploys it) |
npm test # unit + install/CLI smoke (+ Hugo workflow if hugo on PATH)
npm run test:hugo # Hugo × Innsigle e2e only
npm run test:agent # unit + Playwright e2e (set CI=true)
npm run test:agent:update # refresh screenshot baselines after UI changes
npm run record:hugo-walkthrough # VHS screencast → docs/website/static/captures/
npm run site:build:local # build site with BASE=
git push origin main # Actions tests + Deploy micrositeDo not use scripts/publish-site.sh for normal deploys (legacy gh-pages
only; requires FORCE_LEGACY_GH_PAGES=1).
Specs: docs/helix/. Signing: ADR-001. Issuer URL: ADR-003.