UCNG · Open by design

Declare how content was made.

UCNG provides a common language for describing how digital content was created or transformed. The reference implementation combines a human-readable declaration with machine-readable data – independent of platform, vendor and medium.

  • Human-readable
  • Machine-readable
  • Vendor-neutral
  • Self-hostable

https://ai.trustednet.eu/badge/research.svg

Research badge Summary badge Full generation badge
{
  "@type": "AIUsageDeclaration",
  "schemaVersion": "1.2",
  "assurance": "selfDeclared"
}

Content transparency

One declaration. Two audiences.

UCNG describes origin and transformation. It does not judge the truth or quality of content.

01

Content needs context.

Digital content is no longer created in one way. UCNG makes the declared creation context portable.

02

Human-readable

Compact labels and readable declaration pages explain the stated creation and transformation process.

03

Machine-readable

The same information is available as structured JSON-LD for platforms, systems and build workflows.

04

Simple labels. Detailed metadata.

HUMAN, AI ASSISTED, MIXED and AI GENERATED provide a compact classification; details record activity, human review and declaration status.

Open

Platform-independent

The application is self-hostable and does not bind a declaration to a particular publisher, AI vendor or platform.

Neutral

Declaration ≠ Verification

A UCNG badge indicates that a declaration exists. It does not automatically mean verified, certified, true or legally compliant.

Interoperable

One model, multiple media

Text, image, audio, video, code and more can be described using the same declaration logic.

Deployment

Production-ready in a few commands.

Every deployment uses the same Go binary and can run without external services.

Docker ComposeDeclarative setup for a local or single-server deployment.
cp .env.example .env
# Adjust BASE_URL and PUBLIC_NAME in .env
docker compose up -d --build
curl -fsS http://localhost:8080/readyz
Docker CLIBuild the image and run a hardened container directly.
docker build -t ai-disclosure-standard:2.0.2 .
docker run -d --name ai-disclosure \
  -p 8080:8080 \
  -e BASE_URL=https://ai.example.org \
  -e PUBLIC_NAME="UCNG" \
  --read-only --tmpfs /tmp \
  ai-disclosure-standard:2.0.2
KubernetesThree replicas, probes, rolling updates, HPA and a PodDisruptionBudget.
# Image, domain and TLS secret in deploy/kubernetes.yaml ersetzen
kubectl apply -f deploy/kubernetes.yaml
kubectl rollout status deployment/ai-disclosure

# Licensed bulk service (optional)
kubectl apply -f deploy/kubernetes-bulk.yaml
Docker SwarmOperate several replicas with Docker's native orchestrator.
docker swarm init
docker stack deploy -c deploy/swarm-stack.yaml ai-disclosure
# Optional licensed bulk deployment: deploy/swarm-bulk-stack.yaml
Run with GoFor development, tests or a native systemd deployment.
go test ./...
go build -trimpath -o bin/server ./cmd/server
BASE_URL=http://localhost:8080 \
PUBLIC_NAME="UCNG" \
./bin/server

Important environment variables

VariableDefaultPurpose
LISTEN_ADDRESS:8080HTTP server bind address.
BASE_URLhttp://localhost:8080Public base URL without a trailing slash.
PUBLIC_NAMEAI Usage DisclosureProduct or site title.
CONTACT_URLhttps://ai.trustednet.euOptional external contact or project page.
DEFAULT_LANGUAGEdeFallback output language.
SERVICE_MODEfullRuntime mode: full, api or bulk.
LICENSE_TOKENVendor-signed licence token.
LICENSE_MODEofflineMinimum mode: offline, hybrid or online.
LICENSE_SERVER_URLOptional central verification server for hybrid and online mode.
API_ALLOWED_ORIGIN*Allowed CORS origin for API endpoints; empty disables CORS.

FAQ

Common questions

Does UCNG decide whether content is true or false?

No. UCNG describes the declared creation and transformation process. A UCNG badge does not automatically mean verified, certified, true or legally compliant.

Is UCNG an official European Union system?

No. UCNG is positioned as an independent open framework. Regulatory context can be documented, but it is not the same as a UCNG Declaration.

Content deserves context.

Create a UCNG Declaration and make the stated creation context readable to people and machines.