AWS · Claude · LLM Governance · Enterprise AI · AWS Bedrock · AI Architecture · Identity · Cost Management · Platform Engineering

The Claude Apps Gateway Is a Reference Architecture for Enterprise LLM Governance

By Ramesh Nori · July 9, 2026 · 10 min read

The Claude Apps Gateway Is a Reference Architecture for Enterprise LLM Governance

The Claude apps gateway for AWS shipped as a self-hosted control plane for Claude Code and Claude Desktop. That is the stated scope, and if you are running a developer workforce with Claude Code, this is going to matter a lot to your platform team.

But that is not the interesting part.

The interesting part is that the gateway's five capabilities (identity, policy, telemetry, routing, spend caps) are the shape of enterprise LLM governance for every LLM in your organization. Not just the developer tools. Not just Claude. Every LLM your applications, agents, and workforce touch will eventually need each of these five things governed centrally. The gateway is the reference architecture. It just happens to ship first for the Claude Code use case.

If you are building AI systems that will eventually live in front of a real workforce or a real customer base, look at what AWS did here and steal the pattern.

What's in the box

Before we get to what generalizes, a brief look at what the gateway actually is.

It runs as a single stateless container backed by PostgreSQL. Deployable to ECS, EKS, or EC2. Sits behind an Application Load Balancer with ACM TLS. Uses RDS for short-lived sign-in state and rate-limit counters. Configured through a single YAML file at startup.

Its five responsibilities:

  • Identity. Connects to any standards-compliant OIDC provider. Issues short-lived tokens (default one hour). Session refresh happens silently via OIDC refresh tokens. When a user is removed from the identity provider, their session expires within the configured token lifetime.
  • Policy. Managed settings defined once on the server, scoped by IdP group. Controls which models are allowed, what tool permissions apply, and what default settings each group inherits.
  • Telemetry. Relays usage via OpenTelemetry Protocol (OTLP) to any OTLP-compatible collector, including Amazon CloudWatch and Amazon Managed Service for Prometheus.
  • Routing. Holds upstream credentials and routes inference to Amazon Bedrock or Claude Platform on AWS. Supports failover between regions and accounts as configuration.
  • Spend caps. Enforces daily, weekly, and monthly spend limits per organization, group, or user.

That is a small feature list. It is also a comprehensive one. Every enterprise deploying LLMs eventually needs all five of these, and most build them from scratch or piece them together from three or four separate tools.

The five capabilities are the reference architecture

Animated view of the five capabilities rising into place: identity, policy, telemetry, routing, spend caps

Look at each capability and ask "if I were designing an LLM control plane for my whole organization, what would I want it to do?" The answers converge on the same list.

Identity

An LLM control plane needs to know who is calling it. Not a service account, not a shared API key that gets rotated once a year. A real, per-user identity that maps back to your existing identity provider so that when a person leaves the company, their access ends when their SSO ends. Short-lived tokens are how you do this without making refresh a manual chore.

The gateway does this through OIDC. Every enterprise LLM deployment should do this through OIDC or an equivalent standard. If your production AI system authenticates callers with a static API key today, you have work to do that is not optional.

Policy

The reason enterprises deploy control planes at all is because "developer A can use whatever they want" scales badly. You need to say "sales engineering can use Sonnet, security research can use Opus, everyone can read from the customer knowledge base but only support can write to it." Policy is how you say that once, in one place, and have it apply consistently.

The gateway scopes policy by IdP group. That is the right unit. Users move between groups more than they change identity, so binding policy to groups rather than to individual users is what lets policy stay maintainable as the organization changes.

Notice what is not in the policy story: no per-user special cases, no exceptions layered on top of exceptions. Group scoping is a discipline. Enforcing it is how policy stays coherent.

Telemetry

You cannot govern what you cannot measure. Every LLM control plane needs a way to answer questions like "how much did we spend last month on Opus versus Sonnet," "which teams are using RAG heavily," and "why did our token consumption double last Tuesday." The gateway relays telemetry via OTLP, which is the open standard. You can pipe it into CloudWatch, Prometheus, or any other OTLP-compatible collector.

The choice of OTLP is worth calling out. It means the telemetry story is not locked to any particular observability vendor. Your platform team can send data to CloudWatch today, switch to Grafana Cloud tomorrow, and add a third destination the day after. This is the pattern to imitate. Open standards for telemetry, always.

Routing

Routing is where the vendor risk piece we published becomes concrete. Multi-model fallback was a continuity requirement after the Fable 5 suspension. The gateway ships that as configuration.

