Always on
Agents send every model call through the gateway, and it can’t be turned off: since Hybrid chart 0.22.5 and Air-Gapped chart 0.17.2, the chart ignoresllm-gw.enabled. Agents use the in-cluster service at http://llm-gw:4000 on Air-Gapped and http://xpander-llm-gw:4000 on Hybrid with the release name xpander (release names), shown as Base URL on the Models page while no host is published.
Preflight refuses an install with no provider for model calls: an organization default, a gateway provider, or a per-provider in-cluster endpoint must exist. Every provider your agents use needs a key, in Models or on the install (secrets.static), or calls are refused naming the missing key.
Publish a host for desktops, apps and SDKs
Set these values and upgrade the release:ingress.tls.secretName. Only the model paths are published (/v1/, /anthropic/, /gemini/, /openai/). On Air-Gapped, people point their coding tools at it (AI models & keys). On Hybrid their coding tools connect to xpander cloud, so the host is only for your own apps and SDKs.
A coding session can hold one response open for many minutes. The chart sets a 1500-second idle timeout on the ingress. Set at least 1500 seconds on any load balancer in front of it (on an AWS Application Load Balancer, idle_timeout.timeout_seconds=1500).
Gateway chart values
Gateway chart values
While no gateway pod is ready, a fallback pod (
llm-gw-unavailable on Air-Gapped, xpander-llm-gw-unavailable on Hybrid) answers with a JSON 503 that coding tools and SDKs retry.Upgrading an existing install
Every upgrade starts the gateway:install.sh upgrade and any helm upgrade, including --reuse-values. A leftover llm-gw.enabled: false is ignored. If the gateway was off, the upgrade starts it and restarts agent-controller and api once. Before you upgrade:
- Mirror the image, if you mirror images. On Air-Gapped, run the current
image_sync.sh --manifest-outfirst. It mirrors and pins thellm-gwandtool-repo-seedimages.--icon-pack-tagno longer exists, so remove it from your scripts. If the image is not pinned, the render stops and names the value to set. - Open the gateway’s network paths.
- Give every provider your agents use a key. Custom OpenAI-compatible endpoints keep working.
Check it
1
Check the AI Gateway pods
llm-gw pods (one on a single-node install.sh cluster), each 1/1 and Running.2
Check the Agent Controller
3
Check the product
The Locations tab of Platform > Agents > Runtime shows the installation as Connected. A model call appears in the task’s usage and in Platform > AI governance > Logs.
Size, keys and network
The gateway runs 2 to 20 servers scaled on CPU (one on a single-nodeinstall.sh cluster), each 0.5 to 1 vCPU and 1 to 4 GiB. It has no database of its own: request records go to your install’s PostgreSQL, so size that for request volume and retention (Sizing). No provider key is set on the gateway; keys stay in your vault or in secrets.static and are added to each call.
The gateway's own Secrets
The gateway's own Secrets
Never delete or rotate the content key: saved text can’t be read after it changes. On Hybrid, both generated Secrets survive upgrade and uninstall. With ArgoCD, set both
existingSecret values or have ArgoCD ignore the Secrets’ /data, as in examples/argocd-application.yaml.Network
Network
The gateway reaches your model providers or OpenAI-compatible endpoints, plus the xpander services in your cluster and Redis. With the chart’s network policy on, it accepts traffic only on its serving port, can never reach the cloud metadata address, and egresses only to DNS, agent-controller, Redis and public
https. List anything else in llm-gw.networkPolicy:Behind an outbound proxy, set
HTTPS_PROXY and NO_PROXY in llm-gw.env. The gateway does not read global.env. A custom certificate authority is trusted as for the other services (Air-Gapped). A sealed install (no internet egress) uses only endpoints in your network, with Bring your own key as the only license model. Log destinations only need to be reachable from your cluster.Hybrid specifics
- Settings (policies, models, keys, budgets) are managed in the Platform and reach your install within seconds.
- Agents on your install call your install’s gateway, on your stored keys and your install’s credentials, never xpander’s keys.
- People’s coding tools connect to xpander cloud at
https://llm-gw.xpander.aiwith their personal xpander key (AI models & keys). They run on the person’s own Claude plan or a key you stored in xpander, never on xpander’s keys or your install’s credentials, and their prompt and response text is never kept in xpander cloud. A provider with no key stored in xpander shows No key for this provider is stored in xpander, so tools on your computer can’t use these models. Agents in your own environment may still use them. - Records of agents on your install stay there and show in the Platform when your browser can reach your environment. Totals for billing go with billing events. Records from people’s coding tools live in xpander cloud and show in Logs.
- Budgets: see Budgets on self-hosted installs.
Next steps
Add provider keys
A key for every provider.
Run a local model air-gapped
Local LLM inference.
Plan the install's size
PostgreSQL for volume and retention.

