AI Gateway Connectivity Reference
Every hostname, port, and direction a hybrid data plane needs, and the inspection and filtering decisions that break it
This page exists to answer one question completely: what does a network team have to open so that a self-hosted AI Gateway data plane can reach Strata Cloud Manager and the models it proxies for. It applies to every hybrid platform, since the data plane makes the same calls whether it runs on EKS, AKS, GKE, ECS, Azure Container Apps, or an on-premises cluster.
The deployment guides cover connectivity in the context of their own procedures. This page is the consolidated list, written to be handed to whoever owns the firewall.
The Strata Cloud Manager URL is not what you open
Your Strata Cloud Manager tenant URL is for administrators in a browser. The data plane never contacts it. Opening egress to your SCM console hostname achieves nothing, and a gateway allowed only that destination will never register.
Prisma AIRS AI Gateway is built on Portkey, which Palo Alto Networks acquired and integrated behind Strata Cloud Manager. The console you administer is SCM. The endpoints the data plane calls are still the Portkey management plane hostnames, under portkey.ai. Both facts are true at once, and seeing portkey.ai in your firewall logs is expected rather than a sign of misconfiguration.
Two consequences follow. A network team given only "allow Strata Cloud Manager" will open the wrong thing. And a security review that sees traffic to a domain nobody recognizes may block it, which produces the failure described under TLS Inspection.
Direction of travel
All connectivity is outbound only, over TCP 443. The data plane initiates every connection. Responses return on connections it opened, which is not the same as an inbound connection and does not need a firewall rule of its own.
- No inbound rule from Palo Alto Networks into your network.
- No public listener on the gateway. Your load balancer serves your own applications and nothing else.
- No private link back from the management plane. 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.
- No Palo Alto Networks principal authorized into your cloud account.
Deployments that predate 2026-09-27 and followed the Portkey platform pages may carry an endpoint service with a Palo Alto Networks principal authorized, or management plane addresses in a load balancer security group. Nothing uses either. Remove them, and tell your account team you have done so in case a connection is still held on their side.
What to open from the pods
These are the destinations the gateway process itself calls. On Kubernetes they are what a pod-level egress policy governs; on ECS or Container Apps they are what the task or replica needs.
| Destination | Port | Purpose |
|---|---|---|
aigw.portkey.ai | TCP 443 | Gateway control traffic, configured as CONTROL_PLANE_BASEPATH. Also the hosted SaaS gateway endpoint, which is why the name appears in two unrelated contexts. |
api.portkey.ai | TCP 443 | Registration, configuration sync, and the sync API. Configured as CONFIG_READER_PATH and SOURCE_SYNC_API_BASEPATH. |
albus.portkey.ai | TCP 443 | Analytics and log delivery, configured as ALBUS_BASEPATH. See the note below on confirming this one. |
| Each LLM provider you integrate | TCP 443 | One per integration: api.openai.com, api.anthropic.com, <resource>.openai.azure.com, bedrock-runtime.<region>.amazonaws.com, or your own hosted model. |
service.api.aisecurity.paloaltonetworks.com | TCP 443 | Prisma AIRS Scan API, called per request once a guardrail is attached. Use the regional host your AIRS deployment profile specifies. |
| Each MCP origin server you register | TCP 443 | Only when the MCP gateway is in use. |
Allowing all of them costs nothing and removes a class of intermittent failure that is unpleasant to diagnose, because an endpoint that is quiet at rest and active under load looks like a new fault rather than a missing rule.
Read the authoritative list off your own gateway
Hostnames have moved as the product was integrated into Strata Cloud Manager, and material from before that integration is still in circulation. Different sources name different hosts for the same function, and some record a variable name as though it were a hostname. ALBUS_BASEPATH is a variable, and whether its value resolves to a host called albus depends on the release you are running.
Rather than trusting any list, including this one, read the endpoints out of the deployment in front of you. The chart supplies them as environment values, so a running pod is the only source correct for your version and tenant:
kubectl exec -n airs-gw <GATEWAY_POD> -- env \
| grep -E 'BASEPATH|CONFIG_READER_PATH' | sortThat returns the base paths the data plane actually uses, which is what belongs on the firewall request. Confirm the result with your account team before a production change, and treat the table above as a starting position rather than the final word.
To see which of them carry traffic in practice, enable query logging on CoreDNS and read the log after the gateway has run for a few minutes. Exclude any shell testing you do yourself: a wget from inside the pod goes through CoreDNS and is indistinguishable from gateway traffic.
What to open from the nodes
| Destination | Port | Purpose |
|---|---|---|
registry.portkey.ai | TCP 443 | Container image pull for the gateway image. |
docker.io, quay.io | TCP 443 | Only when the chart's optional bundled components are enabled. A mirrored or air-gapped cluster needs all three mirrored. |
The image is pulled by the container runtime on the node, not by the pod. It never appears in pod DNS and no Kubernetes NetworkPolicy can allow or deny it. This rule has to be applied at the node, subnet, or firewall layer.
Teams that write a careful pod egress policy and then cannot start the gateway are usually missing exactly this. The symptom is ImagePullBackOff on every pod, with a pod-level policy that looks complete.
Cloud service endpoints
These are specific to where the data plane runs and to the storage and identity choices you made. They are easy to forget because they are not part of the product's own endpoint list.
| Destination | Why |
|---|---|
sts.<region>.amazonaws.com | IAM Roles for Service Accounts exchanges a projected token for credentials here. Without it the pod cannot reach S3. An interface VPC endpoint keeps it off the public path. EKS Pod Identity moves this dependency to the node agent instead. |
| Amazon S3 | Only when you configure a customer-held log store. A gateway VPC endpoint keeps the traffic off the NAT gateway, which matters for cost as well as policy, since log bodies run to roughly 10 kB each. |
| ElastiCache endpoint on 6379 | Stays inside the VPC. Allow the node or pod security group as the source rather than the VPC CIDR. |
| Secrets Manager, CloudWatch Logs, ECS, SSM | ECS only, through NAT or interface endpoints. |
| Destination | Why |
|---|---|
| Microsoft Entra ID token endpoints | Workload Identity exchanges a federated token for an access token. |
<account>.blob.core.windows.net | Only when the log store points at your own Blob Storage container. |
| Azure Managed Redis endpoint | Inside the VNet. Scope the firewall rules to the AKS subnet. |
| Key Vault | Container Apps only, which resolves its secrets there at start. |
| Destination | Why |
|---|---|
oauth2.googleapis.com, iamcredentials.googleapis.com | Workload Identity Federation token exchange. |
storage.googleapis.com | Only when the log store points at your own Cloud Storage bucket. |
| Memorystore endpoint | Inside the VPC. |
GKE needs a subnet with purpose REGIONAL_MANAGED_PROXY in the cluster region before a regional load balancer will provision. Nothing in the Helm output reports it as missing; the symptom is a load balancer that never appears.
Filter by hostname, not by address
None of the management plane endpoints publish stable addresses, and the published figures that do circulate relate to an inbound path that Strata Cloud Manager does not support. Build the allow-list on hostnames.
This has a direct consequence for Kubernetes. A NetworkPolicy matches on IP ranges and cannot express a wildcard hostname, so it cannot implement *.portkey.ai. Hostname filtering belongs on a firewall in the egress path. Use NetworkPolicy to constrain which pods may egress at all, and the firewall to constrain where they may go.
Kubernetes permits all egress by default. Where a cluster applies restrictive policies, the gateway needs an explicit allowance or it will never register. The published example below is deliberately permissive so a first deployment works; narrow the CIDR once the deployment is proven.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-gateway-egress
namespace: airs-gw
spec:
podSelector: {}
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0TLS inspection
Add a decryption exemption for *.portkey.ai and for every LLM provider endpoint you integrate. The gateway validates the certificate chain it expects, so a re-signed certificate fails the handshake.
This deserves more attention than a single line in a prerequisites list, because inspection breaks the deployment in three independent places, the symptoms look nothing alike, and fixing one leaves the others broken.
| Layer | Who makes the call | Symptom | Fix |
|---|---|---|---|
| Image pull | The container runtime on the node | ImagePullBackOff with x509: certificate signed by unknown authority. Pods never start. | Add the intercepting CA to the node's trust store. On a managed node group this is a launch template or bootstrap script, not a pod change. |
| Management plane | The gateway process in the container | Pods Running and healthy, the gateway never registers, and API keys fail with Error Code: 03. | Mount the CA into the container and point NODE_EXTRA_CA_CERTS at it. |
| Provider calls | The gateway process in the container | Registration succeeds and the gateway reports Healthy, while every LLM request fails with fetch failed. | Exempt the provider endpoints as well, not only *.portkey.ai. |
The third row is the one that costs the most time. Where an egress control permits management traffic and blocks inference calls to model providers, the gateway registers, syncs on schedule, and reports Healthy in Strata Cloud Manager. The console looks correct in every respect. Every LLM request fails, and the gateway log records nothing: no error, no retry, no trace of the request at all.
Connection Status in Strata Cloud Manager confirms the management path only. Treat it as evidence that registration works, never as evidence that traffic works. Prove inference separately with a test request, as in Verification below.
Where an inspecting proxy is in the path, curl from a shell on the same host or in the same container frequently succeeds against a hostname the gateway cannot reach. The difference is that curl trusts the proxy CA from the system trust store and the gateway does not. Treat a passing connectivity test as inconclusive whenever inspection is involved, and confirm who issued the certificate instead:
echo | openssl s_client -connect api.portkey.ai:443 \
-servername api.portkey.ai 2>/dev/null \
| openssl x509 -noout -issuerA public issuer such as Amazon or Let's Encrypt is fine. Your own organization's CA means the session is being intercepted.
Your source address
Where an intermediate firewall needs to allow traffic by source, the address presented depends on how the compute egresses, and the answer is often not what the architecture diagram implies.
- Private subnets behind NAT — the source is the NAT gateway's Elastic IP or equivalent. With one NAT gateway per Availability Zone there is more than one, so supply all of them.
- Public subnets with auto-assigned addresses — the source is each node's own public address, which changes whenever a node is replaced. Source-based allow-listing is impractical in this shape.
Confirm which applies before committing to a source range, because the cluster creation command does not always place nodes where people assume:
kubectl exec -n airs-gw <GATEWAY_POD> -- wget -qO- https://checkip.amazonaws.comVerification
Work outward. Each check isolates a different layer, and running them in order stops you diagnosing a firewall problem that is really a credential problem.
If the pods are not Running, nothing else is worth testing.
kubectl get pods -n airs-gw
kubectl describe pod -n airs-gw <POD> | sed -n '/Events:/,$p'Expect: every pod Running and ready. ImagePullBackOff with a certificate error in the events is TLS inspection at the node layer.
The gateway image ships wget rather than curl, so commands written around curl fail with a confusing error about the binary rather than the network.
kubectl exec -n airs-gw <POD> -- \
wget -q -O /dev/null https://api.portkey.ai/ \
&& echo reachable || echo blockedWhere NODE_EXTRA_CA_CERTS is in use, test the way the gateway does instead, because that variable applies to the application runtime and not to wget:
kubectl exec -n airs-gw <POD> -- node -e '
require("https").get("https://api.portkey.ai/",
r => console.log("OK", r.statusCode))
.on("error", e => console.log("ERR", e.code))'Expect: any HTTP status, including 401 or 404. The status does not matter; completing the handshake does.
In Strata Cloud Manager, open AI Security → AI Gateway → Admin Settings → Gateway Registration.
Expect: Connection Status reads Healthy and Last Sync shows a recent timestamp that keeps advancing. Pods check in roughly every 30 seconds, so allow a minute before treating Unknown as a failure.
Last Sync is the column to trust. It only moves when the data plane reaches the management plane.
Registration and inference use different destinations and can fail independently. A Healthy gateway proves nothing about provider connectivity, so test it explicitly.
kubectl port-forward -n airs-gw <GATEWAY_POD> 8787:8787
curl -X POST "http://localhost:8787/v1/messages" \
-H "Authorization: Bearer <GATEWAY_API_KEY>" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model": "@<slug>/<model>", "max_tokens": 32,
"messages": [{"role": "user", "content": "Say OK"}]}'Expect: a completion. An error naming the model still proves the gateway authenticated you and reached the integration. A hang, or fetch failed, points at provider egress rather than at the gateway.
In some chart versions the bundled Redis pod carries the same app.kubernetes.io/name label as the gateway, so kubectl port-forward deployment/airs-gw and kubectl logs deployment/airs-gw can resolve to Redis instead. Resolve a gateway pod name explicitly and use that.
Symptom lookup
| Symptom | Most likely connectivity cause |
|---|---|
ImagePullBackOff, pods never start | registry.portkey.ai not reachable from the node, or TLS inspection at the node layer. A pod NetworkPolicy is never the cause. |
| Pods Running, Connection Status stays Unknown | The management plane hostnames are not reachable from the container, or inspection is re-signing them. Check api.portkey.ai first. |
Every API key fails with Error Code: 03 | Ambiguous by design: it covers both a genuinely wrong key and a key the gateway could not validate because it could not reach the management plane. Rule out connectivity before rotating keys. |
| Healthy in SCM, every LLM request fails | Provider endpoints are blocked while management traffic is permitted. Check egress to the provider, not to Palo Alto Networks. |
Requests hang, then fetch failed or a socket close | Something in the egress path is terminating provider calls. An AI security or DLP control that permits reads and blocks inference produces exactly this. |
| Log entries appear in SCM with empty bodies | Log store configuration rather than connectivity. |
| Streams truncate on long generations | Load balancer idle timeout shorter than the generation. Not a firewall rule. |
Sourcing and confidence
Connectivity guidance is worth stating with its provenance, because a firewall change request is hard to retract and the published sources disagree with each other.
| Claim | Basis |
|---|---|
| Outbound only, no inbound path | Confirmed by Palo Alto Networks on 2026-09-27. |
| The management plane hostnames | Published documentation. Names have changed across releases and published lists disagree, so this page directs you to read them off a running gateway rather than trusting the table. |
| The chart supplies the endpoints as environment values | Read from the environment of a running gateway container. |
| The image pull bypasses pod DNS and NetworkPolicy | Property of Kubernetes, confirmed by observation. |
| TLS inspection breaks three layers independently | All three observed. The provider-call case was reproduced deliberately. |
| Cloud service endpoints per platform | Derived from the identity and storage mechanisms each platform uses. Not individually validated against a deployment in every cloud. |
Endpoint names have changed across the product's integration into Strata Cloud Manager, and material from before that integration is still in circulation. Where a customer is raising a firewall change they cannot easily revise, confirm the current list with your account team and treat this page as the starting position rather than the final word.
Related guides
- AI Gateway Deployment — licensing, gateway registration, integrations, and guardrails.
- Hybrid Infrastructure — architecture, sizing, and per-platform prerequisites.
- EKS, AKS, and GKE — the Helm deployment procedure.
- ECS and Container Apps — the Terraform deployment procedure.