Implementers
Build this yourself
The website is a demo for people running a model on their own machine. If you already serve one, implement the rules below and throw the UI away. Full field list: SPEC.md in the repository. Labs can rebuild this. Local builders are who it is for.
Rules
- Do not write into the content. No watermark.
- The public file does not name the model unless you choose to.
- Hash prompts and outputs. Do not ship the text by default.
- No valid signature means unlabeled — not “human.”
- A signature means this key attested these bytes. Not that they are true.
- The “this is AI” sentence includes the attested time. Peel the clock → tamper.
- Missing sidecar is unlabeled. That is non-use, not a Sentinel defect.
- A vendor-only watermark (only they can see it) is not Art. 50.
Sign
Ed25519 (or P-256). Canonical JSON, keys sorted, no extra whitespace. Sign everything except the signature field. Attach as work.txt.sentinel.json or X-Sentinel-Attestation.
Verify
Missing signature → reject. Bad signature → reject. Optional: re-hash the content and compare. A new key is a new identity, not a forgery of yours.
Keep private
Model version, prompt hash, output hash, human-in-the-loop. That is the Art. 12 ledger. It does not belong in the public notice.