Where the data stays
By default every organization on the install shares the install’s Postgres database, and every row carries its organization. To give each organization its own database instead, set
onpremPerOrgDb: true (see the values below). Decide before you load content: the setting picks one database per organization and never splits one organization’s brain across two.
Hybrid. xpander cloud never connects to your database, Redis or object store. A brain call that starts in the cloud (Xpander Chat, an MCP client, a Platform page, an upload) is relayed to your install’s agent controller, which does the work and returns only the answer. Only usage counts go up. If your install does not answer, the agent is told the company knowledge is offline, and nothing falls back to cloud storage. Live sources are called from your network, so sources that accept only your IP addresses work.
Air-gapped. Nothing leaves your environment. Parsing, OCR, embeddings and ranking run on models baked into the images, so nothing is downloaded at run time. Answers are written by the model your install already uses, such as an in-network vLLM, Ollama or NIM endpoint. Usage goes to the local credits ledger when metering is on.
Turn it on
The Company Brain is off in the charts by default. Turning it on deploys brain-ingest, the service that parses, splits and embeds documents, and connects the agent controller to it.- Hybrid (xpander chart)
- Air-gapped (xpander-airgap chart)
type: local, originals are kept on a volume the chart creates and keeps on uninstall. That volume is ReadWriteOnce, so more than one replica needs accessMode: ReadWriteMany or type: s3; the chart refuses the combination otherwise. S3 credentials come from the pod identity or envFromSecret.Ranking model
A cross-encoder ranking model (bge-reranker-v2-m3) improves the order of results. It is optional. Pick onereranker.backend:
ingest: nothing to stage. The brain-ingest image already includes the model and serves it. Ranking waits at most 5 seconds per question, then answers without it.onnx(default): stagemodel.onnxandtokenizer.jsonon a volume and name the claim inreranker.modelVolume.existingClaim. It is mounted read-only on the agent controller.http: setreranker.urlto a ranking endpoint in your network.
Sizing
Each brain-ingest replica requests 1 vCPU and 4 GiB and may use up to 4 vCPU and 10 GiB. On CPU, one replica with 4 cores embeds about 1.2 sections per second, so a 300-page document takes around 15 minutes. That suits a steady trickle of uploads. For bulk loads, such as moving existing knowledge bases, add replicas or point embedding at a GPU server in your cluster that serves bge-m3. The brain-ingest image is about 5.2 GB and amd64 only. Budget registry space and the first pull on each node.Postgres with pgvector
The brain needs the pgvector extension, version 0.8 or newer. The charts’ bundled Postgres runs the pgvector build of the official image on the same major version as before (pgvector/pgvector:0.8.7-pg15-trixie on hybrid, 0.8.7-pg16-bookworm on air-gapped), so an upgrade swaps the image on the same volume and the Postgres pod restarts once.
- Before you upgrade, mirror the new image and take a restore point: a snapshot of the Postgres volume, or set
postgres.upgradeGuard.backup.pvcNameto an existing claim and the upgrade writes a full dump there first. - During the upgrade, a guard on the new image refuses to continue if the running server’s major version differs from the image’s.
- After every install and upgrade, a job creates the
vectorextension in every database and the installer prints one status line, for examplepgvector: ok vector=0.8.7 ok=3 failed=none. Adegradedorfailedline names the databases to look at.
CREATE EXTENSION vector once per database where your user cannot create extensions. Without pgvector, the Company Brain is unavailable and everything else keeps working.
Network
Live sources are reached from your install with each person’s own sign-in: Google APIs for Google Drive, Microsoft Graph for SharePoint and OneDrive, and Atlassian’s API for Confluence and Jira. On a hybrid install, allow those hosts in your egress policy to use them. Air-gapped installs cannot use live sources yet: they have no OAuth sign-in to Google, Microsoft or Atlassian, so Add source says so instead of offering a sign-in. Collections work fully, and withglobal.network.internetEgress: false importing a document from a URL is off as well.
