Every AI inference is a compliance event. This guide maps every SDK, every adapter, and every regulatory trigger to the SWT3 procedure that witnesses it.
Who this is for: Technical decision-makers, platform architects, and engineering leads evaluating SWT3 across their AI stack. This is an index guide. It maps the full governance surface and links to detailed adapter-specific guides for implementation.
One protocol, every runtime: SWT3 witnesses AI decisions regardless of the model provider, framework, or programming language. The same anchor format, the same fingerprint formula, the same verification procedure. An anchor minted in a Python LangChain pipeline verifies identically to one minted in a Kotlin Android app.
The runtime surface is every point in your AI system where a consequential decision happens. Each of these points can be witnessed independently:
Each point maps to one or more SWT3 procedures. Each procedure maps to one or more regulatory requirements. The runtime surface is where compliance policy becomes verifiable evidence.
Performance: The wrap() call adds sub-millisecond overhead per inference (SHA-256 hash computation). The network flush to the compliance ledger is asynchronous and does not block the inference response. Offline verification has zero network overhead. The witness layer is an observer, not a gatekeeper: if it fails, inference continues unaffected.
| SDK | Language | Adapters | wrap() | witness() | chain() | gate | reconstruct | OTel |
|---|---|---|---|---|---|---|---|---|
| swt3-ai | Python | 21 | Yes | Yes | Yes | Yes | Yes | Yes |
| @tenova/swt3-ai | TypeScript | 15 | Yes | Yes | Yes | Yes | Yes | Yes |
| swt3-ai | Rust | Core | - | Yes | - | - | - | - |
| swt3-ai | C# / .NET | Core | - | Yes | - | - | - | - |
| swt3-ai | Ruby | Core | - | Yes | - | - | - | - |
| swt3-ai | Swift | Core | - | Yes | - | - | - | - |
| swt3-ai | Kotlin | Core | - | Yes | - | - | Yes | - |
| @tenova/swt3-mcp | MCP | 59 tools | - | Yes | - | - | - | - |
Full SDKs (Python, TypeScript) provide client adapters that intercept inference calls transparently via wrap(). The wrapped client behaves identically to the unwrapped client: same API, same responses, same types. The only difference is that each call also produces a witness anchor behind the scenes, with sub-millisecond overhead.
Core SDKs (Rust, C#, Ruby, Swift, Kotlin) provide the protocol primitives: fingerprint computation, HMAC signing, types, and the witness() method for explicit evidence recording. They do not have wrap() because they are designed for environments where the developer calls witness() directly after each consequential decision. Core SDKs are equally capable of producing and verifying anchors; the integration pattern is explicit rather than transparent.
All SDKs share 54 cross-language test vectors for fingerprint parity. An anchor from any SDK verifies in any other.
Minimum viable governance: If you can only instrument three procedures on day one, start with AI-INF.1 (inference provenance), AI-LOG.1 (audit logging), and AI-GRD.1 (input guardrail). These three cover the baseline that every framework requires: you know which model ran, you have an audit trail, and you have evidence that input validation was active. Expand from there.
Each regulatory requirement activates at runtime through specific SWT3 procedures. This table maps the most common triggers:
| Regulation | Article / Control | Trigger | Procedure(s) |
|---|---|---|---|
| EU AI Act | Art. 9 Risk Management | Every inference of a high-risk system | AI-INF.1, AI-SAFE.1 |
| EU AI Act | Art. 10 Data Governance | Training data bias check | AI-FAIR.1, AI-DATA.1 |
| EU AI Act | Art. 14 Human Oversight | Human-in-the-loop decision | AI-HITL.1 |
| EU AI Act | Art. 50 Transparency | Disclosure that content is AI-generated | AI-TRANS.1 |
| NIST AI RMF | GOVERN 1.2 | AI risk management documentation | AI-GOV.1 |
| NIST AI RMF | MAP 1.5 | Deployment environment characterization | AI-INF.1, AI-HW.1 |
| NIST AI RMF | MEASURE 2.6 | Bias measurement | AI-FAIR.1 |
| NIST 800-53 | SI-4 | Continuous monitoring | AI-INF.1, AI-DRIFT.1 |
| NIST 800-53 | AU-6 | Audit review | AI-LOG.1, AI-AUDIT.1 |
| SR 11-7 | Model Development | Model identity and weights | AI-MDL.1, AI-MDL.5 |
| SR 11-7 | Model Validation | Champion-challenger assessment | AI-ASSESS.1 |
| GDPR | Art. 22 | Automated decision affecting an individual | AI-AUTO.1 |
| GDPR | Art. 35 | Data protection impact assessment | AI-DPIA.1 |
| CMMC | SI-4 / AU-6 | CUI handling by AI systems | AI-INF.1, AI-ACC.1 |
For complete framework-to-procedure mappings, see the UCT Registry (266 procedures, 75 namespaces, 36 frameworks).
Python is the most adapter-rich SDK. Each adapter wraps a specific AI provider or framework with zero-config witnessing:
| Adapter | Provider / Framework | Integration |
|---|---|---|
openai | OpenAI, Azure OpenAI | witness.wrap(client) |
anthropic | Anthropic Claude | witness.wrap(client) |
bedrock | AWS Bedrock | witness.wrap(client) |
litellm | LiteLLM (100+ providers) | witness.wrap_litellm() |
ollama | Ollama (local models) | witness.wrap(client) |
vllm | vLLM (OpenAI-compatible) | wrap_vllm(client) |
vllm_native | vLLM AsyncLLMEngine | Token factory observer |
cohere | Cohere V2 | witness.wrap(client) |
langchain | LangChain (any LLM) | Callback handler |
langgraph | LangGraph | wrap_langgraph(graph) |
crewai | CrewAI | wrap_crewai(crew) |
google_adk | Google ADK | wrap_adk(agent) |
foundry | Microsoft Foundry | wrap_foundry(agent) |
agt | Microsoft AGT | wrap_agt(engine) |
a2a | Google A2A Protocol | wrap_a2a(agent) |
qdrant | Qdrant (RAG pipeline) | wrap_qdrant(client) |
cerebras | Cerebras WSE-3 | Host-side observer |
dynamo | NVIDIA Dynamo | Async generator decorator |
triton | NVIDIA Triton | Python backend wrapper |
skillspector | NVIDIA SkillSpector | Scan result witness |
openshell | OpenShell | Adapter |
All adapters are duck-typed. They work with any object that exposes the expected method (.create(), .send(), .run(), etc.) without importing the provider library as a dependency.
| Adapter | Provider / Framework | Integration |
|---|---|---|
openai | OpenAI (ES6 Proxy, streaming) | witness.wrap(client) |
anthropic | Anthropic Claude | witness.wrap(client) |
bedrock | AWS Bedrock | witness.wrap(client) |
vercel-ai | Vercel AI SDK | onFinish callback factory |
ollama | Ollama | witness.wrap(client) |
vllm | vLLM | witness.wrap(client) |
cohere | Cohere | witness.wrap(client) |
langgraph | LangGraph | wrapLangGraph(graph) |
crewai | CrewAI | wrapCrewAI(crew) |
google-adk | Google ADK | wrapADK(agent) |
foundry | Microsoft Foundry | wrapFoundry(agent) |
agt | Microsoft AGT | wrapAGT(engine) |
a2a | Google A2A Protocol | wrapA2A(agent) |
qdrant | Qdrant | wrapQdrant(client) |
cerebras | Cerebras WSE-3 | Host-side observer |
Core SDKs provide the protocol primitives: fingerprint computation, HMAC-SHA256 payload signing, type definitions, and basic witness record creation. They do not include provider-specific client adapters.
These SDKs are designed for:
All core SDKs produce anchors that are byte-identical in fingerprint computation to the Python and TypeScript SDKs. 54 test vectors enforce cross-language parity.
The @tenova/swt3-mcp package exposes SWT3 witnessing as a Model Context Protocol server. Any MCP-compatible AI host (Claude Desktop, VS Code Copilot, custom agents) gains access to 18 governance tools without code changes.
MCP tools enable compliance discovery: the host agent can query its own governance posture, verify anchors, check procedure coverage, and generate evidence, all through the standard MCP tool-calling interface.
For detailed MCP governance patterns, see the MCP Governance and Compliance guide and the NSA MCP Security Mapping.
Start with the adapter that matches your existing AI client:
| If you use... | Start with... | Detailed guide |
|---|---|---|
| OpenAI / Azure OpenAI | witness.wrap(client) | Quick Start |
| Anthropic Claude | witness.wrap(client) | Claude Regulated |
| AWS Bedrock | witness.wrap(client) | SDK Docs |
| LangChain / LangGraph | Callback handler or wrap_langgraph() | Multi-Agent Witness |
| CrewAI | wrap_crewai(crew) | Multi-Agent Witness |
| Google A2A | wrap_a2a(agent) | A2A Agent Card |
| MCP hosts (Claude Desktop, etc.) | npx @tenova/swt3-mcp | MCP Governance |
| Vercel AI SDK | onFinish callback | SDK Docs |
| NVIDIA Dynamo / Triton | Decorator or backend wrapper | Dynamo Integration |
| Cerebras WSE-3 | Host-side observer | SDK Docs |
| Self-hosted / vLLM / Ollama | witness.wrap(client) | Self-Hosted Quick Start |
| 100+ providers via LiteLLM | witness.wrap_litellm() | SDK Docs |
If your provider is not listed, the witness.wrap() method works with any OpenAI-compatible client. If you use a non-OpenAI protocol, use the explicit witness.witness() method to record individual procedures directly.