Who this is for: Developers and compliance officers deploying Meta Llama models (Llama 3.x, Llama 4) in production. No adapter required. Works with vLLM, Ollama, TGI, SGLang, LiteLLM, and any OpenAI-compatible serving framework.

EU AI Act GPAI obligations enforce August 2, 2026. Open-weight deployers bear full compliance responsibility. Meta distributes the weights. You own the evidence. Every Llama inference without a governance record is a liability gap that grows with each request.

Contents

1. The Open-Weight Compliance Gap 2. Deployment Patterns 3. Witnessing Llama Inferences 4. Model Version Governance 5. Clearing Levels for Llama 6. GPAI Compliance 7. Procedure Cards 8. Quick Reference 9. Quick Start

1. The Open-Weight Compliance Gap

Meta releases Llama model weights under the Llama Community License Agreement. This means anyone can download, fine-tune, and deploy the model. It also means that Meta cannot provide compliance attestation for how you use their model.

This is not a gap in Meta's product. It is the fundamental architecture of open-weight AI.

Under the EU AI Act, deployers of GPAI models are responsible for demonstrating compliance with transparency, risk management, and post-market monitoring obligations. When you deploy Llama, you are the deployer. Meta is the provider of the weights, not the provider of your AI system.

SWT3 fills this gap. It provides independent, cryptographic evidence that governance controls were active during every inference. The Witness Anchor exists outside Meta's infrastructure, outside your serving framework, and outside any single cloud provider. It is a third-party attestation record that proves what happened, when, and under what controls.

2. Deployment Patterns

Llama models are served through a variety of frameworks. All major serving frameworks expose an OpenAI-compatible API. This means SWT3 witnessing works identically across all of them, with zero framework-specific code.

Serving FrameworkAPI CompatibilitySWT3 Integration
vLLMOpenAI-compatible (/v1/chat/completions)wrap(OpenAI(base_url=...))
OllamaOpenAI-compatible (/v1/chat/completions)wrap(OpenAI(base_url=...))
TGI (Text Generation Inference)OpenAI-compatible (/v1/chat/completions)wrap(OpenAI(base_url=...))
SGLangOpenAI-compatible (/v1/chat/completions)wrap(OpenAI(base_url=...))
LiteLLM100+ provider routing, OpenAI-compatiblewrap(litellm_client)
llama.cppOpenAI-compatible server modewrap(OpenAI(base_url=...))

Every serving framework in this table produces identical SWT3 Witness Anchors. The anchor records the model, the input hash, the output hash, and the governance context. The serving framework is transparent to the evidence chain.

3. Witnessing Llama Inferences

Python (any OpenAI-compatible endpoint)

from openai import OpenAI
from swt3_ai import SWT3Witness

# Point to your Llama serving endpoint (vLLM, Ollama, TGI, etc.)
client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")

witness = SWT3Witness(
  api_key="axm_live_your_key",
  tenant_id="your_tenant_id",
  agent_id="llama-production-v1"
)

# Wrap the client. Every chat.completions.create() is now witnessed.
wrapped = witness.wrap(client)

response = wrapped.chat.completions.create(
  model="meta-llama/Llama-4-Scout-17B-16E",
  messages=[{"role": "user", "content": "Summarize the risk assessment."}]
)

# The inference is witnessed. A SWT3 Witness Anchor was minted.
# No changes to your application code. No new dependencies in your model server.

TypeScript (any OpenAI-compatible endpoint)

import OpenAI from "openai";
import { SWT3Witness } from "@tenova/swt3-ai";

const client = new OpenAI({ baseURL: "http://localhost:8000/v1", apiKey: "unused" });

const witness = new SWT3Witness({
  apiKey: "axm_live_your_key",
  tenantId: "your_tenant_id",
  agentId: "llama-production-v1"
});

const wrapped = witness.wrap(client);

const response = await wrapped.chat.completions.create({
  model: "meta-llama/Llama-4-Scout-17B-16E",
  messages: [{ role: "user", content: "Summarize the risk assessment." }]
});

LiteLLM (100+ provider routing)

from swt3_ai import SWT3Witness
import litellm

witness = SWT3Witness(
  api_key="axm_live_your_key",
  tenant_id="your_tenant_id",
  agent_id="llama-litellm-router"
)

# LiteLLM routes to any Llama endpoint: vLLM, Ollama, Bedrock, Together, etc.
wrapped = witness.wrap(litellm)

response = wrapped.completion(
  model="ollama/llama3.1",
  messages=[{"role": "user", "content": "Evaluate this loan application."}]
)

# Same anchor format regardless of which backend served the inference.
# LiteLLM supports 100+ providers. All produce identical SWT3 Witness Anchors.