You define an upstream (Bedrock in a primary region, Bedrock in a secondary region, Claude Platform on AWS as a third option) and the gateway handles the routing. Failover between regions and accounts is a config knob, not code. That is the pattern every enterprise deployment should have. If your application code is doing multi-model fallback logic inline today, you are going to want to pull that out into a control plane.

There is a real multiplier in this. The gateway's routing layer means every developer using Claude Code inherits the failover pattern automatically, without any of them having to think about it. That is the point of a control plane.

Spend caps

This is the capability most enterprises are building from scratch right now. The gateway ships daily, weekly, and monthly spend caps enforced server-side, per organization, per group, or per user.

Server-side enforcement is the important part. Client-side "please stay under this budget" is not a control. It is a wish. The gateway enforces the limit at the routing layer, which means a developer running Claude Code cannot exceed their cap regardless of what they do on their local machine.

Every LLM control plane needs this. Not every organization builds it, because it is harder than it sounds. The gateway making it a first-class feature is a real gift to platform teams.

What generalizes beyond Claude Code

The gateway is scoped to Claude Code and Claude Desktop. That is the stated purpose. But every one of the five capabilities generalizes cleanly to any LLM deployment in your organization.

If you are running a production RAG system that calls Bedrock, you need identity (which of your users is asking this question), policy (what data is this user allowed to see), telemetry (how much are we spending on which workloads), routing (what happens when the primary region is degraded), and spend caps (what stops a runaway agent from ringing up a $40,000 bill).

Every one of those maps to a capability the gateway ships. The gateway itself is not going to run in front of your production applications. But the shape of what you build for those applications should look a lot like this.

That is why the gateway matters beyond Claude Code adoption. It is AWS publishing, in concrete form, the reference architecture that every enterprise LLM deployment will eventually converge on.

What the gateway does not solve

Being honest about the scope. The gateway is a control plane for access. It is not a full AI governance solution. Four things it does not solve.

Eval portability. The routing layer can fail over between models, but it does not guarantee your evals work against the fallback. If you tuned your prompts and evals against Opus and the gateway fails you over to Sonnet, the gateway does not tell you how your application behaves in that state. You still have to run portable evals to know how the fallback performs on your workload.

Continuity rehearsal. The gateway makes failover possible. It does not make failover rehearsed. If you configure the gateway with a fallback path and never route traffic through it, you have a fallback that has never been exercised. That is still a hope, not a plan. The rehearsal discipline is on you.

Prompt injection defense. The gateway sits between users and the model, but it does not filter the content of prompts. Adversarial inputs targeting model behavior still flow through. If your application accepts natural language from end users, prompt injection is a real concern the gateway does not address.

Production application governance. The gateway is designed for Claude Code and Claude Desktop. It is not the control plane for your production applications that call Bedrock through the SDK. Those applications need equivalent capabilities built in, either through a similar internal control plane or through direct integration with the same OIDC provider, telemetry system, and spend-cap mechanism. The gateway shows you the shape. Building it into your production stack is still your work.

Three patterns worth copying

If you take three specific ideas from the gateway's design into your own AI systems, take these.

Pattern 1: Server-side spend caps, not client-side hoping.
Enforce spending limits at the routing layer, per user or per group, before the request reaches the model. Client-side limits are a wish. Server-side limits are a control. If you are letting your developers or applications spend against Bedrock without a hard ceiling that the requester cannot bypass, you are relying on discipline that will fail you eventually.

Pattern 2: Upstream failover as configuration.
Move multi-model, multi-region, and multi-account failover logic out of your application code and into a control plane. The gateway makes this a YAML file. Your production stack should aim for the same: routing decisions declared, not coded. Application developers should not have to think about "which model do we fail over to" during every feature build.

Pattern 3: OTLP for telemetry, always.
Instrument every LLM call through OpenTelemetry. The gateway does this by default. Your production applications should too. It is the open standard, it works with every major observability tool, and it means your telemetry decisions are not permanently locked to whichever vendor you picked last quarter.

The bottom line

AWS shipped a control plane for Claude Code and Claude Desktop. What they published is bigger than that. The five capabilities of the gateway (identity, policy, telemetry, routing, spend caps) are the shape of enterprise LLM governance for every LLM in your organization, not just the developer tools.

The gateway itself is a specific product with a specific scope. The architectural pattern behind it is universal. If you are building AI systems for your organization, or advising an enterprise on how to adopt one, the design decisions in the gateway are a shortcut to a mature LLM governance layer. Copy the shape. Adapt the specifics.

AWS just did a lot of design work in the open. Take advantage.


Written by Ramesh Nori. If this was useful or you have feedback, reach me at cloudbuckle@gmail.com.