Interlock. One
router, every
model. Governed.

An OpenAI-compatible router that speaks your existing SDK and enforces your governance. Route by cost, latency, residency, or policy, without rewriting the app.

Most LLM routers do one thing. Pick a provider. Interlock does four. Identity, delegation, residency, and billing, attached to the same request. Routing is the easy part.

One endpoint, every provider

Send requests to Interlock. It routes to the right provider based on your policy, and writes the audit trail on the way through.

Your app

Interlock

OpenAIAnthropicVertex AIAWS BedrockAzure OpenAI

Route by cost, latency, throughput, or residency.

Define policy once and enforce it everywhere. Cost-sensitive workloads pick the cheapest qualifying provider; latency- sensitive ones pick the closest. Same SDK, different rules.

Drop-in OpenAI compatibility.

Same SDK, same types, same error shapes. Change the base URL and keep your client code. Streaming, tool calls, and structured outputs all work unmodified.

Automatic fallbacks. Failed providers aren't rebilled.

When a provider hiccups, the next one picks up the request. Failed attempts don't hit your invoice. Your app never sees the gap.

BYOK, encrypted in Vault.

Bring your own provider keys to keep your negotiated rates and quotas. Stored in Mistrive Vault, scoped per tenant, rotated without touching your app.

Per-generation cost tracking.

Prompt tokens, completion tokens, cached tokens, reasoning tokens, metered per request and attributed to the identity that triggered it. The bill matches the audit trail.

Zero data retention. Region-bound by default.

Logging policy controls and residency rules enforced at the request boundary, not in middleware your team has to remember to wire up.

Change the base URL. That's it.

Your existing OpenAI SDK code works unmodified. Add routing preferences via extra_body when you want control, switch to the audit-log tab to see what Interlock writes back to Noekl on every call.

from openai import OpenAI

# Just change the base URL — everything else stays the same
client = OpenAI(
    base_url="https://interlock.mistriveapis.com/v1",
    api_key="sk_...",  # Your Mistrive API key
)

response = client.chat.completions.create(
    model="anthropic/claude-sonnet-4",
    messages=[{"role": "user", "content": "Hello"}],
    extra_body={
        "provider": {
            "sort": "price",
            "require_zdr": True,
            "data_residency": {
                "required_regions": ["eu-west-1"]
            },
        }
    },
)

Anchor runs. Interlock routes. Noekl controls.

The same identity plane that governs Anchor sandboxes and integration credentials also governs model access. Route decisions, cost caps, and residency rules enforce on the way through. Usage is metered to the correct billing account automatically.

One request in.
The right provider out.
Every decision audited.