4. Model Version Governance

Lifecycle chains for model upgrades (AI-ASSESS.1)

When upgrading from one Llama version to another (for example, Llama 3.1 to Llama 4), the SWT3 lifecycle chain creates an auditable record of the transition. The AI-ASSESS.1 procedure links the old and new model versions in a single chain, providing evidence of champion-challenger assessment.

from swt3_ai import SWT3Witness

witness = SWT3Witness(api_key="axm_live_your_key", tenant_id="your_tenant_id")

# Create a lifecycle chain for the model upgrade
chain = witness.start_chain("model-upgrade-llama4")

# Witness the old model's final assessment
chain.witness(procedure="AI-ASSESS.1", observations={
  "champion": "meta-llama/Llama-3.1-70B",
  "challenger": "meta-llama/Llama-4-Scout-17B-16E",
  "evaluation_dataset": "internal-risk-benchmark-v3",
  "decision": "promote_challenger"
})

chain.close()

Model integrity verification (AI-MDL.1)

Open-weight models can be modified after download. AI-MDL.1 records the SHA-256 hash of the model weights file, proving which exact version is deployed. If the weights change (fine-tuning, corruption, or tampering), the hash changes and the next Witness Anchor reflects the new state.

from swt3_ai import hash_model_file

# Hash the model weights to prove which version is deployed
model_hash = hash_model_file("/models/llama-4-scout/consolidated.safetensors")

witness.witness_model_weights(
  model_id="meta-llama/Llama-4-Scout-17B-16E",
  weights_hash=model_hash,
  source="huggingface",
  version="4.0.0"
)

5. Clearing Levels for Llama

LevelUse CaseWhat Is Retained
Level 0 (Analytics)Internal benchmarking, model evaluation, developmentModel ID, latency, verdict. Prompt and response hashes stripped.
Level 1 (Standard)Production inference, general-purpose Llama deploymentsFull anchor: model, prompt hash, response hash, latency, agent ID. Default for most deployments.
Level 2 (Sensitive)Healthcare, PII workloads, financial services with customer dataFull anchor plus jurisdiction, legal basis, and purpose class (CJT fields). Required for GDPR-regulated workloads.
Level 3 (Classified)Defense, air-gapped environments, national security applicationsFull anchor with offline attestation. No network egress. Anchors stored locally and synced via axiom pulse.

Clearing levels are set per-witness instance. A single deployment can run multiple witness instances at different clearing levels for different workload types.

6. GPAI Compliance

Under the EU AI Act, Llama qualifies as a General-Purpose AI (GPAI) model. Meta, as the provider, has obligations around technical documentation and transparency. But when you deploy Llama into a specific use case, you become the deployer, and additional obligations apply to you.

EU AI Act ArticleObligationSWT3 Evidence
Art. 53Technical documentation for GPAI modelsAI-INF.1 anchors provide inference-level technical records. AI-MDL.1 proves model version and weights integrity. Combined with the SWT3 ledger, this creates the deployer's technical documentation layer.
Art. 50Transparency obligationsEvery Witness Anchor is independently verifiable at sovereign.tenova.io/verify. The anchor format, fingerprint formula, and verification algorithm are public. Transparency is structural, not declarative.
Art. 9Risk management systemAI-GRD.1 proves guardrails were active. AI-FAIR.1 records bias measurement. AI-DRIFT.2 captures consequence-mapped drift thresholds. These procedures create continuous risk management evidence, not point-in-time assessments.
Art. 72Post-market monitoringThe SWT3 ledger is a continuous post-market monitoring record. Every inference is witnessed. Drift detection (AI-DRIFT.2) and model assessment (AI-ASSESS.1) provide ongoing evidence of monitoring activity.

For the full EU AI Act compliance checklist, see EU AI Act August 2026 Checklist. For GPAI Code of Practice mapping, see GPAI Code of Practice Mapping.

7. Procedure Cards

AI-INF.1

Inference Provenance

Open-weight context: When you self-host Llama, there is no third-party API provider recording your inferences. Your serving framework (vLLM, Ollama, TGI) processes requests and returns responses. Without SWT3, there is no independent record that any inference occurred.

SWT3 witnesses: Every inference produces a Witness Anchor recording the model identifier, SHA-256 hashes of the input and output, execution latency, and the serving endpoint. The anchor is minted independently of the serving framework and exists as a verifiable, immutable record.

What to show the examiner

AI-INF.1 anchors prove that a specific Llama model processed a specific input at a specific time. The prompt and response hashes allow correlation with your application logs without exposing the actual content. Verify any anchor at sovereign.tenova.io/verify.

