Overview
We’re gradually rewriting parts of the Prisma AIRS AI Gateway in Rust, to make it faster and to keep memory use steadier under heavy traffic. The rewrite happens in stages: each release can move a few more components over. You don’t need to change anything. The API, headers, configs, control-plane connection, image name and the ports you expose all stay the same. Your applications and SDKs won’t notice any difference.Why we’re doing this
The gateway sits directly in the path of your LLM traffic, so how efficiently it handles request and response bodies directly affects your cost and latency. Rust handles that data more efficiently than the current Node.js runtime and makes better use of extra CPU cores.How we’re rolling it out
- A few components at a time. Each release may move a few more components to Rust. The rest keep running on the existing TypeScript code inside the same container.
What changes in 2.30.0
These are internal to the container and shouldn’t affect a standard deployment. We’re listing them so your platform team knows what to expect.1. A small Rust process now accepts incoming traffic
The container now starts a Rust process first. It listens on your configuredPORT (default
8787) as before and passes requests to the gateway’s TypeScript server, which now runs
on an internal port inside the same container.
A few things to check:
- Keep routing all traffic to
PORT. Your Service, ingress and load balancer should point atPORTonly, as they do today. If you use Kubernetes NetworkPolicies or security groups, there’s no reason to allow traffic to8799. - Don’t reuse
8799or9091. Don’t setPORTto either one, and make sure no sidecar in the same pod listens on them. - Your existing health checks and
/metricsscraping onPORTkeep working.
2. Use the image’s default entrypoint
The image’s built-in entrypoint chooses the right startup mode for your configuration, and we’ll keep improving it as more components move to Rust. Please don’t override the container’s entrypoint or command with your own startup command (for example,node build/start-server.js or node /app/entrypoint.cjs).
- Supported: Configure startup with environment variables:
PORT,MCP_PORT,SERVER_MODE(mcp,all,unified), TLS settings, and so on. - Avoid: Overriding
ENTRYPOINTorcommandin Docker, Compose, Helm or Kubernetes, or passing--portas a command-line argument. Set thePORTenvironment variable instead.
Automatic fallback to the TypeScript server
In a few setups, the entrypoint skips the Rust process and runs the TypeScript server directly, exactly as before 2.30.0. This currently happens when:- the gateway handles TLS itself (
TLS_KEY/TLS_CERTare set), - it runs in MCP-only mode (
SERVER_MODE=mcp), or --portis passed on the command line.

