WitnessAI notices, AI labels and machine-readable marking for Article 50 of the EU AI Act, for any web app and the Vercel AI SDK.
pnpm add @sweberdev/witnessSince 2 August 2026, Article 50 of the EU AI Act asks for transparency around AI: people must know when they are talking to a chatbot, generated content must be marked in a machine-readable way, and deepfakes and AI text on matters of public interest must be disclosed. Witness gives you the building blocks for that in one small package.
A chatbot notice and an AI label as web components and React components, in English, German, French and Italian. IPTC/XMP marking written straight into PNG, JPEG and WebP files, an invisible watermark for generated text, schema.org and meta tags for pages, and middleware for the Vercel AI SDK that marks text and images as the model produces them. Witness is a tool, not legal advice: it helps you implement the duties, it does not confirm compliance.
Example
A short exampleCopy it into your project.
app/chat/page.tsx
import { AiNotice, AiContent } from "@sweberdev/witness-react"
import "@sweberdev/witness/styles.css"
export default function Chat() {
return (
<>
<AiNotice kind="chatbot" id="support-chat" />
<AiContent labelPosition="overlay" marking={{ kind: "generated", generator: "gpt-image-2" }}>
<img src="/hero.png" alt="Beach at dusk" />
</AiContent>
</>
)
}Features
What you getFree under MIT, with Pro on top.
Free, MIT
- <witness-notice>: chatbot notice before the first message, then a compact label that can be reopened, with shown and acknowledged events as evidence
- <witness-label>: badge for AI-generated, AI-edited or deepfake content with a details popover, inline or as an image overlay
- Image marking: IPTC digital source type in XMP for PNG, JPEG and WebP, in the browser or on the server; C2PA files are left untouched
- Invisible text watermark that survives copy and paste and can be read back
- Vercel AI SDK middleware for generateText, streamText and generateImage
- schema.org JSON-LD, meta tags and Next.js metadata for AI content
- witness CLI: mark images in a build step and inspect files
- React components: <AiNotice>, <AiLabel>, <AiContent> and useAiDisclosure; wording in English, German, French and Italian
Pro
- Notice and label wording in all 24 official EU languages
- CI scanner that fails the build when AI images or text lack a label or marking, or a chat lacks its notice
- AI register with a transparency report for clients and a public "How we use AI" page
Compare
Free and ProSide by side.
| Feature | Free | Pro |
|---|---|---|
| Chatbot notice and AI labels (web components and React) | Included | Included |
| Image marking, text watermark and AI SDK middleware | Included | Included |
| Languages | EN, DE, FR, IT | All 24 EU languages |
| CI scanner for unlabelled AI content | Not included | Included |
| AI register, client report and public AI page | Not included | Included |
| Licence | MIT | Per person |
| Support | GitHub issues | Agency and Lifetime |
Pro
Pro packagesAdd-ons on top of the core.
@weber-development/witness-localesAdds the notice and label wording in the 20 further official EU languages, so all 24 are covered.
@weber-development/witness-scanChecks your build output in CI for AI images and text without a label or marking and for chats without a notice.
@weber-development/witness-reportTurns an AI register into a transparency report for your client and a public "How we use AI" page, with scan results and notice evidence.
Pricing
PricingPrices are in CHF.
Witness Pro: coming soon
The Pro packages are not on sale yet. Join the waitlist and you get a note when they are.
Freelancer
For one person working on client projects.
CHF 190
per year
2 months free
- 1 person
- No support entitlement
Agency
RecommendedFor teams of up to ten named people, one price.
CHF 590
per year
2 months free
- Up to 10 people
- Support included
Lifetime
Pay once for up to ten people and keep updates and repository access.
CHF 1'990
one-time
- Up to 10 people
- Support included
11 people or more: get in touch
- Pay yearly and get two months free: CHF 190 instead of CHF 228 for Freelancer, CHF 590 instead of CHF 708 for Agency.
- After cancelling, every version you already received keeps working. Only updates and repository access end.
- No licence key, no phone-home. The Pro packages never contact a server to check your licence.
- Agency and Lifetime cover up to ten named people for one price: you choose the number of seats at checkout and assign them in Polar. Your clients and their websites need no licence of their own.
- Checkout, invoices and VAT are handled by Polar as merchant of record.
FAQ
QuestionsShort answers.
Does Witness make my site compliant with the AI Act?
No tool can promise that. Witness implements the transparency measures Article 50 describes: the chatbot notice, visible labels and machine-readable marking. Whether they are enough for your case depends on your role, your system and the guidance that is still being finalised. The docs summarise the duties with sources; for a binding answer ask a lawyer.
Which duties does Witness cover?
The chatbot notice of Article 50(1), machine-readable marking of generated images and text for 50(2), and visible labels for deepfakes and AI text on matters of public interest under 50(4). Emotion recognition and biometric categorisation (50(3)) get notice wording, but the duty itself lies in how you inform people. Audio and video watermarking are out of scope.
Does Witness sign images with C2PA?
No. Witness writes IPTC/XMP metadata, which needs no certificate. Images that already carry a C2PA manifest from the generator are left unchanged so the signature stays valid.
Can the text watermark be removed?
Yes, on purpose it can. It survives normal copy and paste but not someone who strips it. Treat it as one layer next to the visible label and the metadata, not as proof.
Does it work without React or the Vercel AI SDK?
Yes. The notice and label are standard web components, and image and text marking are plain functions that also run in the browser. The React package and the AI SDK middleware are optional.
Articles
ArticlesGuides and release notes.
2026-10-05
Witness 0.1.0 releasedAI notices, AI labels and machine-readable marking for Article 50 of the EU AI Act: web components, React components, image and text marking and middleware for the Vercel AI SDK.