AI Gateway Hybrid Infrastructure

Plan, size, and prepare the infrastructure for a Prisma AIRS AI Gateway hybrid data plane on EKS, AKS, GKE, ECS, or Azure Container Apps, covering the two-plane architecture, component inventory, published sizing, outbound connectivity to the management plane, and per-platform prerequisites

Guide Approach

This is a companion to the AI Gateway Deployment Guide. It covers only the infrastructure a hybrid data plane needs: what runs in your environment, how big it has to be, what it talks to, and what each platform requires before you deploy.

It does not repeat licensing, activation, or Strata Cloud Manager (SCM) configuration. Those live in the deployment guide, and you need them regardless of which platform you land on.

Prisma AIRS AI Gateway is the Portkey gateway, acquired by Palo Alto Networks. You will see the name Portkey in chart names, hostnames, and the vendor's own documentation (docs.portkey.ai). There are two ways to install it: the Gateway Registration wizard in Strata Cloud Manager, which generates a values.yaml for the airs-gw Helm chart, or the vendor's per-platform deployment pages for EKS, AKS, GKE, ECS, and Azure Container Apps, which use the portkey-ai/gateway chart on the Kubernetes platforms and Terraform on the other two. Which one you are on changes most of what follows, so settle it in Which path are you on? before reading further.

This guide ends when the prerequisites for your platform are built. Install from the deployment guide (path 1) or the platform page (path 2), then return to After install: confirm the link under Operations.

Connectivity is outbound only

Palo Alto Networks confirmed on 2026-09-27 that private link is not supported with Strata Cloud Manager and that the only connectivity between a gateway and the cloud is outbound from the gateway. The platform deployment pages still describe an inbound path, because they describe the Portkey product. The diagrams in this guide no longer draw it. Read Inbound is not supported with Strata Cloud Manager before you build against one of those pages.

▶ Which path are you on?

Settle this before you write any values.yaml, because the two paths differ in more than the chart name. They differ in how the planes reach each other, which endpoints you allow, and whether you need to involve Palo Alto Networks to complete the integration.

How to tell which path you are on

In Strata Cloud Manager, open AI Security, then AI Gateway, then Admin Settings in the left navigation, and select the Gateway Registration tab. If the header row showing Total Gateways has an Add New Gateway button at its right-hand end, you are on the first path (SCM registration) and the deployment guide contains your instructions. If it does not, you are on the second path (platform pages). Everything in this guide about PrivateLink, IP allow-lists, and the management plane's AWS principal belongs to the second path. The cluster requirements, sizing, and storage sections apply to both.

SCM Gateway Registration (path 1)Platform deployment pages (path 2)
Chartairs-gwportkey-ai/gateway
SourcePortkey-AI/airs-gw-helm, path charts/airs-gwhttps://portkey-ai.github.io/helm
How you get values.yamlGenerated by the wizard in SCMYou write it from the platform page
ConnectivityOutbound only: api.portkey.ai and registry.portkey.ai on 443Outbound only in practice; the pages also describe an inbound path AIRS does not support, per Connectivity
Palo Alto Networks involvementNone, self-serviceRequired for credentials, and for the inbound link the pages describe
Documented inAI Gateway deployment guide, Phase 2This guide, and the platform pages under docs.portkey.ai, self-hosting/hybrid-deployments/ (see Source documentation in Reference)

Platform-page path only. The command below is shown for reference; do not run it yet. It needs the values.yaml you write from the platform page after the prerequisites in this guide are in place. If a previous attempt installed the other chart, remove it first so two gateways are not syncing against one Organisation ID: run helm list -A and helm uninstall <release> -n <namespace> for any airs-gw or portkey-ai release you find. The command itself is safe to re-run; it upgrades an existing release of the same name in place.

helm repo add portkey-ai https://portkey-ai.github.io/helm

helm upgrade --install portkey-ai portkey-ai/gateway \
  -f ./values.yaml \
  -n portkeyai \
  --create-namespace

On the SCM registration path, use the install command shown in the wizard's Configure Gateway Deployment stage instead; see the deployment guide, Phase 2.

Complete these first
  • Path 1 (SCM wizard) — finish Phase 1 (License and Activate) and Phase 2 (Enable the Gateway) in the deployment guide. The wizard's values.yaml carries your image pull credentials and environment secrets, so you do not request them separately.
  • Path 2 (platform pages) — finish Phase 1 only, and obtain two secrets from your account team, issued against your Organisation ID: Docker registry credentials (pull access to registry.portkey.ai) and the Client Auth Key (authenticates this data plane to the management plane sync API for your organisation).
  • Both paths — a workspace API key from SCM, so you can send a test request after install. Phase 3, Step 3.8 of the deployment guide covers creating one.

Without those, the install will come up but never pull images or sync. On the Helm paths the two secrets go into values.yaml or a Kubernetes Secret (mechanics in the AWS checklist); on Container Apps they go into Key Vault. Store the originals in your secret manager, treat values.yaml and the Key Vault entries as credentials, and never commit them. Ask your account team for the rotation procedure when they issue the secrets; this guide does not cover rotation. If a previous install is stuck in ImagePullBackOff, confirm with the team that the credentials are still active before you reinstall.

Hybrid Architecture

Prisma AIRS AI Gateway is deployed as a two-plane system. AI traffic is processed inside your own environment. Administration, analytics, and log presentation run in the management plane behind Strata Cloud Manager. The split determines what leaves your network, which is usually the first question a security or privacy review asks.

The diagram below is the reference topology on AWS. Azure and GCP versions appear in their prerequisite sections, and the numbered flows are consistent across all three. None of them draws a connection from the management plane into your network, because there is not one; see Inbound is not supported with Strata Cloud Manager.

AI Gateway hybrid data plane on AWS: applications call an internal load balancer, which balances across gateway pods on EKS worker nodes in two Availability Zones. The pods read config from ElastiCache, write logs to S3, and reach the management plane outbound over PrivateLink or the internet.
▶ What runs where

The data plane processes every LLM request. The management plane is where you author configuration and read analytics. The Strata Cloud Manager API Gateway sits at the boundary and is the sole authentication authority for anything entering the management plane.

