Network boundary
Hybrid deployment on AWS. Left: your data plane - corporate VPN into the private subnet, or optional Internet + NLB. Right: xpander Cloud. The PrivateLink sync carries cluster identity, health status, agent configuration, and the skill schema.
- Users reach your cluster two ways. Corp VPN is the company network path into the private subnet (chat, API, Agent Controller) - no public NLB required. See VPN / corporate network access. Internet is the optional public path through the Internet gateway and NLB.
- Your VPC spans two Availability Zones. Public subnets hold the NLB and NAT gateways. Private subnets hold EKS (AZ A) and data stores (AZ B).
- xpander Cloud - Xpander Chat, identity, agent registry, and the skills catalog. Agent configuration is authored here and synced into your cluster. AI Engineers sign in to Xpander Chat; that path is browser-to-Cloud, not cluster egress.
- PrivateLink - the Agent Controller reaches Cloud through the Endpoint svc and Deploy mgr. The connection carries the cluster’s identity (organization and environment IDs with the API key), health status, agent configuration, and the skill schema. Each is detailed in Data that leaves the on-prem installation.
- Your models and target APIs (the systems behind your skills) sit outside the VPC and are reached from it via NAT.
Supported PrivateLink regions:
us-west-2, us-west-1, eu-west-2, eu-central-1, ap-south-1. The service itself is in us-west-2 (pass --service-region us-west-2 when creating the VPC endpoint from another region).
Authentication flow
Sign-in is the one flow that talks to xpander Cloud directly - and it carries identity, not work.Sign-in to Xpander Chat. Identity goes to xpander Cloud; everything after sign-in is browser ↔ your cluster.
- The AI Engineer signs in at
chat.xpander.ai(SSO over OIDC on enterprise plans). - Xpander Chat tells the browser which self-hosted cluster to use.
- Chat, tasks, and results move between the browser and your cluster. Chat content and task data are not part of the sign-in exchange.
Agent runtime flow
The prompt path - what happens when a user sends a task to an agent - runs inside your cluster.Prompt flow. The task pipeline runs in your cluster; model and skill calls leave via NAT. xpander Cloud is not on this path.
- The user’s prompt enters through your ingress to the cluster’s Chat/API services, then the Agent Controller and the execution tier (the
agent-workerservice). New agents run on Claude Code, Codex or OpenCode on the executor fleet; their model calls go through the Agent Controller’s LLM proxy, the only component that reaches a model provider. - The execution tier calls your configured LLM providers; the Agent Controller’s skill relay calls target APIs. Both leave your VPC via NAT.
- Threads, task state, and results are written to your cluster’s PostgreSQL.
- Prompts, completions, and skill data are not sent to xpander Cloud.
Data that leaves the on-prem installation
Below is the Hybrid data-plane → xpander Cloud surface. It covers only fields documented in the Hybrid deployment, Deployment options, Air-gapped deployment, and access control pages, plus the public shapes those pages point at (agent list, skill schema, MCP attach payload).What does not leave
These stay in your cluster. They are not sent to xpander Cloud:
Model calls you configure (OpenAI, Anthropic, Bedrock, and so on) and skill calls to your systems leave your VPC toward those systems. They do not transit xpander Cloud.
How the cluster talks to Cloud
The Agent Controller is the only Hybrid component that reaches xpander Cloud. It authenticates withorganization_id + environment_id + the deployment-manager API key, reports heartbeats, and pulls agent, skill, and MCP configuration. Other pods (agent-worker, gateway, API, MCP, chat) do not call Cloud.
Sign-in to Xpander Chat is not cluster egress. Users sign in at chat.xpander.ai (SSO on enterprise plans). The cloud UI then tells the browser which self-hosted cluster to use; chat, tasks, and debugging traffic go client-to-cluster.
Settings > Locations in Xpander Chat also shows feature toggles for each connected cluster, called a location. Verify the Connection documents them. Their schema is not published, and they carry no runtime payloads.
1. Cluster identification
Sent on every control-plane request so the deployment manager can identify which cluster is calling.2. Health status (heartbeats)
The Agent Controller reports heartbeats so Settings > Locations in Xpander Chat can show Connection established and per-service status on the Components tab. The heartbeat JSON schema is not published. Public docs establish that heartbeats exist, are authenticated with the same organization / environment / API key, and that the console displays status per service. They do not document field names, intervals, or response bodies. Do not treat the following as a wire-format dump. It only restates what Xpander Chat is documented to show:3. Agent metadata (stored in Cloud, pulled by the cluster)
Agent definitions are authored in Xpander Chat on xpander Cloud and pulled so your cluster knows which agent to load. This is catalog metadata - not invocations. The public List Agents response is the documented shape of that catalog. Example (redacted; no customer content):
The cluster’s request that fetches this list carries the cluster identification headers only. Thread text, skill outputs, and knowledge-base hits are not part of this catalog.
4. Skill schema (pulled)
The skills catalog lives in Cloud. Your cluster pulls each skill operation as an LLM function-call definition - the operation’s name, description, and parameter schema - not the tokens used to call those APIs. Tokens stay in Kubernetes secrets and are injected by the skill relay at invocation time. A stored function-call definition (redacted; Jira list-issues):
Skill-level general parameters that carry preset values are stripped from this schema before it is stored, so the definition describes the call shape only. Credentials, connection tokens, and invocation results are never part of it.
5. MCP configuration (pulled)
MCP endpoints registered for the agent are pulled with the rest of the agent definition. Documented attach payloads from theAdd Agent Tool endpoint:
MCP invocations and skill results run from your cluster’s MCP service. They do not go to xpander Cloud.
6. Xpander Chat sign-in identity (browser → Cloud)
Hybrid sign-in is xpander Cloud identity (chat.xpander.ai), including SSO over OIDC on enterprise plans. That traffic is the user’s browser to Cloud, not the Agent Controller.
What Cloud holds for an Xpander Chat user (same created_by_details shape as agent metadata):
Self-hosted SDK calls use the Agent Controller API key issued at install time, not your xpander Cloud API key. See Using the SDK with Self-Hosted.
Related
Security Architecture
Permission model, credential isolation, encryption, and safety controls
Hybrid deployment Guide
Installer, PrivateLink, sizing, and data residency table
Air-Gapped Architecture
Every component in your environment, zero egress to xpander
Access Control
RBAC, SSO, API keys, and in-cluster audit logs

