What each store holds
In-cluster is the default: chart-managed StatefulSets on your StorageClass, SSD-backed. Production sizing on Air-Gapped: xpander’s PostgreSQL 50 GiB, Supabase PostgreSQL 50 GiB, Supabase Storage 50 GiB and up, MongoDB 20 GiB, Redis 8 GiB, plus about 50 GiB for the registry mirror. Set
--storage-class <name> if the cluster default is not the one you want.
What is stored where
Supabase’s PostgreSQL (database postgres)
xpander’s PostgreSQL 16 (database xpander)
Isolation between agents is a schema per agent in this one database.
MongoDB
Looking inside from the cluster
The passwords come from thexpander-generated-keys secret. Nothing below prints one.
mongosh prompt:
Bringing your own PostgreSQL and Redis
Installer flags or values, with the passwords passed as--set so they never land in Git:
-
PostgreSQL: create the role and database before the install. Keep
CREATEDBon the role. Agent data lands as one schema per agent (ag_<agent id>) inside thexpanderdatabase.keygen.overrides.POSTGRES_PASSWORDis how xpander learns the password you set. - Valkey or MemoryDB: the endpoint must ship the RediSearch commands, or knowledge bases accept writes and return nothing. On MemoryDB that is Valkey 7.3 on the parameter group with the search module.
-
Probes: before installing, the installer launches a probe pod inside your namespace and runs
pg_isreadyandredis-cli pingfrom where xpander will connect. A failed probe is a decision point, not an abort.