Customer environmentRole
AI GatewayLLM reverse proxy. Routes to providers, enforces rate limits and quotas, applies guardrails, produces analytics and raw log data. Stateless containers that scale horizontally.
Cache StoreLocal Redis holding configuration objects, so requests are served without a round trip to the management plane.
Log StorageBlob store holding the full request and response payload for every LLM call.
LLM ProvidersThe upstream models the gateway routes to, whether public, private, or self-hosted.
Management planeRole
SCM API GatewayTerminates mTLS, authenticates end users, injects identity headers. Sole authentication authority.
BackendOwns all writes to MySQL. Reads ClickHouse for analytics, reads the blob store for log detail views, manages cache invalidation.
DashboardThe SCM web interface for configuration, logs, and analytics.
MySQLOrganisations, workspaces, API keys, routing configs, guardrail definitions, entitlements, tenant mappings. The gateway never connects to it directly.
ClickHouseRequest metrics and guardrail results written by the gateway; audit logs written by the Backend.
RedisManagement plane cache for auth context, configs, rate limit counters, and circuit breaker state.
Blob StoreObject storage for full request and response bodies, read by the Backend to serve log detail views.
Where prompt logs are stored

Both tables list a blob store. By default, prompt and completion bodies go to the Strata Cloud Manager AI Gateway backend and are held in the region Strata Cloud Manager runs in, which today is the Americas only, with other regions planned. Setting the log store to local keeps them in your own environment instead.

That local setting currently breaks log viewing from the Strata Cloud Manager management plane, and Palo Alto Networks has it logged as a bug. So the choice is a trade rather than a free win: prompt bodies in your own region with no central log views, or central log views with prompt bodies in the Americas.

The LOG_STORE mechanism described below is the Portkey product's, documented on the platform deployment pages this guide follows. Setting it to a bucket-backed value such as s3_assume or s3_custom writes bodies to your bucket, and the Backend reads them across the link when an operator opens a log entry; control_plane sends them to the management plane instead. The exact key AIRS uses for the local store is not confirmed, so treat the snippets below as the published platform-page procedure and verify the setting took effect before you rely on it.

Retention period and custody for the backend store are still unpublished. Until Palo Alto Networks confirms both, the honest answer to a customer who stays on the default is that full prompt content reaches Palo Alto Networks and those details have not been stated.

▶ Identity and authentication

Session cookies are not used on management plane routes. Identity is established through three headers the SCM API Gateway injects into every request it forwards.

HeaderCarriesUsed for
Tenant IDThe Palo Alto Networks Tenant Service Group (TSG) identifierResolved in MySQL to an internal organisation identity. Unrecognised tenants are rejected before any business logic runs.
User SubjectOpaque user identity from the Palo Alto Networks JSON Web Token (JWT)Caller identity for audit entries. Never persisted in a Backend user store, because SCM owns user lifecycle entirely.
Scope AccessThe workspace scopes the caller may accessEvaluated per request. Workspace membership tables are not consulted, so access is entirely scope based.

The load balancer in front of the Backend terminates mutual TLS (mTLS, where both sides present certificates) and forwards the verified client certificate subject. The Backend then re-verifies the certificate Common Name (CN), so gateway-injected identity headers are trusted only when the caller is genuinely the SCM API Gateway. None of these are values you configure; they are issued and verified inside the management plane.

▶ Request lifecycle

Only the synchronous path affects response latency. Everything else runs after the client already has its answer.

Synchronous:

  1. Entry — the application sends an LLM request to the gateway in your environment.
  2. Auth and config hydration — the gateway checks Redis for the API key, organisation context, and routing configuration. A cache miss calls the Backend over the link, which reads MySQL and returns the hydrated object for the gateway to cache.
  3. LLM proxying — the gateway forwards the request, with any configured transformations, to the target provider. The response streams back through the gateway.
  4. Response return — the client's request ends here.

Asynchronous, non-blocking:

  1. Metrics to ClickHouse — token counts, cost, latency, model, provider, cache status, and trace identifiers, plus a pointer to the full log body. These are written in batches.
  2. Raw log to blob store — the complete request and response payload as a structured document. The file path matches the pointer in the ClickHouse record, which is how the Backend cross-references the two when serving log details.
  3. Usage sync — updated usage counters, API key exhaustion events, and quota state.

Because config is cached locally, the gateway keeps serving traffic when the management plane is unreachable. It stops receiving configuration updates but continues to serve requests. That includes API key revocations, guardrail changes, and quota updates: a key revoked in SCM continues to be accepted by a disconnected gateway until the cached auth object expires. The cache TTL, and whether the gateway fails closed after it, are described in the cache behaviour documentation; confirm them with your account team and treat management plane reachability as a security control, not only an availability one.

▶ Data residency and encryption

This is the section to bring to a data protection review.

  • Prompt content and LLM responses — in the current AIRS release these reach the Strata Cloud Manager backend and are stored there. Treat every prompt that passes through the gateway as data that has left your environment. On the Portkey product, LOG_STORE pointed at your own bucket keeps bodies in your account and a single body crosses the boundary each time an operator opens that entry; that is not the AIRS GA behavior.
  • Crossing the boundary by default — metrics (tokens, cost, latency, model, provider, trace identifiers), usage counters, configuration sync, and, in the current AIRS release, full prompt and completion bodies.
  • Log storage location — not customer-selectable in the current AIRS release, per the note above. Region, retention, and custody for the backend store are unpublished.
  • In transit — TLS 1.3 between planes.
  • At rest — all management plane data encrypted, with envelope encryption for sensitive fields.
  • Bring Your Own Key (BYOK) — optional, with AWS Key Management Service (KMS), for management plane data at rest.
  • Access control — network-level controls restrict management plane access to authorised IPs, administrative functions use scope-based access control, all administrative actions are audit logged, and access tokens are short lived with automatic rotation.

Strata Cloud Manager runs in the Americas only today, with other regions planned, so that is where backend-stored bodies land. See Open Questions before designing for EU residency.

Data Plane Components

The gateway itself is the only mandatory component. Everything else is a choice between a bundled instance and a managed service, and in most production designs you want the managed service.

▶ Component inventory
ComponentRequiredOptions
AI GatewayYesStateless containers. Scales horizontally.
Cache StoreYesBuilt-in Redis, Amazon ElastiCache for Redis OSS or Valkey, Azure Cache for Redis, GCP Memorystore. Must sit in the same VPC or VNet as the gateway.
Log StoreOptionalAmazon S3, Azure Blob Storage, Google Cloud Storage, any S3-compatible store, MongoDB, or Wasabi.
Analytics StoreYes (provided by the management plane)ClickHouse in the management plane. Exportable to any OpenTelemetry-compatible collector.
Semantic Cache StoreOptionalMilvus or Pinecone, only if you want semantic caching.
Data ServiceOptionalBatch processing, fine-tuning, and log exports.
Model Context Protocol (MCP) GatewayOptionalProxies MCP tool servers for agents. Enabled through values.yaml.