AI-MDL.1

Model Integrity Hash

Open-weight context: Llama weights are downloaded from Hugging Face, Meta's distribution portal, or mirrored internally. Fine-tuned variants may diverge from the original weights. Without a cryptographic record, there is no way to prove which version of the model is actually running in production.

SWT3 witnesses: The hash_model_file() utility computes a SHA-256 hash of the weights file. The AI-MDL.1 anchor records this hash alongside the model identifier, source, and version. Any modification to the weights produces a different hash, creating an automatic integrity signal.

What to show the examiner

AI-MDL.1 anchors prove model provenance. Compare the recorded weights hash against the published hash from Meta or Hugging Face to verify the model has not been modified. For fine-tuned models, the hash establishes a new baseline that can be tracked across deployments.

AI-GRD.1

Guardrail Enforcement

Open-weight context: Closed-model providers embed guardrails in their API. When you deploy Llama, guardrail implementation is entirely your responsibility. Llama Guard, custom filters, content classifiers: whatever you choose, you must prove it was active during every inference.

SWT3 witnesses: The anchor records whether guardrails were active and whether they passed or failed for each inference. This creates a continuous record of safety control status, independent of the guardrail implementation itself.

What to show the examiner

AI-GRD.1 evidence shows guardrailsActive = true and guardrailPassed = true/false for every witnessed inference. A pattern of guardrailsActive = false indicates inferences running without safety controls. This is the deployer's responsibility for open-weight models.

AI-ASSESS.1

Champion-Challenger Assessment

Open-weight context: Llama releases new versions regularly. Upgrading from Llama 3.1 to Llama 4 requires evaluation, testing, and a deliberate promotion decision. Without a governance record, there is no evidence that a structured assessment occurred before the swap.

SWT3 witnesses: The lifecycle chain links the champion (current model) and challenger (candidate model) in a single auditable sequence. The AI-ASSESS.1 anchor records the evaluation dataset, decision outcome, and timestamp, proving that the upgrade followed a governed process.

What to show the examiner

AI-ASSESS.1 lifecycle chains show the full history of model transitions. Each chain links the old and new model versions with the assessment decision. This satisfies Art. 9 risk management requirements for model updates and Art. 72 post-market monitoring for version changes.

AI-FAIR.1

Bias Measurement

Open-weight context: Meta publishes model cards with aggregate bias metrics. These metrics describe the base model, not your deployment. If you fine-tune Llama on your own data, the bias profile changes. If you deploy Llama for a specific population, the impact profile changes. The base model card does not cover your use case.

SWT3 witnesses: AI-FAIR.1 anchors record bias measurement results from your deployment context. This creates deployer-specific fairness evidence that supplements (not replaces) Meta's model card.

What to show the examiner

AI-FAIR.1 anchors prove that bias was measured in your specific deployment context, with your data, for your population. This is distinct from Meta's model card and satisfies the deployer's obligation under Art. 9 to assess risks in the intended use context.

8. Quick Reference

Examiner QuestionWhere to Look
Which Llama version is deployed?AI-MDL.1 anchor: model_id and weights_hash. Compare hash against published weights from Meta or Hugging Face.
Can you prove every inference was governed?AI-INF.1 anchors in the SWT3 ledger. One anchor per inference. Continuous, not sampled.
Were guardrails active?AI-GRD.1 fields: guardrailsActive and guardrailPassed. Any gap in guardrail coverage is visible.
How was the model upgrade assessed?AI-ASSESS.1 lifecycle chain. Links old and new model versions with assessment decision and evaluation dataset.
Is this evidence independent of Meta?Every SWT3 Witness Anchor is verifiable at sovereign.tenova.io/verify. SHA-256 fingerprints exist outside Meta's infrastructure.
Does this work with our serving framework?Yes. vLLM, Ollama, TGI, SGLang, LiteLLM, llama.cpp. Any OpenAI-compatible endpoint. Zero framework-specific code.
What about fine-tuned models?AI-MDL.1 records the hash of your fine-tuned weights. AI-FAIR.1 records bias metrics for your specific model variant.

9. Quick Start

# Python
pip install swt3-ai

# TypeScript
npm install @tenova/swt3-ai

# Wrap your Llama client in 3 lines
from openai import OpenAI
from swt3_ai import SWT3Witness

client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")
witness = SWT3Witness(api_key="your_key", tenant_id="your_tenant")
wrapped = witness.wrap(client)

# Every inference is now witnessed. Zero changes to your model server.

Full SDK documentation: sovereign.tenova.io/docs

Create a free account: sovereign.tenova.io/signup

References