AI Sovereignty
three-way routing · 🔒 sovereign toggle · audit-grade
a product of ultisim

Ri Koh — AI Sovereignty in One Page

The same Claude AI. Three different infrastructure paths. Picked per query.

Effective 2026-04-28 Owner: UltiSim Inc. Source of truth: /data-handling §9.6
UltiSim's enterprise customers — particularly federal agencies, defense primes, and regulated industries — increasingly need to know exactly where their data is processed when AI is in the loop. Ri Koh answers that question with a three-tier provider model: same model quality across all three, but each tier sits inside a different contractual and infrastructural envelope. The user picks the envelope per query, and Ri Koh enforces an additional automatic override for content classified as restricted.

The three paths

  Anthropic API AWS Bedrock Local LM Studio
Tier label Default Sovereignty Air-gap
Where inference runs Anthropic-managed AWS Customer-pinned AWS region (us-east-1, us-gov-west-1) On-premise, customer hardware
Region pinning US (not customer-pinnable on standard tier) Yes — single AWS region per tenant Yes — never leaves the network
Train opt-out YES — Anthropic Commercial Terms YES — AWS Bedrock service terms YES — model is local
Compliance attestations SOC 2 Type II · ISO 27001 · ISO 42001 SOC 2 Type II · FedRAMP High (GovCloud) · HIPAA-eligible Inherits customer's controls
Latency Fastest Fast (one extra AWS hop) Slowest (consumer GPU)
Answer quality Best (full Claude Sonnet) Best — same Claude weights via AWS Good for facts; weaker on persona/voice

Anthropic and Bedrock both run identical Claude weights — choosing Bedrock does not degrade answer quality, only changes the contractual perimeter around the inference. The Local path runs an open-weights model (Llama, Qwen, Mistral) on customer hardware.

How the routing decision is made

For every query, Ri Koh picks one provider using the following precedence (top wins):

  1. Sensitivity override — automatic, non-overridable. If any retrieved RAG chunk carries sensitivity_level='restricted', the query is forced to Local regardless of what the user picked. The response is tagged with a red SOVEREIGNTY FORCED badge. This is a security control, not a preference; users cannot bypass it.
  2. Per-query manual override. The chat composer exposes a provider dropdown and a 🔒 Sovereign toggle. The dropdown picks a provider for the next single query. The 🔒 toggle pins all subsequent queries to Local until cleared — useful when an entire conversation will deal with sensitive material.
  3. Tenant default. Each tenant can be configured with a default provider (e.g., a GovCloud-only customer can default to Bedrock).
  4. Worker default. Falls through to the DEFAULT_AI_PROVIDER environment variable (currently anthropic).

Every response carries a Generated by X badge that names the provider, the model, and (for Bedrock) the region. The same metadata is recorded in query_log for SOC 2 auditability — so any post-hoc question of "which provider answered this query?" has a deterministic answer.

What gets sent to each provider

The request shape is identical across all three: the assembled system prompt, the retrieved RAG context, the user's question, and a bounded conversation history (max 10 turns). No identity tokens, JWTs, or cross-tenant data are ever sent to a provider — the post-retrieval context is filtered to the requesting user's access scope before the provider call is made. Switching provider does not change what is or isn't visible to the model; it only changes which legal entity and which physical infrastructure runs the inference.

When to use which

Anthropic (default)

Obvious choice for general commercial use. Best latency, best quality, simplest billing. Default for every tenant unless an enterprise agreement specifies otherwise.

AWS Bedrock

Pick this when the customer needs an explicit US-region commitment, FedRAMP coverage, or wants the inference covered under their existing AWS BAA / DPA / GovCloud contract. Same Claude quality as the default path.

Local (LM Studio)

Pick this when the data fundamentally cannot leave the customer's network. Use it for restricted-sensitivity content (CUI, HIPAA, attorney-client privileged), air-gapped facilities, and full air-gap demonstrations.

The audit story, in one sentence: Every Ri Koh response is tagged with the provider, model, and region that produced it; restricted-sensitivity content is automatically and non-overridably routed to local infrastructure; and the full provider-selection precedence is documented in /data-handling §9.6.