The cache holds hydrated API key and routing objects, so treat it as a secret store. Require AUTH and in-transit encryption on the managed options, restrict the cache security group or firewall rule to the gateway node or pod CIDR on TCP 6379, and do not expose the built-in Redis through any Service of type LoadBalancer.

Sizing the log store is straightforward: each log document is roughly 10 kB uncompressed. Multiply by your request volume and retention window.

▶ Log object path format

Set LOG_STORE_FILE_PATH_FORMAT to control how log files are laid out in the bucket.

ValueFormatExample path
v1 (default)Flat30/<organisation-id>/<log-id>.json
v2Time-hierarchical30/<organisation-id>/<workspace-slug>/<year>/<month>/<day>/<hour>/<log-id>.json

Choose v2 if you intend to apply lifecycle rules or query by time period, which most retention policies need. Two constraints apply: changing the value affects only newly written logs, since existing objects are not migrated, and v2 is not supported for air-gapped deployments where LOG_STORE is set to control_plane.

Platform Support

Five platforms are documented across two delivery mechanisms. Which mechanism applies is the first thing to establish, because it changes the whole deployment workflow.

▶ Supported platforms and delivery method
PlatformDeliveryNotes
Amazon EKSHelm chartAlso available through AWS Marketplace.
Azure AKSHelm chartAlso available through Azure Marketplace.
Google GKEHelm chartRequires a REGIONAL_MANAGED_PROXY subnet.
Amazon ECSTerraformContainer tasks, no Kubernetes involved.
Azure Container AppsTerraformContainer replicas, no Kubernetes involved.
Any conformant Kubernetes clusterHelm chartPrivate cloud and on-premises included. No platform-specific page exists, so the cloud pages are the model.

ECS and Container Apps need no Kubernetes cluster; see ECS and Container Apps. Any other conformant cluster, including on-premises, is supported without a vendor page; see On-premises and private cloud clusters.

▶ On-premises and private cloud clusters

What the cluster has to provide, independent of platform:

RequirementDetail
Conformant KubernetesAny distribution that passes upstream conformance. No minimum managed-service tier and no cloud-specific integration.
Helm v3Run by a user whose Kubernetes role-based access control (RBAC) permissions allow creating Deployments, Services, Secrets, ConfigMaps, and ServiceAccounts in the target namespace (cluster-admin on a lab cluster is sufficient).
Two worker nodes minimumAt least 2 vCPU and 4 GiB each, matching the published cloud minimums. Spread them across failure domains if your platform has them.
Egress to the management planeHTTPS on 443. The hostnames depend on your integration path: see Connectivity.
Image pull accessregistry.portkey.ai for the gateway image. Bundled optional components pull from docker.io and quay.io, so a mirrored cluster needs all three mirrored.
An object storeAny S3-compatible endpoint, including in-cluster MinIO. Nothing requires it to be a cloud service.
A Redis the pods can reachThe chart can deploy its own, or you can point it at one you run.
A load balancer or ingressTo publish the gateway endpoint to your own workloads. The idle timeout must exceed your longest generation.
Gateway listenerThe pod listens on plain HTTP on container port 8787, which the platform pages set as both containerPort and the PORT environment variable. Terminate TLS on the load balancer or ingress with your own certificate and keep the load balancer to pod hop inside the cluster network.

The Palo Alto Networks administration documentation names any public cloud, private cloud, or on-premises Kubernetes cluster as a valid host, so vSphere with Tanzu, TKG, OpenShift, RKE2, Rancher, k3s, and self-built clusters on bare metal are all valid targets; work from the table above and the cloud pages, and confirm storage driver and ingress specifics with your account team before committing a customer to a date.

Storage is where the environment actually matters

The Kubernetes platform underneath changes nothing in the chart values. Storage does, because each provider has its own service names, environment variables, and authentication model. Pick the backend you already own rather than the one matching your cluster's location: nothing stops an on-premises cluster from writing to S3, or an EKS cluster from writing to in-cluster MinIO.

Sizing

Sizing recommendations are published per platform. They are minimums for a working deployment and have not been validated for throughput, so treat them as the floor and load test against your own traffic before committing to a production shape.

▶ Published sizing by platform
PlatformUnitMinimum
EKSWorker nodet4g.medium, at least 2 vCPU and 4 GiB
AKSWorker nodeB2ms, at least 2 vCPU and 4 GiB
GKEWorker nodeAt least 2 vCPU and 4 GiB
ECSTaskAt least 1 vCPU (1024 CPU units) and 2 GiB
Azure Container AppsReplicaAt least 1 vCPU and 2 GiB
  • Node count — at least 2 worker nodes on all three Kubernetes platforms.
  • Availability — one node per Availability Zone is the documented best practice, and for ECS and Container Apps the equivalent is tasks or replicas spread across zones with autoscaling enabled.

No throughput figures are published, and neither the Data Service nor a self-hosted semantic cache has separate sizing; see Open Questions.

Connectivity

Only one direction is required, and it is outbound from the gateway to the management plane. Outbound applies to both paths, and ECS and Container Apps follow the same model. The platform deployment pages also describe an inbound direction; do not build it, for the reasons in Inbound is not supported with Strata Cloud Manager below.

▶ Outbound: data plane to management plane (both paths)

On the SCM registration path the gateway needs outbound HTTPS on 443 only: to api.portkey.ai for configuration and analytics and to registry.portkey.ai for the image. You do not need an inbound rule, a public load balancer, or a private link back to Palo Alto Networks, and no private option is documented for this path. On the platform-page path each cloud offers two options.

Path and cloudPrivate optionInternet option
SCM registration (airs-gw), any cloudNone documentedHTTPS 443 to api.portkey.ai and registry.portkey.ai
Platform pages, AWSAWS PrivateLinkReach https://aigw.portkey.ai and https://albus.portkey.ai
Platform pages, AzureAzure Private Link
Platform pages, GCPPrivate Service Connect

Service identifiers and procedures for Azure Private Link and GCP Private Service Connect are not published in the material this guide is based on; request them from your account team.

