Documentation Index
Fetch the complete documentation index at: https://docs.xpander.ai/llms.txt
Use this file to discover all available pages before exploring further.
Contact our team to unlock self-hosted locations on your account before starting.
Prerequisites
| Requirement | Minimum version |
|---|---|
| Kubernetes | 1.20 |
| Helm | 3.12 |
| Ingress controller | NGINX Ingress Controller or equivalent |
| Storage class | For persistent volumes (Redis, PostgreSQL) |
| TLS | cert-manager, or manually-managed certificates |
organizationId, environmentId, and deploymentManagerApiKey. Create one at app.xpander.ai/environments.
Architecture
The Helm chart deploys eight application services plus two data stores:| Component | Role |
|---|---|
| Agent Controller | Main API endpoint, orchestrates agent execution |
| AI Gateway | Routes LLM provider requests (OpenAI, Anthropic, etc.) |
| Agent Worker | Task execution runtime that invokes tools and processes steps |
| MCP | Model Context Protocol server for tool exposure |
| Chat | Web chat UI backed by Chainlit |
| Code Runner | Sandboxed environment for code execution tools |
| AWS Operator | Manages AWS-specific integrations |
| API | Public REST API surface |
| Redis | Cache and session state |
| PostgreSQL | Persistent data store for agents, threads, tasks, and memory |
dockerRegistry.enabled=false and metricsServer.enabled=false if your cluster already provides equivalents.
When you set a domain and enable ingress, the chart creates a hostname for each application service:
agent-controller.{domain}(SDK and REST calls)ai-gateway.{domain}(LLM provider routing)mcp.{domain},chat.{domain},agent-worker.{domain},code-runner.{domain},aws-operator.{domain},api.{domain}(internal traffic; you typically only call the first two)
Networking: outbound only
Your cluster makes outbound connections to Xpander. Xpander never initiates inbound connections to your cluster. Outbound destinations (HTTPS, port 443):Install with Helm
Add the Helm repository:ingress.enabled=true and a domain:
Production install with LLM keys
For production, add your LLM provider keys and use a values file for cert-manager, storage, and resource limits:Configuration reference
Required parameters
| Parameter | Description |
|---|---|
global.organizationId | Your Xpander organization ID |
global.environmentId | Your Xpander environment ID |
secrets.static.deploymentManagerApiKey | Deployment manager API key |
Common optional parameters
| Parameter | Default | Description |
|---|---|---|
domain | "" (ingress disabled) | Base domain for ingress hostnames |
ingress.enabled | false | Expose services via ingress |
ingress.tls.enabled | false | Enable TLS on ingress |
ingress.tls.source | self-signed | self-signed, cert-manager, or external |
agent-worker.env.AGENTS_OPENAI_API_KEY | "" | OpenAI API key |
agent-worker.env.ANTHROPIC_API_KEY | "" | Anthropic API key |
redis.storage.size | 8Gi | Redis PVC size |
redis.storage.storageClass | cluster default | Storage class for Redis PVC |
Verify the deployment
Check pod status:redis and postgres StatefulSet pods. With default settings the in-cluster docker-registry and metrics-server pods also run.
Test the public health endpoints through port-forwarding:
Connect the SDK to your deployment
Point the SDK at your Agent Controller hostname and use the Agent Controller API key (not your Xpander cloud key):Upgrade
Pull the latest chart and upgrade in place, reusing your existing values:Troubleshoot
Pods stuck in Pending
Pods stuck in Pending
Usually a storage class or PVC issue. Check PVC status:Confirm your cluster has a default storage class, or set
redis.storage.storageClass and the PostgreSQL equivalent explicitly.Ingress not accessible
Ingress not accessible
Check the ingress is created and pointing to services:Verify your DNS records point to the ingress controller’s external IP and that the controller itself is running (it usually lives in its own namespace, e.g.
ingress-nginx).Health checks failing
Health checks failing
Check component logs:The Agent Controller needs to reach Xpander’s outbound IPs on port 443. If egress is blocked, health checks fail.
LLM calls fail with missing API key
LLM calls fail with missing API key
Verify the keys are reaching the agent-worker pod:If missing, re-run the upgrade with
--set agent-worker.env.AGENTS_OPENAI_API_KEY=... or check that your secret is correctly mounted through envFromSecretKeys.Uninstall
What’s next
Monitor Runs
Trace execution, debug failures, and review AI performance
SDK Configuration
Full SDK configuration reference for self-hosted deployments.

