Skip to main content
In the Hybrid edition, your data and agents run in your cluster and the control plane runs in xpander Cloud. Every task executes inside your VPC; the cluster initiates outbound TLS on port 443 to the control plane, and xpander Cloud never opens a connection into your environment. No inbound firewall rules are required for xpander. The design principles behind this page — permission model, credential isolation, encryption, safety controls — are on the Security Architecture page. The Air-Gapped edition removes the Cloud connection entirely.

Network boundary

AWS architecture of the xpander Hybrid edition. Left: users reach the cluster over a corporate VPN into the private subnet, or optionally through an Internet gateway and NLB. AZ A private subnet runs EKS, the Agent Controller, workers, and the AI Gateway. AZ B holds RDS, ElastiCache, and KMS. A VPC endpoint connects over PrivateLink to xpander Cloud. The deployment manager receives the cluster identity and health status and serves agent configuration and the connector tool schema. LLM providers and target APIs are reached from the VPC via NAT.

Hybrid edition 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 connector tool schema. Draw.io source: /images/security/hybrid-aws-architecture.drawio

How to read the diagram:
  • 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 — Workbench, identity, agent registry, and connector catalog. Agent configuration is authored here and synced into your cluster. AI Engineers sign in to Workbench; 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 connector tool schema. Each is detailed in Data that leaves the on-prem installation.
  • Your models and tools sit outside the VPC and are reached from it via NAT.
Two outbound paths to the control plane: 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.
Authentication flow. An AI Engineer signs in at xpander Cloud (Workbench, SSO). The console returns the cluster address. From then on chat, tasks, and results travel between the browser and the cluster's Chat and API services, backed by the cluster's PostgreSQL.

Workbench sign-in. Identity goes to xpander Cloud; everything after sign-in is browser ↔ your cluster.

  1. The AI Engineer signs in at chat.xpander.ai (SAML 2.0 SSO on enterprise plans).
  2. The console tells the browser which self-hosted cluster to use.
  3. 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.
Agent runtime flow. A user reaches Chat and API in the cluster, then the Agent Controller, Workers, and AI Gateway. Workers call LLM providers via NAT; the AI Gateway calls target APIs via NAT. Threads, tasks, and results are stored in the cluster's PostgreSQL. xpander Cloud is shown off to the side: not on this path, no prompts, no tool data.

Prompt flow. The task pipeline runs in your cluster; model and tool 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 Workers.
  • Workers call your configured LLM providers; the AI Gateway calls target APIs. Both leave your VPC via NAT.
  • Threads, task state, and results are written to your cluster’s PostgreSQL.
  • Prompts, completions, and tool 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, Self-Hosted overview, Air-Gapped, and access control pages, plus the public shapes those pages point at (agent list, connector tool 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 connector 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 with organization_id + environment_id + the deployment-manager API key, reports heartbeats, and pulls agent, connector, and MCP configuration. Other pods (workers, gateway, API, MCP, chat) do not call Cloud. Workbench login 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. Cloud Controls in the locations console (Chat, Streaming, Scheduler) are feature toggles for the location. Their on-the-wire schema is not published; they do not carry runtime payloads.

1. Cluster identification

Sent on every control-plane request so the deployment manager can identify which cluster is calling.
The API key value is never logged by the installer (typed secrets are placeholdered; Helm writes them to a mode-600 values file that is removed on exit).

2. Health status (heartbeats)

The Agent Controller reports heartbeats so the locations console 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 the console is documented to show:
Heartbeats do not include chat text, tool results, knowledge-base content, or credentials.

3. Agent metadata (stored in Cloud, pulled by the cluster)

Agent definitions are authored in the Workbench 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, tool outputs, and knowledge-base hits are not part of this catalog.

4. Connector tool schema (pulled)

The connector catalog lives in Cloud. Your cluster pulls each tool 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 AI Gateway at invocation time. A stored tool definition (redacted; Jira list-issues):
Connector-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 servers registered for the agent are pulled with the rest of the agent definition. Documented attach payloads from Add Agent Tool:
MCP invocations and tool results run from your cluster’s MCP service. They do not go to xpander Cloud.

6. Workbench login identity (browser → Cloud)

Hybrid sign-in is xpander Cloud identity (chat.xpander.ai), including SAML 2.0 SSO on enterprise plans. That traffic is the user’s browser to Cloud, not the Agent Controller. What Cloud holds for a Workbench user (same created_by_details shape as agent metadata):
After authentication, the UI directs the client to your cluster. Chat threads, Monitor data, and task results are fetched from your PostgreSQL — they do not pass through Cloud.
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.

Security Architecture

Permission model, credential isolation, encryption, and safety controls

Hybrid Edition Guide

Installer, PrivateLink, sizing, and data residency table

Air-Gapped Architecture

The full platform in your environment, zero egress to xpander

Access Control

RBAC, SSO, API keys, and in-cluster audit logs