PrivateLink on AWS (platform-page path).

  1. Send your AWS account ARN to the Palo Alto Networks team and wait for confirmation that it is whitelisted. Do this before you create the endpoint. An endpoint created earlier will show a rejected or failed state; delete it and create it again after the team confirms whitelisting.
  2. In the AWS console open VPC, then Endpoints, then Create endpoint. Create an interface endpoint to service com.amazonaws.vpce.us-east-1.vpce-svc-0c2c1c323d9f56d95 in the gateway VPC. If the gateway runs outside us-east-1, create it as a cross-region endpoint targeting us-east-1.
  3. When the endpoint shows Available, select it and use its Actions menu to enable Private DNS names. Verify from a pod that aws-cp.portkey.ai resolves to the endpoint's private addresses before you change values.yaml.
  4. Add the four PrivateLink base paths below under the environment.data key in values.yaml. This is the same environment: map the AWS checklist later adds LOG_STORE settings to; keep one environment: block.
environment:
  create: true
  secret: true
  data:
      ALBUS_BASEPATH: "https://aws-cp.portkey.ai/albus"
      CONTROL_PLANE_BASEPATH: "https://aws-cp.portkey.ai/api/v1"
      SOURCE_SYNC_API_BASEPATH: "https://aws-cp.portkey.ai/api/v1/sync"
      CONFIG_READER_PATH: "https://aws-cp.portkey.ai/api/model-configs"

Kubernetes allows full egress by default. If your cluster applies restrictive NetworkPolicies, the gateway needs an egress allowance covering both the management plane and your LLM providers. Save the following as allow-egress.yaml and apply it with kubectl apply -f allow-egress.yaml after the Helm install has created the portkeyai namespace (or create the namespace first with kubectl create namespace portkeyai). kubectl apply is safe to re-run; it updates the existing policy in place.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all-egress
  namespace: portkeyai
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0

This policy applies to every pod in the namespace and allows all egress. Before production, restrict podSelector to the gateway pods (use the chart's pod labels) and replace 0.0.0.0/0 with the VPC endpoint ENI addresses if you use PrivateLink, or the management plane egress ranges from your account team if you use the internet path, plus your LLM provider ranges and cluster DNS on UDP and TCP 53. Kubernetes NetworkPolicy cannot match hostnames, so the internet path needs an FQDN-capable CNI or an egress proxy to lock down further.

▶ Inbound is not supported with Strata Cloud Manager

The platform deployment pages describe a second direction, running from the management plane inbound to your gateway over AWS PrivateLink, Azure Private Link, or GCP Private Service Connect, with IP whitelisting as the alternative. Do not build it.

Palo Alto Networks confirmed on 2026-09-27 that private link is not supported with Strata Cloud Manager today, and that the only network connectivity between a gateway and the cloud is outbound from the gateway. Those procedures describe the Portkey product, which shares the charts and the tooling but not this part of the architecture.

In practice that means three things you do not do:

  • Do not create a VPC endpoint service, a Private Link Service, or a published Private Service Connect service for the gateway.
  • Do not authorise arn:aws:iam::299329113195:root, or any Palo Alto Networks principal, into your account.
  • Do not add 54.81.226.149, 34.200.113.35, or 44.221.117.129 to a load balancer security group. Your load balancer admits your own applications and nothing else.

A gateway registers and stays visible in Strata Cloud Manager on outbound connectivity alone. If it does not appear, the cause is in the outbound section above.

An inbound path built earlier is now an unused hole

If a deployment predates 2026-09-27 and followed the platform pages, it may have an endpoint service with a Palo Alto Networks principal authorised, or three management plane addresses in a security group. Nothing uses either one. Remove them, and tell your account team you have done so in case they still hold a connection on their side.

This is also the likely reason a local log store breaks the SCM log views

On the Portkey product the Backend retrieves an individual log body from your bucket on demand, over exactly this inbound path, which is what makes a customer-held log store workable there. Without the path, Strata Cloud Manager has no way to fetch a log it does not hold. Treat that as an inference rather than a published explanation.

Prerequisites: AWS (EKS)

The AWS topology is the one drawn in Hybrid Architecture. The checklist below is that diagram expressed as things to build before you deploy.

Full procedure in a separate guide

This section is the planning checklist. The step-by-step deployment, with cluster preparation, the cache and log store, workload identity, the values.yaml file, the Helm install, ingress, management plane connectivity, and verification, is in AI Gateway on EKS, AKS, and GKE.

▶ AWS checklist
  • EKS cluster — at least 2 worker nodes, ideally one per Availability Zone.
  • Tooling — AWS CLI, kubectl, Helm v3 or above, and eksctl.
  • S3 bucket — for LLM access logs, with encryption at rest and a lifecycle policy matching your retention requirement.
  • Bucket access — either IAM Roles for Service Accounts (IRSA) or EKS Pod Identity. Both avoid static credentials. Create an IAM role trusted by the cluster's OIDC provider (IRSA) or by pods.eks.amazonaws.com (Pod Identity), with s3:PutObject, s3:GetObject, and s3:ListBucket on arn:aws:s3:::<AWS_BUCKET_NAME> and arn:aws:s3:::<AWS_BUCKET_NAME>/* (confirm the exact action list against the EKS platform page). With IRSA, eksctl create iamserviceaccount --name <SERVICE_ACCOUNT_NAME> --namespace portkeyai --cluster <CLUSTER> --attach-policy-arn <POLICY_ARN> --approve creates both the role and the annotated service account. With Pod Identity, aws eks create-pod-identity-association --cluster-name <CLUSTER> --namespace portkeyai --service-account <SERVICE_ACCOUNT_NAME> --role-arn <ROLE_ARN> makes the association.
  • Cache store — ElastiCache for Redis OSS or Valkey in the same VPC, or the built-in Redis.
  • External access — an Application Load Balancer with a Kubernetes Ingress, or a Network Load Balancer. With no inbound path to back, the choice is yours to make on its merits.
  • Connectivity — per Connectivity.
  • Credentials from Palo Alto Networks — per Complete these first. Create the pull credential as a kubernetes.io/dockerconfigjson Secret in portkeyai and reference it from imagePullSecrets rather than pasting it into values.yaml; put the Client Auth Key in a Secret referenced by the chart or delivered by your secrets operator. Anything that does go through values.yaml is stored in the Helm release Secret in the namespace, so restrict get secrets on portkeyai accordingly.

The snippet below is the published platform-page procedure for the Portkey chart. The key AIRS uses for a local log store is not confirmed, so on the SCM wizard path (airs-gw) these keys may have no effect; see Where prompt logs are stored for the trade a customer-held bucket involves before you plan around one. Apply it on the platform-page path, to the values.yaml you wrote from the EKS page. Merge, do not replace: keep environment.create, environment.secret, and every existing environment.data entry (including the PrivateLink base paths from Outbound if you set them), and add only the three LOG_STORE keys under data.

serviceAccount:
  create: true
  automount: true
  name: <SERVICE_ACCOUNT_NAME>
  annotations:
    eks.amazonaws.com/role-arn: <ROLE_ARN>

# ADD these keys under the environment.data already in your file
# (environment.create, environment.secret, and the existing data entries stay as they are)
environment:
  data:
    LOG_STORE: s3_assume
    LOG_STORE_REGION: "<AWS_BUCKET_REGION>"
    LOG_STORE_GENERATIONS_BUCKET: "<AWS_BUCKET_NAME>"

Scope the role to the one bucket, plus kms:GenerateDataKey and kms:Decrypt on the bucket key if you use SSE-KMS, and restrict the trust policy condition to system:serviceaccount:portkeyai:<SERVICE_ACCOUNT_NAME>. If the service account already exists in the portkeyai namespace (for example because you created it together with the IAM role using eksctl), set create: false so Helm reuses it instead of failing with an already-exists error. Check with kubectl get sa -n portkeyai.

For EKS Pod Identity the configuration is the same minus the annotation, since the association is made outside the chart. The service account name must match the one you referenced when creating the IAM role.

Verify before moving on: aws s3api head-bucket --bucket <AWS_BUCKET_NAME> returns 200, kubectl get sa <SERVICE_ACCOUNT_NAME> -n portkeyai -o yaml shows the role-arn annotation, and aws elasticache describe-cache-clusters lists your cache in the gateway VPC. Replace portkeyai with your release namespace if you used the SCM wizard's values.yaml. The post-install checks are under After install: confirm the link.

Prerequisites: Azure (AKS)

Azure uses the same topology with Azure equivalents substituted. The boundary behaves identically.

Full procedure in a separate guide

This section is the planning checklist. The step-by-step deployment, with cluster preparation, the cache and log store, workload identity, the values.yaml file, the Helm install, ingress, management plane connectivity, and verification, is in AI Gateway on EKS, AKS, and GKE.

AI Gateway hybrid data plane on Azure: applications call an internal load balancer, which balances across gateway pods on AKS worker nodes in two Availability Zones. The pods read config from Azure Cache for Redis, write logs to Blob Storage, and reach the management plane outbound over Azure Private Link or the internet.
▶ Azure checklist
  • AKS cluster — at least 2 worker nodes, ideally one per Availability Zone.
  • Workload Identity — recommended. Requires the OpenID Connect (OIDC) issuer and Workload Identity both enabled on the cluster (az aks update with --enable-oidc-issuer --enable-workload-identity). Without it the gateway authenticates to Blob Storage with a storage account key held in values.yaml, which then lives in the Helm release Secret; if you take that route, use a key you can rotate and scope the account's network rules to the AKS subnet.
  • Tooling — Azure CLI, kubectl, and Helm v3 or above.
  • Storage account and container — for logs, with encryption at rest and a lifecycle rule for retention.
  • Cache store — Azure Cache for Redis in the same VNet, or the built-in Redis.
  • External access — an internal load balancer in front of the gateway Service or Ingress. No Private Link Service and no dedicated subnet for one is needed.
  • Connectivity — Azure Private Link or internet, outbound only. There is no inbound path to build.
  • Credentials from Palo Alto Networks — as for AWS.

With Workload Identity, add the following to the values.yaml you will install from, merging into the existing serviceAccount and environment blocks as on AWS:

serviceAccount:
  create: true
  automount: true
  name: <SERVICE_ACCOUNT_NAME>
  annotations:
    azure.workload.identity/client-id: <CLIENT_ID>

# ADD these keys under the environment.data already in your file
# (environment.create, environment.secret, and the existing data entries stay as they are)
environment:
  data:
    LOG_STORE: azure
    AZURE_STORAGE_ACCOUNT: <STORAGE_ACCOUNT_NAME>   # storage account holding the LLM logs
    AZURE_STORAGE_CONTAINER: <STORAGE_CONTAINER>    # blob container inside that account
    AZURE_AUTH_MODE: workload                        # 'workload' for workload identity, 'managed' for a managed identity

Set AZURE_AUTH_MODE to match the identity you configured above: use workload with Azure AD workload identity federation, and managed when the cluster reaches the storage account through a managed identity. Neither mode takes a storage account key, so there is no credential to rotate here.

Verify before moving on: az aks get-credentials followed by kubectl get nodes shows at least 2 nodes Ready; az storage container show --name <container> --account-name <account> returns the log container; the cache endpoint resolves and answers on 6380 from inside the VNet (or you have chosen the built-in Redis); and the cache endpoint is reachable from the node subnet. Any item that fails is safe to re-create; none of these commands changes state.

Prerequisites: GCP (GKE)

GKE follows the same pattern as EKS and AKS, with one networking requirement that catches people out on the first deployment.

Full procedure in a separate guide

This section is the planning checklist. The step-by-step deployment, with cluster preparation, the cache and log store, workload identity, the values.yaml file, the Helm install, ingress, management plane connectivity, and verification, is in AI Gateway on EKS, AKS, and GKE.

AI Gateway hybrid data plane on GCP: applications call an internal load balancer, which balances across gateway pods on GKE worker nodes in two zones. The pods read config from Memorystore, write logs to Cloud Storage, and reach the management plane outbound over Private Service Connect or the internet.
▶ GCP checklist
  • GKE cluster — at least 2 worker nodes, ideally one per zone.
  • Proxy-only subnet — the cluster VPC needs an ACTIVE subnet with purpose REGIONAL_MANAGED_PROXY in the cluster region, or the regional load balancer never provisions and Helm reports nothing. Create it first: gcloud compute networks subnets create <NAME> --network=<VPC> --region=<REGION> --range=<CIDR> --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE. Confirm with gcloud compute networks subnets list, filtering on purpose REGIONAL_MANAGED_PROXY, that one subnet in your region shows role ACTIVE.
  • Workload Identity — must be enabled on the cluster and on the node pool before the bucket binding below will work.
  • Tooling — gcloud CLI, kubectl, and Helm v3 or above.
  • Cloud Storage bucket — for logs. Bind the gateway's Kubernetes service account to a Google service account through roles/iam.workloadIdentityUser, then grant that Google service account roles/storage.objectAdmin on the log bucket. Apply it at the bucket level rather than the project level. The published alternative is a custom role carrying only storage.objects.create and storage.objects.get, which is the tighter choice and the one to prefer, since objectAdmin also permits deletion.
  • Cache store — Memorystore for Redis or Valkey in the same VPC, or the built-in Redis.
  • External access — an internal load balancer in front of the gateway Service or Ingress. You do not publish it as a service attachment.
  • Connectivity — Private Service Connect or internet, outbound only. There is no inbound path to build.
  • Credentials from Palo Alto Networks — as for AWS.

ECS and Container Apps

Both serverless container platforms are deployed with Terraform rather than Helm, so the workflow differs from the Kubernetes platforms in more than just the target. The modules are published in the portkey-gateway-infrastructure repository, at //terraform/ecs and //terraform/aca. Each carries its own version tags, so do not copy a ref between them.

Full procedure in a separate guide

This section is the planning checklist. The step-by-step deployment, with architecture diagrams, the module configuration for each platform, ingress options, management plane connectivity, and verification, is in AI Gateway on ECS and Container Apps.

The Terraform minimums genuinely differ between the two: v1.13 for ECS and v1.5 for Container Apps. On the cache store, Azure Managed Redis is the current name for the managed service; where the AKS material says Azure Cache for Redis it means the same product under its former name.

▶ Amazon ECS
  • Sizing — ECS tasks with at least 1 vCPU (1024 CPU units) and 2 GiB per task.
  • Availability — run tasks across multiple Availability Zones with autoscaling enabled.
  • AWS permissions — to create ECS, EC2, VPC, ELB, IAM, S3, Secrets Manager, and CloudWatch resources. Run Terraform from a role scoped to those services, not from an administrator identity.
  • Tooling — AWS CLI with credentials configured, and Terraform v1.13 or later.
  • State and re-runs — configure a remote backend before the first apply so a failed run can be resumed; terraform apply is safe to re-run against the same state, and terraform destroy removes everything the configuration created. If local state was lost after a partial apply, import or delete the orphaned resources before re-applying. State holds resource identifiers and configuration, so keep it in an encrypted, access-controlled backend.
  • Secrets — you create the Docker credentials and the Client Auth Key in AWS Secrets Manager yourself, before Terraform runs. The module is given the secret ARNs, not the values, and the task definition resolves each ARN at task start, so raw secret values do not enter Terraform state.
  • Log store — Amazon S3 or any S3-compatible store, optional.
  • Cache store — built-in Redis, or ElastiCache for Redis OSS or Valkey in the same VPC.
  • Compute model — with create_cluster = true the module registers one capacity provider backed by an EC2 Auto Scaling group, so tasks run on container instances you own. Fargate is not a documented option; see ECS Fargate in the ECS and Container Apps guide for what the module actually supports.
  • Connectivity — outbound to the management plane endpoints in Connectivity. There is no inbound path to build, so the load balancer type is yours to choose on its merits.
▶ Azure Container Apps
  • Sizing — Container Apps with at least 1 vCPU and 2 GiB per replica.
  • Availability — autoscaling across multiple Availability Zones.
  • Azure permissions — to create Container Apps, Key Vault, Storage, VNet, and Application Gateway resources.
  • Tooling — Azure CLI with credentials configured, and Terraform v1.5 or later.
  • Secrets — Docker credentials, the Client Auth Key, and your Organisation ID are stored in Key Vault rather than passed as chart values.
  • Log store — Azure Blob Storage or any S3-compatible store, optional.
  • Cache store — built-in Redis or Azure Managed Redis.
  • Connectivity — outbound to the management plane endpoints in Connectivity. There is no inbound path to build.
  • Network — a VNet is optional, which is unique among the supported platforms. It becomes mandatory for zone redundancy, Application Gateway, and outbound Private Link.

The Key Vault entries the Terraform configuration expects are docker-username, docker-password, portkey-client-auth, and organisations-to-sync. Create the vault with RBAC authorisation enabled and grant yourself Key Vault Administrator to write the four entries. The module is given the secret names and the vault to resolve them against, not the values, so raw secret values do not enter Terraform state. Keep state in an encrypted backend regardless, because it still carries resource identifiers and configuration.

If a previous attempt created a vault with the same name and you deleted it, recover it (az keyvault recover --name <vault>) or purge it (az keyvault purge --name <vault>) before creating it again; soft-delete keeps the name reserved. To tear the deployment down, run terraform destroy, then recover or purge the vault if you intend to reuse the name.

Registration and Workspaces

Registration connects a self-hosted gateway to the management plane, and workspaces decide who may route through it. The two are configured together, so read what a workspace is before you make the provisioning choice in the wizard.

▶ What a workspace is

Workspaces are sub-organisations that separate data, teams, scope, and visibility inside one organisation. They are the unit of multi-tenancy within a tenant.

  • Team management — members are added with a role of manager or member.
  • Dedicated API keys — each workspace has its own, either Service Account type for automation or User type for individuals. Both are scoped to the workspace and can only act within it.
  • Completion API scoping — completion APIs are always scoped by workspace and reachable only with a workspace API key.
  • Admin control — only org admins create workspaces; managers can then add API keys and members.
  • Targeting from the org level — admin keys can specify a workspace_id to act on a particular workspace.

Access is enforced through the Scope Access header described in Identity and authentication, evaluated per request. Membership tables are never consulted at request time.

Deleting a workspace requires removing every resource inside it first, including prompts, prompt partials, providers, configs, and guardrails. The default Shared Team Workspace cannot be deleted, and deletion elsewhere is permanent.

▶ Gateway registration (SCM wizard path)

If you finished Phase 2 of the deployment guide, your gateway is already registered and this section is background; do not click Add New Gateway again, since that creates a second gateway. Registration connects the gateway to the management plane and sets which workspaces may route through it. It is done once, in the SCM wizard under AI Security → AI Gateway → Admin Settings → Gateway Registration → Add New Gateway, and is covered click by click in Phase 2 of the deployment guide. The wizard's Workspace Provisioning stage offers Allow All Workspaces or Allow Specific Workspaces; Allow Specific Workspaces is the right choice when you need separate gateways per team, business unit, or compliance boundary.

Two points matter for infrastructure planning. First, the generated values.yaml targets the airs-gw chart, points at registry.portkey.ai, and is not a drop-in for the platform-page values.yaml this guide describes. Second, after the wizard closes the gateway appears in the list with a copyable Slug Name (for example dp-ai-gateway-5aa51a), its Type, a Connection Status, whether it is the Default, and Last Sync. Connection Status stays Unknown with Last Sync showing -- until running pods check in; after that they check in roughly every 30 seconds. Once pods are Running, the row should update within a couple of minutes. If it still reads Unknown after that, the pods are not reaching api.portkey.ai: check kubectl logs -n <namespace> <gateway-pod> for authentication or connection errors and confirm egress on 443. The guide cannot confirm whether the file has a validity window; if the pods report an authentication failure, register a new gateway and reinstall from the new file.

The generated values.yaml is shown once

It is not retrievable after you navigate away from that screen. Download it and store it in a secret manager before you go anywhere else. It carries your image pull credentials and environment secrets, so treat it as credentials and never commit it. Helm also stores this file inside the cluster, in the release Secret in the gateway namespace, one copy per revision; restrict get and list on Secrets in that namespace to the operators who need it. If you lose the file, there is no way to regenerate it for the same gateway: register a new gateway with Add New Gateway (use a new Gateway Name; the guide cannot confirm whether duplicate names are rejected), download the new values.yaml, remove the orphaned entry from the list so an unused registration with live credentials does not linger, and install only against the new file.

Total Gateways counts hybrid gateways only. The counter reads zero on a tenant already serving traffic through the SaaS gateway, because the SaaS gateway is a separate row above the list rather than an entry in it, so an empty list does not mean AI Gateway is unlicensed or inactive. The SaaS gateway stays enabled and any client still using the SaaS Gateway URL continues to send prompts to the Palo Alto Networks hosted plane. Once your clients are repointed at the hybrid endpoint and verified, switch the SaaS row's toggle off so no traffic can leave your network by the old path.

Operations

▶ After install: confirm the link

Run this after completing the deployment guide (path 1) or the platform page install (path 2). Do not rely on pod status. A gateway that starts cleanly and passes health checks can still be failing to reach the management plane.

  1. Send a test request to the gateway with curl.
  2. Open Strata Cloud Manager, select AI Security, then AI Gateway, then Observability in the left navigation, and switch to the Logs tab.
  3. Confirm the request appears and that you can open it and see full details.

Replace GATEWAY_BASE_URL with the scheme, hostname, and port of the load balancer in front of the gateway (for example https://gateway.internal.example.com); it must be https:// unless you are port-forwarding to localhost. OPENAI_API_KEY is a key from your OpenAI account; any provider you have configured works if you change x-portkey-provider to match. PORTKEY_API_KEY is a workspace API key from SCM, created under AI Security → AI Gateway → Security Keys (deployment guide Phase 3, Step 3.8). Export the keys first so they do not land in shell history.

read -s OPENAI_API_KEY
read -s PORTKEY_API_KEY
export OPENAI_API_KEY PORTKEY_API_KEY

curl '<GATEWAY_BASE_URL>/v1/chat/completions' \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "x-portkey-provider: openai" \
  -H "x-portkey-api-key: $PORTKEY_API_KEY" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "What is a fractal?"}]
  }'

Wait about a minute; pods report to the management plane roughly every 30 seconds. Replace portkeyai in the commands below with your release namespace if you used the SCM wizard's values.yaml.

  • The curl fails — check kubectl get pods -n portkeyai and kubectl logs -n portkeyai <gateway-pod> for image pull or startup errors and return to the checklist for your platform. If a pod is stuck in ImagePullBackOff, run kubectl describe pod -n portkeyai <pod> and check the Docker credentials against the ones issued for your Organisation ID. If a pod is in CrashLoopBackOff, check kubectl logs -n portkeyai <pod> for a missing environment value and compare against the Outbound and log store snippets. Re-run helm upgrade --install after correcting values.yaml.
  • The request succeeds but never appears in Logs — the outbound path is working and the log or sync path is not. Check Connection Status and Last Sync under Gateway Registration, look for sync errors in the gateway pod log, then re-check the base paths in Outbound.
  • The entry exists but the log detail view is empty — check the LOG_STORE settings in values.yaml rather than connectivity.
▶ Monitoring

There are two independent monitoring paths, and you want both.

  • Prometheus metrics — the gateway serves GET /metrics on its own container port (8787), enabled by default. Set ENABLE_PROMETHEUS=false to switch it off, which unregisters the middleware and makes the path return 404. Scrape it from inside the cluster only, with a ServiceMonitor or scrape job against the gateway Service; do not include that port in the load balancer listener or in any security group rule that also serves the management plane or the internet.
  • The metrics endpoint is unauthenticated by default — the upstream documentation describes access as typically open and advises securing it yourself. Because it shares the gateway's container port rather than sitting on a separate admin port, any ingress that exposes the gateway also exposes /metrics unless you block the path. If your ingress is internet-facing, add a path rule denying /metrics and scrape the Service directly from inside the cluster.
  • Analytics export — ClickHouse analytics can be exported to any OpenTelemetry-compatible collector, which is how you get gateway telemetry into an existing observability platform.

The SCM dashboard covers request-level analytics. It does not replace infrastructure monitoring of the pods, nodes, cache, and load balancer, which stays your responsibility.

▶ Cache behaviour and FIPS

The paths below are relative to docs.portkey.ai.

  • Cache behaviour — documented separately at self-hosting/cache-behavior, covering what is cached, for how long, and how invalidation propagates from the management plane.
  • FIPS-compliant images — available for deployments with FIPS 140 obligations; see self-hosting/fips-compliant-images. Confirm availability for your entitlement and platform.
  • Air-gapped — setting LOG_STORE to control_plane appears in the documentation in the context of air-gapped deployments, and the v2 log path format is explicitly unsupported in that mode. A full air-gapped deployment procedure is not published.
▶ Upgrades

Platform-page chart (portkey-ai/gateway). An upgrade is a Helm upgrade against the same release and values file. Pin the chart with --version <chart-version> so the same command produces the same result on every run; helm search repo portkey-ai/gateway --versions lists what is available.

helm repo update

helm upgrade --install portkey-ai portkey-ai/gateway \
  --version <chart-version> \
  -f ./values.yaml \
  -n portkeyai

After the upgrade, confirm with helm history portkey-ai -n portkeyai and repeat the test request from After install: confirm the link. helm rollback portkey-ai <revision> -n portkeyai returns to a previous revision mechanically, but whether the data plane keeps syncing on an older chart is unpublished (see Open Questions).

SCM wizard chart (airs-gw). The command above does not apply. Use the repository and release name from the wizard's values.yaml and the upgrade instructions in the Portkey-AI/airs-gw-helm repository; the values file you downloaded at registration is the one to pass to -f. Pin, verify, and roll back the same way.

ECS and Container Apps. An upgrade is a re-apply of the same Terraform configuration with the new image tag: set the image tag variable (<IMAGE_TAG_VARIABLE>) in terraform.tfvars, run terraform plan and confirm only the task definition (ECS) or container app revision (Container Apps) changes, then terraform apply. Verify with aws ecs describe-services (runningCount equals desiredCount on the new task definition) or az containerapp revision list (new revision Active).

Cluster upgrades are separate and remain entirely yours. The managed control plane version, the node pool version, and the gateway chart version all move independently, and nothing in the product coordinates them. Supported version ranges and rollback safety are unpublished; see Open Questions.

▶ Tear down

A half-built deployment leaves a registered gateway with embedded credentials in place, and a second attempt collides with it. Remove everything in this order when you abandon an attempt or retire a gateway.

  1. Uninstall the release and delete the namespace: helm uninstall <release> -n <namespace>, then kubectl delete namespace <namespace>.
  2. Delete the NetworkPolicy if you created it outside the release: kubectl delete -f allow-egress.yaml (skip if the namespace deletion already removed it).
  3. On the platform-page path, delete the outbound PrivateLink endpoint. If the deployment predates 2026-09-27 and built an inbound path, also delete the endpoint service, remove the allowed principal, and delete the management plane security group rule.
  4. On ECS or Container Apps, run terraform destroy; on Container Apps, then recover or purge the Key Vault if you intend to reuse its name.
  5. In SCM, remove the gateway entry under AI Security → AI Gateway → Admin Settings → Gateway Registration, and re-enable the SaaS row if you switched it off.
  6. Empty and delete the log bucket if it is not needed for retention.

Verify: helm list -A shows no airs-gw or portkey-ai release, the Gateway Registration list no longer shows the entry, and the outbound endpoint no longer exists in the AWS console.

Reference

▶ Endpoints and addresses
PurposeValuePath
Outbound, configuration and analyticsapi.portkey.ai on 443. Full list and verification method in the Connectivity ReferenceSCM registration
Image pullregistry.portkey.ai on 443Both paths
Image pull, bundled componentsdocker.io, quay.io on 443Both paths, only if you use the built-in Redis or optional components
LLM providersPer provider, HTTPS on 443Both paths
Cluster DNSUDP and TCP 53Both paths, if you restrict egress with NetworkPolicy
Outbound over the internethttps://aigw.portkey.ai, https://albus.portkey.aiPlatform pages
Outbound over AWS PrivateLinkhttps://aws-cp.portkey.aiPlatform pages
AWS PrivateLink service namecom.amazonaws.vpce.us-east-1.vpce-svc-0c2c1c323d9f56d95Platform pages
Management plane AWS principalarn:aws:iam::299329113195:rootPlatform pages, for an inbound path AIRS does not support; do not authorise it
Management plane source addresses54.81.226.149, 34.200.113.35, 44.221.117.129Platform pages, for an inbound path AIRS does not support; do not allow them
Helm repositoryhttps://portkey-ai.github.io/helmPlatform pages
Default namespaceportkeyaiPlatform pages

The path-specific groups are not interchangeable. Allowing the platform-page endpoints on a gateway installed from the SCM wizard does nothing useful, and vice versa.

▶ Which source wins when they disagree

Pre- and post-acquisition documentation disagree on labels, endpoints, charts, and whether the management plane ever connects inbound. On that last point the answer is now settled: it does not. When they disagree, trust in this order:

  1. The tenant itself. A screenshot from a live SCM tenant beats any document. The AI Gateway deployment guide is written this way.
  2. docs.paloaltonetworks.com. The Prisma AIRS administration documentation, for support statements, scale, and availability.
  3. docs.portkey.ai. Detailed and largely current, and the only source for the platform-specific deployment procedures, but it carries pre-acquisition terminology and describes the portkey-ai/gateway path rather than the SCM wizard.
▶ Open questions for the product team

These are not documented anywhere in the published material. Each one changes a design decision, so get answers before committing a customer to an architecture.

  • Two integration paths — are the SCM Gateway Registration path and the platform deployment pages converging, and which should a new customer be put on? They differ on chart and on endpoints, and the platform pages still document an inbound path the product does not support.
  • On-premises procedure — support is confirmed for any conformant Kubernetes cluster, but no on-premises page exists. Is one planned, and is there distribution-specific guidance on storage classes and ingress that the cloud pages do not surface?
  • Region and data residency — can the SCM tenant be placed in the same region as the data plane, and does hybrid satisfy EU data residency obligations?
  • Upgrade lifecycle — supported Kubernetes version range, chart compatibility matrix, minimum data plane version for sync, deprecation policy, and rollback safety.
  • Throughput sizing — requests per second at the published node and task sizes, how that scales with concurrency and payload size, and separate sizing for the optional Data Service and a self-hosted semantic cache.
  • Air-gapped — is there a supported fully disconnected mode beyond the LOG_STORE: control_plane references? Hybrid is not it: the data plane holds a local cache and keeps serving through a management plane outage, but it still requires the outbound link. The nearest thing that exists upstream is a second chart, portkey-app, which deploys the management plane into your own environment as a licensed add-on. Ask whether Palo Alto Networks sells and supports that under Prisma AIRS, because it is a different product from the one this guide covers.
  • Streaming and inspection — behaviour of streaming responses through an inspecting proxy, and any published position on TLS inspection of the management plane path.
▶ Source documentation

This guide is derived from the published Prisma AIRS AI Gateway self-hosting documentation. The source pages are on docs.portkey.ai; the paths below are relative to that site.

  • Architecture — self-hosting/hybrid-deployments/architecture
  • Platform guides — self-hosting/hybrid-deployments/ for aws/eks, aws/ecs, aws/marketplace, azure/aks, azure/aca, and gcp
  • Registration — self-hosting/hybrid-deployments/gateway-registration
  • Components — product/enterprise-offering/components
  • Workspaces — product/enterprise-offering/org-management/workspaces
  • Operations — self-hosting/prometheus-metrics, self-hosting/cache-behavior, self-hosting/fips-compliant-images

Two Palo Alto Networks sources override the above wherever they conflict, per Which source wins when they disagree:

  • Administration documentation — the Prisma AIRS administration guide on docs.paloaltonetworks.com (Configure AI Gateway), for the hybrid support statement and the scale and availability attributes.
  • Tenant-verified walkthrough — Phase 2 of the AI Gateway deployment guide, for the registration wizard, the airs-gw chart, and the outbound-only connectivity model.